인터프리터와 컴파일러는 프로그래밍 언어를 실행하는 데 사용되는 두 가지 주요 방식이다.
컴파일러와 인터프리터 언어는 둘 다 자연어를 기계어로 번역하는 프로그램이지만
전체 소스 코드를 한 번에 기계어로 변환하고 인터프리터 언어는 코드를 작성한 한 줄마다 해석하는 차이가 있다.
컴파일 언어
전체 코드를 한 번에 컴파일하여 중간 형식으로 변환한다. 이후 중간 형식의 코드를 실행 가능한 기계 코드로 변환한다.
컴파일 시간이 필요하나 실행 속도가 빠르고 최적화에 용이하다.
장점 | 단점 |
실행 속도가 빠르고 최적화가 되어있다. |
컴파일 시간이 필요하며 코드를 수정할 때마다 다시 컴파일해야 한다. |
전체 코드를 한 번에 컴파일하므로 실행 중에 추가적인 해석이 필요하지 않다. |
컴파일된 기계 코드는 특정 플랫폼에 종속적이다. 사용 예시: 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 |