본문 바로가기
컴퓨터&네트워크

프로그래밍 언어

by 파란하랑 2024. 8. 11.

프로그래밍-언어
프로그래밍-언어

 

프로그래밍 언어와 프로그래밍 변화

 

기계어는 0과 1로 구성되어 있기 때문에 프로그램을 작성하려면 컴퓨터의 내부 구조와 원리를 잘 알아야 한다. 그뿐만 아니라, 이러한 기계어로 프로그램을 작성하려면 시간이 많이 소요된다. 이런 문제를 해결하기 위해서 기계어보다 프로그램을 편하게 하기 위해서 프로그래밍 언어가 개발되었다. 보통의 프로그래밍 언어는 기계 언어보다는 고급 언어로서 제약이 있긴 하나 인간이 이해하고 사용하는데 훨씬 편리하도록 개발되었다.

 

이러한 고급 프로그래밍 언어로 개발한 프로그램의 결과는 파일로 저장되고 원시 코드라고 한다. 원시 코드로 프로그램을 작성하였더라도 컴퓨터는 이 코드의 프로그램을 이해하지 못하므로 직접 실행할 수는 없다. 실행하기 전, 이 프로그램을 컴퓨터가 이해할 수 있는 0과 1로 구성된 기계 언어로 번역하는 과정이 필요하다.

 

이와 같이 원시 코드를 번역하는 작업은 크게 두 종류의 프로그램에 의하여 이뤄지는데 하나는 컴파일러이고 또 하나는 인터프리터이다. 컴파일러는 원시 코드를 기계 언어로 번역하여 실행할 수 있는 파일을 만든다. 실행가능 파일의 내용을 목적 코드라 하는데, 이 코드는 다른 컴퓨터에 복사하여 실행할 수 있다. 즉, 한번 컴파일한 프로그램은 혼자 실행할 수 있는 파일이 되며 다시 컴파일할 필요가 없다.

 

인터프리터도 마찬가지로 원시 코드를 기계 코드로 번역한다. 그러나 실행가능 파일이 만들어지기 전에 번역한 코드의 일부를 즉시 실행한다. 그러므로 인터프리터에서 번역한 코드는 번역하면서 그때마다 실행하기 때문에 컴파일한 코드보다는 실행 속도가 늦다.

 

프로그래밍이란 컴퓨터에 지시 사항을 전달하는 방법이다. 이러한 지시 사항을 만들기 위해서 프로그램 개발자는 원시 코드를 만들기 위하여 프로그래밍 언어를 사용한다. 그 후에 원시 코드를 컴파일러가 실행하도록 기계 코드로 번역한다.

 

프로그래밍 언어는 각각 형식은 상이하긴 하지만 기본적인 특성은 대동소이하다. 어떤 구조와 순서를 가지며, 특별한 심볼을 사용하고, 언어에 따라서는 마침표나 세미콜론 등을 사용한다. 이러한 규칙을 프로그래밍 언어의 신택스(문법구조)라고 한다.

 

컴퓨터 시스템에서는 이진수를 사용하기에 하드웨어에 직접 영향을 주는 소프트웨어 명령은 반드시 이진수 체계로 작성될 필요가 있다. 이러한 0과 1로 구성된 코드는 컴퓨터 하드웨어 언어를 나타내어 기계 코드 혹은 기계 언어라고 한다. 컴퓨터의 구조가 다르거나 다른 종류의 컴퓨터 하드웨어는 다른 기계어를 사용할 수 있다. 예를 들어, IBM PC 컴퓨터, Intel PC, 워크스테이션은 서로 다른 기계어를 사용한다.

 

어셈블리어 언어는 기계어보다는 사람이 이해하기 쉽도록 심볼로 프로그램을 구성한다. 따라서 이 심볼로 표현한 프로그램을 기계 언어로 번역하여야만 컴퓨터가 프로그램을 이해할 수 있다. 어셈블리어로 작성한 코드는 어셈블러라는 번역기에 의하여 목적 코드로 번역된다.

 

이런 기계어나 어셈블리어는 사람이 프로그래밍을 하기에 다소 복잡하고 어렵다. 따라서 인간에게 좀 더 편리하고 이해하기 쉽도록 인간이 사용하는 언어와 비슷한 형태로 만든 프로그래밍 언어를 고급언어라고 부른다. 3세대 언어로는 FORTAN, COBOL, BASIC, Pascl 등 외에도 C, C++, Java 등이 포함된다.

 

C는 시스템 프로그램을 개발하기 좋은 언어로서 어셈블리 코드와 연동을 통한 효율적인 목적 코드를 생성하는데 효과적이다. 오늘날 널리 사용하는 시스템 프로그래밍 언어이며 나중에 객체 지향 프로그래밍 언어인  C++로 발전했다.

 

Java는 크로스 플랫폼을 만드는 객체 지향 프로그래밍 환경이다. 인터넷이 발전하면서 자바가 널리 보급되었고, 웹에서 자바를 사용하여 프로그래밍할 수 있는 환경이 갖춰졌다. 자바 코드를 생성하려면 애플릿을 작성하고 나서 바이트 코드로 컴파일한다. 자바 애플릿을 실행하려면, 인터넷에서 바이트 코드를 액세스한다. 그 후, 자바 가성 기계를 사용하면, PC는 바이트 코드를 지정한 컴퓨터의 기계어로 바꾼다.

'컴퓨터&네트워크' 카테고리의 다른 글

컴퓨터 하드웨어  (0) 2024.08.12
다양한 정보통신망  (0) 2024.08.12
운영 체제의 진화 과정-2  (0) 2024.08.11
운영체제의 진화 과정-1  (0) 2024.08.11
운영체제의 정의  (0) 2024.08.11