컴퓨터 언어의 변형
📖 들어가기
프로그램을 개발할땐 각각의 특색에 맞는 개발 언어가 존재한다. 이러한 언어는 컴퓨터가 바로 해석할 수 있는 단계가 아닌 개발자가 작성(코딩)하기 편한 언어(고급언어)로 되어있다.
고급언어를 컴퓨터가 이해하기 위해서는 번역기가 필요하다. 오늘 알아볼 내용이 바로 이 번역기에 대한 내용이다.
소스 코드 -> 기계어
대표적으로 컴파일러와 인터프리터, 가상머신이있고 각각의 특징을 비교하며 장점과 단점을 알아본다.
컴파일러
특정 프로그래밍 언어로 쓰여 있는 문서를 다른 프로그래밍 언어로 옮기는 언어 번역 프로그램
컴파일러는 소스코드를 사용하려는 각각의 컴퓨터 환경에 맞게 번역한다. 따라서 다른 컴퓨터에서 해당 프로그램을 사용하기 위해서는 패치라는 작업을 통해 새롭게 번역작업을 진행해야한다.
한가지예로는 게임을 들수있다.
게임에서 새로운 내용(업데이트)이 추가되면 게임을 시작하기 전에 패치작업이 수행되는데 이작업이 소스코드를 다운받고 내 PC환경에 맞게 번역되는 작업이라고 할 수 있다.
이렇게 각각의 PC에 맞게 번역이 이뤄지면 프로그램 실행 속도면에서 빠르다는 장점이 있다.
하지만 빠른만큼 수정이 이뤄질때마다 패치작업을 수행해야하기 때문에 이식성에서 매우 불리하다는 단점이있다.
대표적으로 사용하는 언어
- C
- C++
- swift
- Go
인터프리터
프로그래밍 언어의 소스 코드를 바로 실행하는 컴퓨터 프로그램
인터프리터는 고급 언어로 작성된 코드를 한 줄씩 읽어가면서 실행하는 방식이다. 컴파일러와 다르게 실시간으로 번역하고 실행시킨다는 것이 특징이다.
따라서 수정에 대한 이식성이 높은편이다. 대표적으로 인터넷 브라우저를 예로들수있다. 따로 패치작업 없이도 화면이 수정되는 것이 그 예다. 하지만 실시간으로 번역작업이 이뤄지기 때문에 느리다는 단점이 있다. 또 실시간 번역 방식을 사용하다보니 코드상에 오류가 있더라도 실행되는 문제가 발생한다.
대표적으로 사용하는 언어
- JavaScript
- Python
가상머신
가상머신은 중간언어라고 할 수 있는 중역자 역할을한다. 컴퓨터마다 중역자를 설치해야한다는 단점이 있지만 설치만 한다면 어느 환경에서든 바로 실행이 가능하다는 장점이 있다.
중역자를 거쳐서 실행되기 때문에 느리다는 단점이 있지만 그만큼 높은 이식성을 가지고있다.
예를들어, 셰계 공용어인 영어를 거쳐 그 나라에 맞는 언어로 재번역한다고 생각하면된다. 한국어 -> 영어 -> 중국어
대표적인 예
- Java의 JVM
결과적으로
위 내용에서 이식성이나 실행 속도가 느리다, 빠르다라고는 하지만 상대적인 속력이다.
대부분의 개발자들은 자신의 언어에대하여 프라이드가 높은편이다. 그래서 그 언어로 개발하시는 분한테 ‘xx가 느린 언어를 사용하시네요’라고 했다간 다양한 반박거리를 들을 수 있을것이다. 😂