달려라 태깅이 2023. 8. 14. 20:37

 

컴퓨터는 소스코드를 직독직해하지 못한다. 우리가 사용하는 자바 같은 언어들은 개발자(사람)가 읽고 쓰기 편한 고급언어이고 컴퓨터가 이해하는 언어는 저급언어이기 때문이다. 고급언어는 개발 편의성에 중점을 두고, 저급언어는 성능과 하드웨어에 중점을 둔다.

 

 

- 고급언어 : 개발자가 읽고 쓰기 편한 언어

높은 수준의 추상화를 제공하므로 개발자가 기계코드나 하드웨어의 세부사항을 걱정할 필요가 없다. 대부분의 고급언어는 인터프리터 또는 컴파일러에 의해 기계코드로 변역된다. (웹개발, 응용프로그램 개발 등에서 사용)

 

- 저급언어 : 컴퓨터가 이해하고 실행하기 위해 만들어진 언어 (명령어)

낮은 수준의 추상화를 제공하며, 개발자는 하드웨어와 밀접하게 작업해야 한다. 어셈블리 언어는 어셉블러에 의해 기계코드로 변환되며 기계어는 CPU에서 직접 실행될 수 있다. (시스템프로그래밍, 운영체제 개발 등에서 주로 사용)

 

중간언어
C와 C++ 같은 언어는 고급언어와 저급언어 사이에 위치할 수 있다. 이들은 고급언어의 편의성과 저급언어의 세밀한 제어능력을 동시에 제공한다.

 

 


 

[ 저급언어 ] 

 

- 기계어

: 0과 1의 이진수로 표현된 언어로 간혹 십육진수(0~9, A~F) 로 표현하기도 한다.

 

- 어셈블리어

: 0과 1로 이뤄진 기계어를 읽기편한 형태로 번역한 저급언어로, 컴퓨터를 동작시키는 명령어이다. 기계어와 달리 소스코드에 직접적으로 명시하면서 개발하기도 한다.

 

 

 


 

[ 고급언어 ]  

 

저급언어로 변환되는 2가지 방식 ( 컴파일, 인터프리트 )

소스코드  --->  저급언어(목적코드)

 

1. 컴파일러를 이용해 컴파일 하는 방식

: 컴파일러를 이용해 변환하는데, 이때 컴파일러는 소스코드 컴파일 중 오류가 발생하면 소스코드 전체가 실행되지 않는다.

 

2. 인터프리터라는 특수 프로그램으로 변환하는 방식

: 인터프리터에 의해 한줄씩 변환이 실행되며, 소스코드 전체가 저급언어로 변환되기까지 기다릴 필요가 없다. 또 인터프리트 언어는 소스코드 인터프리트 중 오류가 발생하면 오류 발생 전까지의 코드는 실행한다는 특징이 있다.

 

 

* 컴파일 언어는 CPU, 컴파일러의 종류에 따라 변환된 저급언어의 형태가 달라진다. 또한 컴파일언어와 인터프리트 언어가 '고급언어 -> 저급언어' 변환 방식의 전부는 아니며 대표적인 방식 중 하나다, 정도로 이해하는 것이 좋다.