'프로그래밍 언어'에 해당되는 글 3건

  1. 2007/04/13 언어와 컴파일러
  2. 2007/04/13 프로그래밍 언어의 분류
  3. 2007/04/13 프로그램과 프로그래밍 언어, 그리고 프로그래머
사람들은 종종 프로그래밍 언어와 컴파일러를 혼동하곤 한다. 언어와 컴파일러는 전혀 다른 존재임에도 불구하고, 이름이 비슷하기 때문에 혼동하기 쉬운 것이다. 언어는 말 그대로 언어이며, 컴파일러는 이 언어를 기계어로 번역해 주는 역할(컴파일)을 담당하는 프로그램이다.

C를 기준으로 설명하겠다.
C는 현재 가장 많이 쓰이고 있는 '언어'이다. C언어로 작성된 프로그램을 기계어로 번역시켜주는 컴파일러의 종류는 여러 가지가 있다. 하나의 언어에도 관련된 컴파일러가 여러 개 존재할 수 있다는 것이다. 가장 많이 쓰이는 컴파일러는 Microsoft 社의 Visual C++이다.
조금 더 깊게 파고 들어가보자. 컴파일러는 번역만을 담당한다. 하지만 MS의 Visual C++은 소스 작성/편집 기능, 프로젝트 관리 기능, 디버그 기능, 컴파일과 함께 링크를 시켜주는 등 다양한 프로그래밍에 필요한 기능을 포함하고 있다. 이와 같이 순수한 컴파일 이외에 프로그래밍에 필요한 기능을 포함하는 것을 '통합 개발 환경'(IDE : Integrated Development Environment)라고 한다. 실제로 Visual C++에서 컴파일을 담당하는 것은 cl.exe라고 하는 프로그램이며, 이 프로그램을 기반으로 하여 VC++이라고 하는 IDE를 만들게 된 것이다.
위에서 말한 '컴파일러', '통합 개발 환경'은 모두 언어가 아니며 프로그램 작성에 도움을 주고 기계어로 번역해 주는 '도구'일 뿐이다.

마지막으로 C를 예로 들어 정리해보자.
언어 : C언어
컴파일러 겸 IDE : Microsoft Visual C++ (MS VC++)


참고로, MS VC++은 C언어 뿐만 아니라 C++의 컴파일도 지원한다.
C언어와 C++은 크게 다르지 않지만, 몇 가지 차이점이 있다.


2008년 1월 19일 이후 작성된 모든 글에 대해서 퍼가는 것을 금지합니다.
퍼가고자 하시는 분은 링크를 달아 주시기 바랍니다.
Posted by Harry
일반적으로 프로그래밍 언어는 고급 언어저급 언어로 분류한다.
이 때, 고급이라는 말과 저급이라는 말은 프로그래밍 언어의 좋고 나쁨을 따지는 것이 아니고, 얼마나 인간에게 가까운가, 혹은 컴퓨터에게 가까운가를 기준으로 정하는 것이다. 고급 언어와 저급 언어를 나누는 절대적인 기준은 없으며, 다만 상대적으로 고급, 저급을 따질 수 있다.

고급 언어 인간이 쓰는 언어에 가까운 언어를 말한다. 문법이 영어 문법과 매우 흡사하며, 배우기 쉽다. 특정 하드웨어에 구속받지 않는다. 베이직 언어가 대표적인 고급 언어 중 하나이다.

저급 언어는 인간이 쓰기는 어렵지만 컴퓨터가 쓰기 쉽게 되어있는 언어이다. 이진 코드 자체의 문법이 드러나는 경우가 많으며 하드웨어에 대한 직접적인 접근이 가능하여 드라이버 제작 등에 쓰이기도 한다. 배우기는 어렵지만 하드웨어에 직접접근이 가능하여 다양한 기능의 구현이 가능하다. 기계어와 어셈블리어 등이 이에 속한다.

프로그래밍 언어로는 C언어, 포트란, 파스칼, 알골, 베이직, 어셈블리 등이 있는데, 이들을 둘로 쪼개어 고급 언어와 저급 언어로 나누는 것은 힘들다. 하지만 서로간의 상대적인 고급/저급은 따질 수 있다. 가장 보편적으로 쓰이는 프로그래밍 언어인 C 언어는 배우기 어렵지 않으면서도 하드웨어에 어느 정도까지 접근이 가능하기 때문에 고급 언어와 저급 언어의 중간 정도 되는 언어라고 볼 수 있다.


