본문 바로가기

Programing Language/Python

python(인터프리팅언어)와 C(컴파일언어) 비교

반응형

머릿말


최근 다양한 언어가 널리 알려지고, 대중들에게도 접근성이 많이 높아져 요즘은, 초등학생부터 취준생, 직장인을 대상으로 한

다양한 코딩수업들 또한 어느덧 레드오션으로 가는 것으로 보여지는 상황이다.


이러한 상황에서 python과 C의 차이는 극명하다. 


python은 쉽고, 남들이 많들어놓은 것을 가져다 쓰기 편하지만, 느리다.


C는 비교적 어렵고, 대부분 직접 만들어 써야 하지만, 무엇보다 빠르다.


차이는 극명하다. 하지만, 계산 코스트가 크지 않은 경우, python이 대부분 편하다.

하지만, 이제 코드를 짜는 시간보다, 코드를 돌리는 시간이 더욱 길어진다면 얘기는 달라진다.

특히 기존 작업을 python에서 하고있었다면 그 계산만을 위해서 C로 넘어가기는 효율또한 너무 좋지가 않다.


그럼 대체 python은 왜 느린가?

python과 C의 개발환경을 떠올려보면 얼추 이해할 수 있다.




python(인터프리팅언어)와 C(컴파일언어)의 차이점


python은 대표적 인터프리팅 언어이고,

C는 대표적 컴파일 언어이다.


python은 작업환경에서 [In 123], [Out 123]과같은 창이 기억날 것이다. 그냥 작업창에서 엔터치면 결과가 바로 나온다.

반면 C는 작업하던 것을 저장하고, 컴파일을 해야한다. 그러고 컴파일 된 실행파일을 실행시켜야 결과를 볼 수 있다.


이것이 가장 큰 차이인데, 고급(?) 언어일 수록 인간의 입장에서 이해하기 편하다. 하지만 컴퓨터 입장에선 알아듣기 힘들다.

따라서 python의 경우 인터프리터라는 것으로 직접 바로 번역이 되고 동시에 실행을 한다. 

이때 번역이란 것은 컴퓨터가 알아들을 수 있는 기계어(0과 1로 이루어진 바이너리)로 번역이 되는 것을 뜻하는데, python같은 인터프리팅 언어의 경우 한 줄 단위로 번역이 된다.


C와 같은 컴파일 언어는, 코드를 전부 짠 뒤, 이 소스파일을 가지고 컴파일 단계에서 소스코드 전체를 기계어로 번역을 한다. 번역을 하고 나면 실행파일이 생기고, 이를 실행해야 전체 결과를 볼 수 있다.


컴파일 언어같은 경우, 전체를 한 번에 번역하게 되니, 번역하는데 공통으로 사용되는 자원들을 효율적으로 사용할 수 있고, 제가 자세히는 설명드릴 수 없겠지만, 여러 이유에 의해서 인터프리팅언어와 비교했을 시 속도면에서 월등히 빠르게 됩니다.


이래서 python의 경우, 인터프리터언어지만, 성능을 향상시키기 위해 필요한 부분부분을(하이브리드컴파일러) 또는 전체를 컴파일 하게 된다.


이 중 요즘 가장 핫한 것이 JIT컴파일러라는 것인데 Python의 경우 PyPy라는 JIT 컴파일러가 존재한다.


기존에 존재하던 하이브리드 컴파일러인 Cpython이나 Cython보다 우월한 성능을 보여주고 있다.

이 내용에 대해선 다음 포스트에서 더욱 자세히 설명 하겠다.




참고


다양한 Python들에 대해서 궁금하다면? 여기

PyPy에 대해 좀더 궁금하다면? 여기

반응형