개발 공부

프로그래밍 언어, 컴파일 언어와 동적 언어 본문

CS 및 필요 지식

프로그래밍 언어, 컴파일 언어와 동적 언어

hyecozy 2022. 8. 2. 23:17

프로그램 : 명령과 순서를 쓴 문서라고 할 수 있다.

 

사용자가 프로그램을 실행하라고 명령하면

컴퓨터가 그 프로그램의 문서를 읽어야 하는데, 컴퓨터는 자연어 그대로 이해하기 어려움

그래서 문서를 0과 1의 형태로 바꿔서 실행한다.

 

이때 컴퓨터가 이해하는 언어를 기계어라고 하며 01001101 이렇게 생김.

기계어는 인간이 이해하기에는 어려운 구조를 가지고 있음.

 

인간이 이해하기 쉬운 언어에는 뭐가 있는가 하면,

1. 저수준 언어 (어셈블리 언어 : 사칙연산, 값의 비교가 가능한 수준)

2. 고수준 언어 (C, C++, C#, JAVA, PYTHON, GO...)

가 있다.

 

인간은 위의 언어를 통해 컴퓨터가 이해할 수 있는 기계어로 변환한다.

 

 

저수준의 언어는 컴퓨터가 비교적 쉽게 이해하는 언어기 때문에 변환과정이 짧다.

ex. ADD라는 프로그램에 OP코드 설정을 해두는데 그 코드를 컴퓨터가 빨리 알아볼 수 있게 기계어로 설정.

그렇기 때문에 기계어 <-> 어셈블리어 사이의 변환이 가능하다

 

고수준 언어는 기계어로 변환하기 위한 변환기가 필요한데

이 변환기를 컴파일러라고 부른다.

이 컴파일러가 있기 때문에 고수준 언어를 기계어로 바꾸는 게 쉽지만

기계어를 고급 언어로 바꾸는 건 어렵다.

 

정리 : 프로그램이라고 하는 건, 실행파일(.exe파일)인데

이 프로그램이 실행되기 위해선 기계어로 바뀌어야 함.

프로그래머가 코딩을 하면 이 코딩한 걸 변환 과정, 즉 빌드 과정을 거쳐야

기계어가 됨

 

 

여기서 고급 언어(고수준 언어)를 다시 나눠보면

1. 컴파일 언어 ex. C, C++, GO : 코딩 -> 빌드 -> 기계어

➡️프로그래머가 코딩을 하면 빌드라는 과정을 거쳐서 문서를 기계어로 변환시켜 줌

결과로 나온 실행 파일이 기계어임.

한번에 전부 변환을 하기에 속도가 빠름!

 

2. 동적 언어 ex. JAVA, C#, PYTHON : 코딩 -> 빌드(JAVA와 C#의 경우에만) -> 중간 상태

➡️동적 언어는 기계어가 나오지 않음. 중간 상태가 나오면

프로그램 동작할 때 필요한 부분만 컴파일러가 기계어로 보여줌

그때 그때 변환하기 때문에 속도가 느린 편

 

 

기존에 있던 언어는 컴파일 언어인데, 속도가 빠른 컴파일 언어에는 문제점이 하나 있었다.

플랫폼별로 다른 변환이 필요하다는 것.

CPU 회사별로 OS 회사별로 변환 과정이 다르기 때문에

실행 파일을 따로 만들어줘야 했음.

(같은 CPU 회사의 것을 선택해서 쭉 쓴다 해도 버전별로 또 다르게 봐야 했기 때문에

번거로움이 있었다)

 

동적 언어의 탄생 배경은 이러한 컴파일 언어의 불편함으로부터 나왔음.

프로그램 언어 문서를 만들어 놓으면 플랫폼에 맞게 실행 시켜준다.

 

 

참고 : Tucker님의 기초 프로그래밍 강의 

'CS 및 필요 지식' 카테고리의 다른 글

Build란? (+Deploy, Compile)  (0) 2022.12.15
HTTP 특성  (0) 2022.10.26
컴퓨터의 원리  (0) 2022.08.02
트랜지스터 - 논리 소자 - 컴퓨터  (0) 2022.08.01
운영체제  (0) 2022.05.29
Comments