2008년 1월 19일 이후 작성된 모든 글에 대해서 퍼가는 것을 금지합니다.
퍼가고자 하시는 분은 링크를 달아 주시기 바랍니다.
Posted by Harry
컴퓨터는 전류의 '흐름'과 '흐르지 않음'으로 모든 연산을 수행한다. '흐름'을 1이라 놓고, '흐르지 않음'을 0이라 놓았을 때 컴퓨터가 수행하는 모든 연산은 0과 1만을 사용하는 2진수로 나타내어질 수 있게 된다. 하지만 원래 컴퓨터는 인간의 일을 대신 하기 위해 만들어 진 것으로서, 인간의 명령을 받아들여야 한다. 하지만 인간이 2진수로 명령을 내리기란 매우 힘든 작업이다.

'프로그램'이란, 컴퓨터에게 내리는 명령의 집합이다. 프로그램 역시 컴퓨터에게 명령을 내려야 하므로 2진수로 작성되어있다. 이를 Binary Code(이진 코드)라고 한다. 컴퓨터는 이러한 이진 코드만을 이해할 수 있으며, 따라서 인간은 이진 코드로 프로그램을 작성할 필요가 있다. 하지만 아까 말했듯이, 이진 코드는 인간이 이해하기가 매우 힘들기 때문에 이진 코드를 이용하여 프로그램을 작성하는 것은 불가능에 가깝다.

그렇게 해서 생겨난 것이 프로그래밍 언어이다. 프로그래밍 언어란, 이름에서 알 수 있듯이, 일종의 언어이다. 영어나 중국어, 일본어, 스페인어와 같이 분명히 언어의 일종이다. 그렇다면 과연 언제 쓰이는 언어일까? 프로그래밍 언어는 컴퓨터가 쓰는 언어는 아니다. 아까 말했다시피, 컴퓨터는 오직 이진 코드만을 이해할 수 있다. 이진 코드가 아닌 프로그래밍 언어는 컴퓨터는 이해하지 못한다. 하지만 프로그래밍 언어는 인간과 컴퓨터를 연결해주는 역할을 한다. 결과적으로는, 컴퓨터와 인간 모두 이 언어를 쓰게 되고, 의사소통이 가능해진다.

분명 컴퓨터는 프로그래밍 언어를 이해하지 못한다고 했다. 하지만 컴퓨터가 이 언어를 쓴다고 했다. 모순인 듯 하지만 답은 어렵지 않다. 중간에 번역을 해 주면 된다. 프로그래밍 언어에서 이진 코드로 번역을 해 주는 작업을 '컴파일'이라고 한다. 또한 컴파일을 수행해 주는 프로그램을 '컴파일러'라고 한다. 즉, 컴퓨터는 컴파일러라는 번역기의 도움을 받아 프로그래밍 언어를 이해할 수 있게 되는 것이다.

분명 프로그래밍 언어를 이진 코드로 번역해주는 번역기는 있다. 하지만 애석하게도 인간의 언어를 프로그래밍 언어로 번역시켜주는 번역기는 없다. 인간의 언어가 너무 고차원인 것일까. 따로 번역기를 가지고 있지 않은 우리 인간은 직접 프로그래밍 언어를 이용하여 프로그램을 작성해야 된다. 이와 같이 프로그래밍 언어를 이용하여 프로그램을 작성하는 사람들을 '프로그래머'라고 부른다.

요약하자면, 인간은 직접 이진 코드로 된 프로그램을 작성할 수 없기에 보다 쉬운 프로그래밍 언어로 프로그램을 작성한다. 이렇게 작성된 프로그램을 번역기인 컴파일러에게 넘겨주면 컴파일러는 프로그래밍 언어를 이진 코드로 번역하여준다. 이와 같이 컴파일러에 의해 최종 번역된 프로그램만을 컴퓨터는 이해할 수 있다. 또한 이렇게 프로그램을 작성하는 사람들을 프로그래머라 부른다.


2008년 1월 19일 이후 작성된 모든 글에 대해서 퍼가는 것을 금지합니다.
퍼가고자 하시는 분은 링크를 달아 주시기 바랍니다.
Posted by Harry