기술 면접 단골 질문 중에 하나죠.
프로그래밍 언어 뭐 써봤나요? 어떤 종류인지 혹시 아시나요? 여러개 종류별로 비교해서 설명해주세요.
프로그래밍 언어는 실행 방식에 따라서 크게 두가지로 분류합니다.
하나는 컴파일러 언어, 다른 하나는 인터프리터 언어 라고 합니다.
컴파일러 언어로 코드를 작성하면 소스 파일을 컴파일해서 바로 컴퓨터가 이해할 수 있는 기계어로 코드를 작성해서 실행 파일로 만듭니다. CPU가 이 실행 파일을 바로 작동시키기 때문에 속도가 빠른 장점이 있는 반면 운영체제가 다르면 호환되지 않을 확률이 높습니다.
우리가 알고 있는 예시로 C++, Visual C++, Object C, Java, C 등이 있습니다.
인터프리터 언어는 컴파일러 언어와 달리 소스 파일을 실행하면 해석 엔진 프로그램이 소스 파일을 실시간으로 기계어로 해석해서 실행합니다. 따로 컴파일 과정이나 실행 파일이 없지만 상대적으로 속도가 느립니다.
대표적인 예로 Java, JavScript가 있습니다.
Q. Java는 둘 다 해당되나?
네. Java 같은 경우는 .java 파일을 컴파일해서 .class 파일이 만들어지고, 해당 파일을 실행하면 JVM에서 바이트 코드를 2진 코드로 변환합니다. 변환된 2진 코드를 운영체제로 넘겨주면 CPU를 이용해 프로그램을 실행하게 되죠. Java는 여러 운영체제에서 동시에 사용하기 위해 이런 방식을 사용했습니다. 우리가 매번 JRE(JVM을 포함하고 있음)을 운영체제에 맞게 다운받아야만 Java 파일을 실행할 수 있는 이유가 여기에 있습니다.
저같은 경우 처음 프로그래밍을 배울 때 시작한 언어는 파이썬이었고, 그 다음에 주로 사용한 언어는 자바스크립트였습니다.
일단 예전에 대표적인 스크립트 언어였던 JavaScript는 일단 인터프리터 언어에 포함됩니다. 다만 사용처에 따라 정의되는 분류이기 때문에 작동 방식과는 무관합니다. 주로 웹 브라우저 용으로 사용했기 때문에 스크립트 언어라고 불렀는데, 요즘에는 Node.js 런타임이나 Electron 등이 등장해 독립적인 프로그램 개발에 사용할 수 있어 스크립트 언어로 부르기 애매해졌습니다.
스크립트 언어는 이미 존재하는 소프트웨어를 제어하기 위한 용도로 사용하는 언어를 가리킵니다.
C#을 공부하기 앞서서 잠깐 프로그래밍 언어의 작동 방식에 따른 종류를 알아봤습니다!
지금부터 공부할 C# 은 컴파일 언어와 인터프리터 언어의 장점을 모두 갖춘 하이브리드 언어입니다.