한국인들은 한글, 미국인들은 영어, 중국인들은 중국어, 일본인들은 일본어와 같이 사람들은 각자 나라마다의 언어를 가지고 소통을 한다. 이와 같이 컴퓨터도 자신들만의 소통 언어가 있는데 바로 0과1로만 이루어진 기계어이다.
우리가 파이썬과 c,java와 같은 프로그래밍 언어들은 인간 친화적인 High level 언어이다. 우리가 프로그래밍 언어를 이용해서 짠 코드를 컴퓨터가 이해하기 위해서는 low level 언어인 기계어로 번역을 해서 전달해주어야한다.
그 번역기는 방식에 따라 여러 툴이 존재하는데 대표적인 두개는 인터프리터와 컴파일러다.
인터프리터 방식은 코드를 위에서부터 한줄씩 기계어로 번역해가며 컴퓨터와 소통하는 방법이다.
컴파일 방식은 코드를 처음부터 끝까지 한번에 번역 후 기계어로 번역된 스크립트를 통째로 컴퓨터에 전달을 하는 방법이다.
C언어와 자바의 경우 대표적인 컴파일 언어로 유명하고 파이썬은 인터프리터 언어로 유명하다.
두 방식은 상황과 환경에 있어서 속도와 생산성의 장단점이 존재한다.
인터프리터 방식의 경우 코드를 한줄씩 번역해가며 컴퓨터와 소통하기 때문에 오류가 생겼을 때 검증(디버깅)이 상대적으로 쉽다. 그리고 프로그램의 크기가 작을 경우 컴파일 방식과 비교해서 속도의 차이가 거의 없다.
컴파일 방식의 경우 첫 번역 시 처음부터 끝까지 모든 코드를 기계어로 번역하기에 그 과정에 시간이 꽤 소모되어 코드에 대한 반응을 살피기가 어렵다. 하지만 한번 번역한 이후에 프로그램을 계속해서 실행할 경우 파이썬과 비교했을 때는 매우 빠른 속도로 프로그램이 동작한다.
프로젝트의 규모와 안정성, 속도에 맞춰 사용하는 언어가 달라지는 이유이다.
메모리 관리의 측면에서도 차이가 존재하는데 다음 글에서 다루어볼 예정이다.
'Language > Python' 카테고리의 다른 글
| Python 06 - 파이썬의 자료형과 타입 (0) | 2024.07.02 |
|---|---|
| Python 05 - "변수에 대한 접근" (0) | 2024.07.02 |
| Python 04 - 변수의 주소와 메모리 관리 (0) | 2024.07.02 |
| Python 03 - 파이썬의 장단점 (동적언어 vs 정적언어) (0) | 2024.07.02 |
| Python 01 - 변수와 객체 with 리터럴 (0) | 2024.07.02 |