📌파이썬 인터프리터
파이썬이 동작하는 방식은
- 인터프리터가 파이썬 코드를 바이트 코드로 변환한다.
- 바이트 코드가 PVM(Python Virtual Machine) 위에서 실행된다.
인터프리터가 파이썬 코드를 변환하고나면 .pyc 파일이 생성된다.
그런데 .pyc는 컴파일 된 파일이 아닌가? 라는 생각이 들었다.
📌자바와의 차이점
자바 코드의 실행 과정을 생각해 보았다.
- 자바 코드를 컴파일러(javac.exe)가 컴파일하여 .class 파일(byte code) 생성
- 컴파일된 .class 파일을 JVM에서 실행한다.
소스코드를 바이트 코드로 변환한 뒤 가상머신에서 실행한다는 점은 같다.
자바의 경우 컴파일러가 변환한 .class 파일이 생성된다.
이분법적으로 이것을 구분하는 것 자체가 문제라고 생각된다.
굳이 차이점을 둔다면 왜냐하면 아래 링크에서도 언급했듯이,
언어를 구현할 때 무엇에 초점을 맞추고 구현했느냐에 따라 나뉜다.
만약 인터프리터 방식만 고수해서 한 줄씩 읽고 실행한다면,
실행 시간 측면에서 굉장히 비효율적이라는 주장이다.
📌컴파일러, 인터프리터
이에 대한 이분법적인 사고는 적절하지 않다는 것을 느꼈다.
실제 파이썬 인터프리터는 컴파일러를 포함하고 있는 구조이다.
언어를 설계할 때 무엇에 구현의 관점에서 무엇에 초점을 맞추었느냐의 차이이다.
다음 링크에서도 언어의 문제가 아닌, 구현의 문제라고 주장하고 있다.
컴파일 언어라도 구현체를 어떻게 구성하느냐에 따라 인터프리터 언어가 될 수 있다.
https://soooprmx.com/archives/11330
'객체 지향 프로그래밍 > Python' 카테고리의 다른 글
얕은 복사, 깊은 복사란? (4) | 2021.03.11 |
---|---|
변경 불가능한 자료형 주의하기 (0) | 2021.03.10 |
파이썬 변수는 언제 소멸될까? (2) | 2021.03.10 |
파이썬 - 입/출력, 자료구조 빠르게 정리하기 (9) | 2021.01.07 |
[재귀] Recursion - Python (0) | 2020.12.20 |