컴퓨터는 0과 1이란 신호들을 사용해서 돌아간다.
때문에 컴퓨터가 알아듣는 명령어들은 0과 1의 기나긴 조합들로 되어있다.
(사람이 이걸로 프로그램을 짜려면 죽어난다...)
때문에 오늘날 널리 사용되는 프로그래밍 언어들은 사람들이 보다 알아보고 작성하기 수월하도록 설계돼있다.
나날이 쉬워지고 간결해지고 기능도 강력해지는 언어들 덕분에 손쉽게 코딩을 할 수 있다.
하지만 기계들은 이 코드들을 알아보지 못하기 때문에 이를 기계들의 언어로, 또는 그 중간 단계로 번역해주는 작업이 필요하다.
이걸 언제 하느냐에 따라 컴파일러/인터프리터 둘 중 한 범주에 들어가게 된다.
# 컴파일러
C, C++, 자바 등의 언어들은 개발자가 코딩을 마치고 완성된 프로그램을 출시하는 단계에서 컴퓨터에게 일을 하나 시킨다. 이 일이 바로 컴파일이다.
개발자가 작성한 프로그래밍 코드를 출시 전에 번역하는 것.
컴파일러라고 불리는 번역가(프로그램)가 컴퓨터에게 건네줄 책을 미리 컴퓨터의 언어로 번역 작업을 하는 것.
때문에 이 언어들을 '컴파일 언어'라고 부른다.
자바코드로 예를 들어보자.
자바언어로 코드를 작성하고, 컴파일러에 명령을 내리면 이처럼 class란 확장자를 가진 파일이 생겨난다.
이 class 파일은 자바 가상 머신(JVM)이라는 프로그램이 설치된 모든 종류의 기계에서 통용되는 기계언어이다.
프로그래머는 자바언어로 짠 코드를 이 JVM용 언어로 번역시킨 뒤, 이 기계들에 보내서 소프트웨어가 동작하도록 한다.
# 인터프리터
이처럼 프로그래머가 쓴 책을 미리 번역하는 언어들도 있지만, 그대로 가져가서 그때그때 통역사가 읽어주는 언어들도 있다.
자바스크립트, 파이썬, 루비 등의 언어들이 대표적이다.
이들을 인터프리터(interpreted) 언어라고 한다. 다른 말로는 '스크립트 언어'라고도 한다.
당장 다음 사이트에 들어가서 코드를 살펴보면 자바스크립트로 작성한 코드를 그대로 볼 수 있다.
소프트웨어를 출시할 때, 컴파일을 하는 과정이 필요없기 때문에 코드 수정이 잦은 서비스의 경우 업데이트가 훨씬 수월하지만, 그때그때 통역사가 머리 굴리며 책을 읽어야하기 때문에 실행속도는 컴파일러 언어에 비해 느리다는 단점이 있다.
그리고 프로그래머가 짠 코드가 그대로 배포되어 사용되기 때문에, 프로그래밍 코드가 보다 쉽게 누출되기도 한다.
이런 특성들을 고려해서, 개발자들은 자신이 만들려는 서비스에 적합한 종류의 언어를 선택해서 프로그래밍을 한다.
코드를 미리 번역해서 출시하면 컴파일언어,
실행할때마다 통역을 쓰면 인터프리터 언어.
** 출처: 모든 내용은 얄코 강의를 기반으로 작성하였습니다.
https://www.youtube.com/watch?v=GYmuQJiPeM4&t=312s
'Computer Science' 카테고리의 다른 글
Virtual DOM(가상돔) (0) | 2023.11.26 |
---|---|
네이티브 앱 vs 크로스플랫폼 앱 vs 모바일웹앱 vs 하이브리드 앱 (0) | 2023.11.25 |
객체지향 프로그래밍에 대해서 (0) | 2023.11.18 |
웹 서버 (0) | 2023.08.16 |
라이브러리(Library) vs 프레임워크(Framework) (0) | 2023.05.25 |