객체 지향 프로그래밍/Python

파이썬은 정말 인터프리터 언어일까?

ghtis1798 2021. 3. 10. 13:01

📌파이썬 인터프리터

파이썬이 동작하는 방식은

  1. 인터프리터가 파이썬 코드를 바이트 코드로 변환한다.
  2. 바이트 코드가 PVM(Python Virtual Machine) 위에서 실행된다.

인터프리터가 파이썬 코드를 변환하고나면 .pyc 파일이 생성된다.

그런데 .pyc는 컴파일 된 파일이 아닌가? 라는 생각이 들었다.

📌자바와의 차이점

자바 코드의 실행 과정을 생각해 보았다.

  1. 자바 코드를 컴파일러(javac.exe)가 컴파일하여 .class 파일(byte code) 생성
  2. 컴파일된 .class 파일을 JVM에서 실행한다.

소스코드를 바이트 코드로 변환한 뒤 가상머신에서 실행한다는 점은 같다.

자바의 경우 컴파일러가 변환한 .class 파일이 생성된다.

이분법적으로 이것을 구분하는 것 자체가 문제라고 생각된다.

굳이 차이점을 둔다면 왜냐하면 아래 링크에서도 언급했듯이,

언어를 구현할 때 무엇에 초점을 맞추고 구현했느냐에 따라 나뉜다.

만약 인터프리터 방식만 고수해서 한 줄씩 읽고 실행한다면,

실행 시간 측면에서 굉장히 비효율적이라는 주장이다.

📌컴파일러, 인터프리터

이에 대한 이분법적인 사고는 적절하지 않다는 것을 느꼈다.

실제 파이썬 인터프리터는 컴파일러를 포함하고 있는 구조이다.

언어를 설계할 때 무엇에 구현의 관점에서 무엇에 초점을 맞추었느냐의 차이이다.

다음 링크에서도 언어의 문제가 아닌, 구현의 문제라고 주장하고 있다.

컴파일 언어라도 구현체를 어떻게 구성하느냐에 따라 인터프리터 언어가 될 수 있다.

https://soooprmx.com/archives/11330

 

파이썬은 인터프리터언어입니까? · Wireframe

최근에 많이 보게 되는 질문 중 하나가 ‘파이썬은 인터프리터 언어입니까? 컴파일언어입니까?’라는 것이다. 개인적으로 이 질문은 사람을 참 난감하게 하는데, 어떻게 답해야하나에 앞서 아

soooprmx.com