반응형

Python은 1991년 프로그래머인 귀도 반 로섬(Guido van Rossum)이 발표한 고급 프로그래밍 언어로, 플랫폼 독립적이며 인터프리터식, 객체지향적, 동적 타이핑(dynamically typed) 대화형 언어이다. 파이썬이라는 이름은 귀도가 좋아하는 코미디 〈Monty Python’s Flying Circus〉에서 따온 것입니다. 

 

즉 프로그래밍 언어입니다. 

 

가장 큰 특징은 인터프리터 언어라는 것입니다.

소스 코드를 기계어로 컴파일해서 실행파일을 만들고 실행하는 컴파일 언어와는 다르게 인터프러터 언어는 코드를 한 줄씩 읽어 내려가며 실행하는 프로그래밍 언어입니다. 인터프리터 방식을 쓰는 프로그래밍 언어는 많은데 대표적인 것이 Python입니다. 파이썬은 그 외에도 정적타입, 동적타입 모두 사용가능하다는 특성이 있습니다.

 

인터프리터 언어의 장단점

인터프리터는 실행 시마다 소스 코드를 한 줄씩 기계어로 번역하는 방식이기 때문에 실행 속도는 컴파일 언어보다 느리다. 그렇다면 왜 사용할까? 인터프리터 언어는 프로그램 수정이 간단하다는 장점이 있습니다. 컴파일러는 소스 코드를 번역해서 실행 파일을 만들기 때문에 프로그램에 수정 사항이 발생하면 소스 코드를 다시 컴파일해야 한다. 하지만 인터프리터는 소스 코드를 수정해서 바로 실행시킬 수 있습니다.

 

장점

  • 배우기 쉬워서 학습용으로 좋다.
  • 공동 작업과 유지 보수가 아주 쉽고 편해서 생산성이 높고 실사용률도 높다.
  • 읽고 쓰기 쉽다.

단점

  • 느리다.

Python 동작절차

Python의 구현체 CPython

일반적으로 python이 C로 구현되어 있다고 알려져있는데 그 구현체가 CPython이다. 가장 처음 만들어진 python의 구현체이고 Python.org 에서 다운 받으면 CPython을 받는 것입니다. 다른 구현체들과 비교해서 언급할 때 주로 CPython이라고 표기하는데 Python을 C언어로 구현한 구현체를 의미합니다.

CPython은 인터프리터 이면서 컴파일러 입니다. 우리가 작성하는 Python 코드를 bytecode로 컴파일 하고 실행합니다. 다시 말해, python 코드를 C언어로 바꾸는 것이 아니라 컴파일하여 bytecode로 바꾸고 그 다음에 interpreter(virtual machine)가 실행합니다.

(CPython 인터프리터 실행 중에 단점이 있는데 GIL(global interpreter lock)을 사용한다는 것이다. bytecode를 실행할 때에 여러 thread를 사용할 경우, 전체에 lock 을 걸어서 한번에 단 하나의 thread 만이 python object에 접근하도록 제한한 것이다. 하지만 single thread일 때는 문제가 없고 GIL의 단점을 보안하기 위한 방법들이 존재하고 있어서 GIL로 인한 불편함을 느낄 가능성은 거의 없다고 한다.)

 

Jython

python 코드를 java 바이트코드로 만들어 JVM에서 실행할 수 있도록 한다. .py 파일을 .class파일로 컴파일 한다.

 

pypy

python 자체로 구현. JIT 컴파일 도입하여 CPython 보다 빠르다.

 

(JIT(just-in-time) 컴파일 이란 프로그램을 실행하기 전에 컴파일 하는 대신, 프로그램을 실행하는 시점에서 피료한 부분을 즉석으로 컴파일하는 방식. 보통 인터프리터 언어의 성능 향상을 목적으로 도입하는 경우가 많다. 인터프리트 하면서 자주 쓰이는 코드를 캐싱하기 때문에 인터프리터의 느린 실행 속도를 개선할 수 있다. JVM에서도 바이트코드를 기계어로 번역할 때 JIT 컴파일러를 사용한다.)

 

 

 

출처:https://cjh5414.github.io/about-python-and-how-python-works/

 

Python에 대하여, Python은 어떻게 동작하는가? Python의 장단점

Jihun's Development Blog

cjh5414.github.io

 

반응형

+ Recent posts