1. 프로그램 작성
2. 프로그래밍 언어
3. 고급 언어 번역 과정
4. 프로그램의 실행
5. C 언어의 소개
6. C 언어의 컴파일 및 실행
프로그램 작성
컴퓨터에서 원하는 문제를 해결하기 위해서는 프로그래밍 언어를 사용하여 프로그램을 작성한 다음 이를 실행시켜 문제 해결에 필요한 적절한 데이터를 프로그램에 제공하여 문제를 해결할 수 있다. 컴퓨터 프로그램은 일련의 프로그래밍 언어를 사용하여 작업의 처리 순서를 나열한 명령어 집합이다. 따라서 해결하고자 하는 문제(작업)를 처리하기 위해서는 프로그램을 작성하기 전에 문제를 어떤 방법으로 해결할 것인지 모든 경우의 수를 고려하여 문제 해결 절차를 생각해 보아야 한다. 프로그램을 작성하기 전에 기술한 문제 해결 절차를 알고리즘(algorithm)이라 하며, 알고리즘이 완성되면 이제 문제 해결을 위해서 필요한 데이터를 컴퓨터에서 어떤 식으로 표현할 것인지 자료 구조(data structure)를 고려한 다음 알고리즘과 자료 구조에 따라 프로그램을 작성한다.
만약 프로그램을 작성하기 전에 알고리즘과 자료 구조를 고려하지 않고 마구잡이 식으로 프로그램을 작성한다면 프로그램을 작성하는 과정 중에 많은 시행 착오와 구문 오류(syntax error)를 범하게 될 것이며, 설령 프로그램을 작성한다고 할지라도 프로그램 내부에 존재하는 논리 에러를 수정하는데 많은 시간을 소모해야 할 것이다. 특히 논리 에러는 주어진 문제에서 발생할 수 있는 모든 경우의 수를 고려하지 않으면 논리 에러를 찾아내는데 노력과 시간이 엄청나게 필요하여 최악의 경우 프로그램 설계의 잘못으로 인하여 전체 프로그램 작성을 처음부터 다시 해야 하는 경우가 발생한다.
따라서 문제를 해결하기 위한 프로그램을 작성할 때 어떤 아이디어가 떠오르면 곧바로 프로그램 입력 작업을 시작하는 것이 아니라 주어진 문제에 대한 알고리즘과 자료 구조를 깊이 생각한 다음에 프로그램을 종이에 옮기고 실제 컴퓨터에서 프로그램을 실행하는 것처럼 예제 데이터를 입력하여 각 명령어의 실행 결과를 확인해 가면서 하나씩 추적해 나가야 한다. 그러다가 어떤 문제점을 발견하면 곧바로 메모하여 문제점의 해결책에 대해서 다시 깊게 생각해 보아야 한다.
프로그래밍 언어
컴퓨터 프로그램을 작성하기 위해서 사용하는 언어를 프로그래밍 언어라 한다. 이러한 프로그래밍 언어는 크게 세 종류로 나누어지는데 이는 기계어(machine language), 어셈블리 언어(assembly language), 고급 언어(high-level language)이다. 고급언어는 가장 일반적으로 사용하는 컴퓨터 언어로서 이는 기계어나 어셈블리 언어에 비하여 훨씬 배우기가 쉽고 사용하기 편리할 뿐만 아니라 서로 다른 컴퓨터간의 호환성이 뛰어나 한 컴퓨터에서 작성한 프로그램을 다른 컴퓨터에서 사용할 때 프로그램 변경 없이 바로 사용할 수 있다. 그러나 기계어나 어셈블리 언어는 컴퓨터 기종 마다 약간씩 다르기 때문에 동일 컴퓨터가 아니면 한 컴퓨터에서 작성한 프로그램은 다른 컴퓨터에서 사용할 수 없다.
현재 알려진 고급 언어는 수백 종류가 넘는다. 물론 사용의 선호도에 따라 이제는 거의 사용하지 않고 사장된 언어도 있지만 현재까지 가장 널리 사용하고 있는 고급 언어는 BASIC, COBOL, FORTRAN, PASCAL, C, PROLOG, LISP, Ada, C++, Java 등 다양한 언어들이 있다. 고급 언어가 갖는 중요한 특징으로는 언어 자체가 인간의 언어인 자연어(특히 영어)와 유사하고, 기억장치에 저장된 데이터를 참조할 때 기억장치 셀의 주소를 사용하는 것이 아니라 변수를 사용한다는 것이다. 또 산술연산을 실행할 때 주소를 사용하는 것이 아니라 변수를 사용한다는 것이다. 또 산술연산을 실행할 때 산술연산자 역시 수학의 산술 기호와 같아서 연산의 의미를 쉽게 파악할 수 있다. 예를 들면, 다음과 같은 산술 연산을 고급 언어를 이용하여 표현해보자.
C = A + B;
위의 산술연산을 이제 가상의 어셈블리 언어로 표현해 보자. 어셈블리 언어는 데이터에 실행될 연산자를 기술해야 한다. 이는 다음과 같다.
LOAD A
ADDB
STOREC
어셈블리 언어는 컴퓨터의 기계어와 1:1로 대응하는 기호 언어이다. 따라서 기계어에 비하여 보다 사용자가 이해하기 쉽게 구성되어 있으나 고급 언어에 비하면 아직도 이해하는데 상당한 어려움이 따른다. 위의 산술연산을 가상의 기계어로 표현하면 다음과 같다.
0010 0000 0000 0100
0100000000000101
0011000000000110
기계어는 컴퓨터 고유의 언어이다. 따라서 그 어떤 언어보다도 빠르게 동작한다. 그러나 사용자가 이해하는데 있어서 아주 어려울 뿐만 아니라 프로그램 상에 오류가 존재한다면 이의 수정이란 여간 어려운 것이 아니다. 컴퓨터는 기계어 프로그램만 실행을 할 수 있다. 따라서 고급 언어는 일단 기계어로 번역되어야 한다. 이 때 사용하는 번역기(translator)를 컴파일러(compiler)라는 시스템 소프트웨어를 사용한다.
댓글