2진수로 되어 있는 언어처럼 컴퓨터가 이해하는 언어를 기계어 라고 부른다. 코드를 기계에 바로 적용시킬 수도 있지만, 기계어는 매우 어렵기 때문에 어려운 만큼 비효율적인 방식으로 작업하게 된다.
그래서 우리는 인간이 이해할 수 있는 프로그래밍 언어(고수준언어)로 코드를 짠 다음, 컴파일러Compiler를 이용해 프로그래밍 언어를 컴퓨터가 이해할 수 있는 저수준 언어 or 기계어로 바꿔준다.
complie의 구체적인 과정은 이러하다.
그런데 OS 종류는 Window, MAC 등 다양하다. 문제는 OS에 따라 파일을 따로 만들어야 한다는 점이다. 이러한 언어 중 하나가 C언어이다.
이런 문제를 JVM이 해결했다.
😉 JVM(Java virtual machine)은 Byte파일을 해당 OS에 맞게 변환해준다.
JVM이 파일을 OS에 맞게 변환할 때 과정을 살펴보자.
이 때, 코드는 한 줄, 한 줄씩 실행되며 OS에 전달된다.
이렇게 한 줄씩 낮은 수준의 언어로 번역하는 일을 인터프리트라고 한다.complie vs interpret
컴파일러 : 전체 코드를 한 번에 번역, 실행 속도가 빠름, 오류 방지 용이
인터프리터 : 한 줄씩 번역, 컴파일에 비해 속도가 느림
CISC : 명령어가 많고 복잡함
RISC : 명령어가 적고 효율적임, 모든 명령어를 사용하지 않는데 많은 명령어를 들고 있으면 비효율적이므로 개발됨
장점 🙂 속도가 빠름
단점 🙁 CPU(하드웨어)에 종속됨
장점 🙂 OS가 있으면 고수준언어로 코딩 가능
단점 🙁 어셈블리 언어보다는 나으나, OS에 종속됨
shell언어 : OS와 상호작용하며 소통할 수 있는 언어. shell 언어는 명령 프롬프트에서 명령해준다.
이렇게 상호작용하는 방식을 CLI라고 부르며 사용자가 아이콘 등의 그래픽으로 알기 쉽게 나타낸 것을 GUI라고 한다.
이미지 출처
장점 🙂 어떤 OS에서도 코딩 가능
단점 🙁 VTM에 종속적이라는 한계가 있음