인터프리터와 컴파일러는 프로그래밍 언어를 실행하는 데 사용되는 두 가지 주요 방식이다.

컴파일러와 인터프리터 언어는 둘 다 자연어를 기계어로 번역하는 프로그램이지만

전체 소스 코드를 한 번에 기계어로 변환하고 인터프리터 언어는 코드를 작성한 한 줄마다 해석하는 차이가 있다.

 

컴파일 언어

전체 코드를 한 번에 컴파일하여 중간 형식으로 변환한다. 이후 중간 형식의 코드를 실행 가능한 기계 코드로 변환한다.
컴파일 시간이 필요하나 실행 속도가 빠르고 최적화에 용이하다.

장점 단점
실행 속도가 빠르고 최적화가 되어있다.
컴파일 시간이 필요하며 코드를 수정할 때마다 다시 컴파일해야 한다.
전체 코드를 한 번에 컴파일하므로
실행 중에 추가적인 해석이 필요하지 않다.
컴파일된 기계 코드는 특정 플랫폼에 종속적이다.
사용 예시: C, C++, Java
컴파일 시간은 오래 걸리지만 실행 속도가 빠르다  
C 저수준 프로그래밍 언어인 C는 컴파일러를 사용하여 기계어로 변환됩니다.
C 언어는 시스템 프로그래밍, 임베디드 시스템, 게임 개발 등 다양한 분야에서 사용됩니다.
C++ C++은 C 언어를 확장한 객체 지향 프로그래밍 언어입니다. 
C++ 컴파일러는 C++ 소스 코드를 기계어로 변환하여 실행 파일을 생성합니다.
C# C#은 Microsoft에서 개발한 프로그래밍 언어로, NET 프레임워크에서 사용됩니다.
C# 컴파일러는 C# 코드를 중간 언어로 변환한 후 실행합니다.
JAVA Java는 플랫폼 독립적인 언어로, Java 컴파일러는 
Java 소스 코드를 바이트코드로 변환하여 JVM(Java Virtual Machine)에서 실행합니다.
ADA 고도로 안전하고 신뢰성 있는 시스템을 개발하기 위해 사용되는 Ada 언어는 컴파일러를 통해 기계어로 변환됩니다.


인터프리터 언어

실행 단계에서 코드를 한 줄씩 해석하고 실행한다.
코드를 작성한 후 바로 실행할 수 있으며, 중간 단계 없이 직접 실행된다.
실행 속도가 느릴 수 있으나, 개발자가 코드를 수정하고 테스트하기에 편리하다.

 

Python 간결하고 읽기 쉬운 문법을 가진 인터프리터 언어로
데이터 분석, 웹 개발, 인공지능 등 다양한 분야에서 사용된다.
Ruby 간결한 문법과 동적 타입 시스템을 가진 언어로 웹 프레임워크인 Ruby on Rails에서 사용된다.
JavaScript 웹 브라우저에서 동작하는 스크립트 언어로, 웹 개발에서 사용된다.
PHP 웹 서버에서 동작하는 스크립트 언어로 동적 웹 페이지를 생성하는 데 사용된다.
MALAB 과학 및 공학 분야에서 데이터 분석, 시뮬레이션, 그래프 작성 등에 활용된다.
장점 단점
코드를 작성한 후 바로 실행할 수 있다. 실행 속도가 느리다.
중간 단계 없이 직접 실행되므로, 
개발자가 코드를 수정하고 테스트하기에 편리하다.
중간에 코드를 해석하고 실행하므로
실행 중에 추가적인 오류가 발생할 수 있다.
플랫폼에 독립적이다.  -

언어의 선택은 개발 환경과 목적에 따라 달라진다.

빠른 실행 속도와 최적화를 원한다면 컴파일러

빠른 개발과 플랫폼 독립성을 원한다면 인터프리터를 선택하면 된다.
일부 프로그래밍 언어에서는 컴파일러와 인터프리터를 모두 사용할 수 있다.

 

개인적으로는 실시간으로 변경되는 페이지를 확인해야하는 웹개발에서는 인터프리터 언어,

작성한 프로그램이 제대로 동작되는지 살펴봐야하는 구현에는 컴파일 언어가 좋았던 것 같다.

 

하지만 이 두 가지 방식을 혼합하여 프로그래밍 언어를 개발하거나 실행할 수 있다. 

아래에는 대표적인 예시 언어이다.

Python 인터프리터 언어이지만 컴파일러 언어로도 사용될 수 있다. Python 코드를 바이트 코드로 컴파일하고, 이후 인터프리터가 해당 바이트 코드를 실행한다.
Java Java 소스 코드를 컴파일하여 바이트 코드로 변환한 다음, JVM(Java Virtual Machine)에서 실행하는 컴파일 언어이다. 그러나 인터프리터 언어로도 사용될 수 있다. 일부 상황에서는 소스 코드를 직접 실행할 수 있다.
JavaScript JavaScript는 인터프리터 언어다. 웹 브라우저에서 직접 실행되며, 코드를 한 줄씩 해석하고 실행한다.
Node.js와 같은 환경에서는 JavaScript를 컴파일러 언어로 사용할 수 있다.
JavaScript 코드를 기계 코드로 변환하여 실행할 수 있다.



'CS > ETC' 카테고리의 다른 글

웹사이트 상세페이지 크롤링  (1) 2024.08.17
HTML의 종류  (0) 2024.08.12
우분투 서버 연습...  (0) 2024.08.12
인텔리제이로 깃허브 연동을 해보자!  (0) 2024.07.18
실무 코딩팁  (0) 2024.01.11

+ Recent posts