프로그래밍 언어는 크게 2가지로 나뉜다.
1. 저급언어
2. 고급언어
저급언어
저급언어는 '기계 중심의 언어'이다. 쉽게 말해 기계가 이해하는 언어이다.
컴퓨터는 전기 신호인 두 가지 상태 값이 있다. => 꺼짐(0) 켜짐(1)
이처럼 0과 1 두 가지 숫자로 이루어진 이진수로 소통한다.
하지만 인간이 이 두 가지 숫자로만 프로그래밍을 하는 것은 매우 어렵다.
따라서 인간이 이해할 수 있는 기호로 기계어와 1:1로 대응되는 기호인 어셈블리어가 등장했다.
이러한 언어들을 기계가 이해할 수 있게 변환해주는 과정이 추가로 필요한데, 어셈블리어를 기계어로 바꾸는 과정을 어셈블이라 한다.
고급언어
고급언어는 '사람 중심의 언어'이다. 쉽게 말해 사람이 사용하는 언어이다.
0과 1이 아닌, 인간의 언어와 유사하여 이해하기 쉬운 문법으로 코드를 작성할 수 있다.
인간이 작성한 코드를 기계어로 번역하는 과정을 컴파일이라고 하며, 이를 수행하는 도구를 컴파일러라고 한다.
대표적으로 Python, JAVA, Kotlin, C, C++ 등이 있다.
고급언어를 사용하면 하드웨어의 구조를 몰라도 프로그래밍이 가능하다는 장점이 있다.
여기서 드는 의문이 있다.
어셈블리어도 인간이 이해하기 위한 기호로 바꾼 거라면 고급언어가 아닌가? 왜 저급언어지?
그 이유는 '하드웨어 구조를 알아야하는가?'가 저급과 고급을 나누는 기준이다.
어셈블리어는 0과 1을 인간이 이해할 수 있는 문자인 ADD, MOV 등으로 1:1 매칭한 기호이다.
하드웨어마다 기계어가 다르므로 같은 어셈블리어 코드더라도 다른 하드웨어에서는 돌아가지 않을 수 있다.
따라서 어셈블리어를 사용하려면 컴퓨터의 내부 구조를 정확히 알고 있어야 한다.
하지만 고급언어는 하드웨어는 신경쓰지 않고 오로지 사용하는 언어의 문법만 알고 있으면 된다.
우리가 짠 코드를 컴파일러에서 알아서 처리를 해주기 때문에 하드웨어에서 어떻게 동작하는지는 몰라도 된다.
이를 추상화 수준이 높다고 한다.
기계어보다는 높고 고급언어보다는 낮은 단계에 위치해있지만, 하드웨어 구조를 알아야하므로 일반적으로 저급언어로 구분된다.
출처
- [부스트코스] 웹 프로그래밍(풀스택)
- 웹 프로그래밍 기초 소개 > Web 개발의 이해 > 웹 프로그래밍을 위한 프로그램 언어들