파이썬은 어떻게 동작할까요?

비효율? 단언컨데
그것은 오해입니다.

파이썬의 동작 방식

영어나 한국어와 같은 언어를 자연어라고 하죠? AI가 아닌 일반적인 컴퓨터는 우리가 말하는 이런 자연어를 이해하지 못합니다. 그래서 컴퓨터에게 명령을 내리기 위해 파이썬과 같은 프로그래밍 언어를 사용해야 합니다.

파이썬의 경우 작성한 프로그램을 실행하기 위해서는 해당 프로그램을 파이썬 가상 머신 이라는 인터프리터 를 통해 기계어로 변환해야 합니다. 즉 인터프리터는 내부적으로 컴파일 을 수행하여 소스 코드를 기계어인 바이트 코드로 변환하고 확장자가 .pyc인 파일을 생성합니다. 이렇게 생성된 .pyc 파일은 인터프리터에 의해 해석되어 실행됩니다. 이 과정을 도표로 나타내면 다음과 같습니다.

비효율적인 변환 작업?

앞의 다이어그램을 보면 파이썬의 가상 머신은 컴파일러와 인터프리터를 통해 두 번의 변환 작업을 수행한다는 것을 알 수 있습니다. 프로그래밍을 해석하는데 변환 작업을 두 번이나 수행한다고? 이거 너무 비효율적인거 아니야? 라고 생각하실지도 모르겠네요. 하지만 파이썬이 두 번의 변환 작업을 수행하는 것은 정확히 그 반대의 이유 때문입니다.

파이썬이 두 번의 변환 작업을 거치는 이유는 프로그래밍의 효율성을 위해서 입니다. 즉 파이썬은 다음의 두 가지 이유로 컴파일러와 인터프리터의 중간 과정을 거치는 방식을 사용하기 때문에 더 효율적인 방법이라고 할 수 있는 것이죠.

  • 프로그램은 중간 코드, 즉 바이트 코드가 있어야 최소한의 최적화 수행이 가능합니다.
  • 파이썬은 py와 동일한 이름을 가진 pyc 파일이 존재할 경우 자동으로 해당 파일을 실행합니다. 만약 pyc 파일이 이미 존재하고 소스 파일을 변경하지 않았다면 가상 머신은 소스 파일을 다시 컴파일 할 필요가 없기 때문에 불필요한 시간을 사용하지 않아도 됩니다.

간단하게 파이썬의 동작 방식에 대해 알아보았습니다. 그런데 사실 반드시 파이썬의 동작 방식을 알아야 프로그래밍을 할 수 있는 것은 아닙니다. 그렇지만 파이썬의 동작 방식을 올바르게 이해하고 있으면 조금 더 프로그래밍을 쉽게, 더 효율적으로 할 수 있지 않을까요?

답글 남기기