Python

Life is too short, you need Python.

파이썬 커뮤니티의 유구하고 유일무이한 가치관을 상징하는 비공식 슬로건.

인공지능과 데이터 사이언스 열풍을 타고 현대 IT 생태계의 황태자로 군림한 언어이자, 미친 생산성을 자랑하는 개발자들의 구세주. 그리고 전역 인터프리터 락(GIL)의 저주와 느려 터진 실행 속도로 엔지니어의 대가리를 깨뜨리는 만악의 근원

1. 개요

Python은 1991년 네덜란드 출신의 개발자 귀도 반 로섬(Guido van Rossum)이 발표한 고급 프로그래밍 언어이다. 인터프리터 방식의 동적 타이핑 언어로, 가독성이 극도로 높고 문법이 간결하여 입문용 언어로 압도적인 인기를 누리고 있다.

하지만 실상은 단순한 교육용 언어가 아닌, 구글, 메타, 넷플릭스 같은 거대 기업들의 백엔드 시스템 일부를 지탱하고 있는 거물이며, 현대 인공지능 및 머신러닝 생태계를 사실상 독점하고 있는 왕중의 왕이다. 물론 속도 최적화를 위해 내부 엔진은 C언어C++로 떡칠되어 있는 것이 함정이다.(...)

2. 특징 및 장단점

2.1. 장점: 인간을 배려한 미친 생산성과 문법

파이썬의 가장 큰 무기는 압도적인 생산성과 가독성이다. 코드가 거의 영어 문장을 읽는 수준으로 깔끔해서, 다른 언어에서 20~30줄씩 써야 하는 코드를 파이썬에서는 단 3줄로 끝내버리는 마법을 보여준다. 게다가 전 세계의 천재들이 이미 만들어 둔 라이브러리가 넘쳐나기 때문에, 내가 하려는 거의 모든 작업은 누군가 이미 짜놓은 패키지를 pip install 한 번으로 가져와서 붙여넣으면 끝난다. 이 때문에 "파이썬 개발자는 그냥 레고 블록 조립하는 직업이다"라는 시기 어린 질투를 받기도 한다.

2.2. 단점: 기계를 배려하지 않은 극악의 실행 속도

파이썬의 최대 약점은 동작 속도이다. 컴파일 과정 없이 한 줄씩 해석해 가며 실행하는 인터프리터 언어 특성상, C언어Rust 같은 네이티브 컴파일 언어에 비해 기본적으로 수십 배에서 수백 배까지 느리다.

여기에 파이썬의 가장 큰 아킬레스건인 GIL(Global Interpreter Lock, 전역 인터프리터 락)이 얹어진다.1 멀티코어 CPU가 당연해진 현대 환경에서도 파이썬 프로세스는 한 번에 하나의 스레드만 파이썬 바이트코드를 실행하도록 잠금을 걸어버리기 때문에, 멀티스레딩을 활용한 병렬 처리를 구현하려고 하면 성능이 오히려 곤두박질치는 기적적인 현상을 목격할 수 있다.2 결국 병렬 처리를 하려면 멀티프로세싱으로 램을 희생해야 한다

3. 관련 밈 및 드립

3.1. 인생은 짧으니 파이썬을 쓰세요

가장 널리 알려진 밈이자 진리. 타 프로그래밍 언어(특히 C++이나 Java)의 끔찍하고 장황한 문법에 치여 지쳐버린 개발자들이 파이썬의 단순하고 명료한 코드를 접했을 때 느끼는 해방감을 표현한 대중적인 밈이다. 해외 개발자 커뮤니티에서는 타 언어로 코딩하느라 고통받는 개발자 옆에 안티그래비티(반중력) 약을 먹고 날아다니며 "인생은 짧아, 파이썬을 써!"라고 외치는 만화가 엄청난 유행을 타기도 했다.

3.2. 들여쓰기(Indentation) 빌런

대다수 프로그래밍 언어가 중괄호({ })를 통해 코드의 블록 영역을 구분하는 것과 달리, 파이썬은 들여쓰기(띄어쓰기 4칸 혹은 탭) 자체를 문법적 강제 사항으로 규정한다. 이로 인해 겉보기에는 깔끔하지만, 다른 사람이 작성한 코드를 긁어와 붙여넣었다가 보이지 않는 탭(Tab) 문자와 공백(Space) 문자가 섞이면서 IndentationError가 터져 모니터를 찢어버리고 싶어지는 부작용을 낳았다. 일부 사악한 개발자들은 신입 교육용 코드에 고의로 공백 3칸짜리 들여쓰기를 하나 섞어두어 주니어들의 눈물샘을 자극하기도 한다.(...)

4. 여담

  • 파이썬 이름의 코미디 유래: 파이썬(Python)이라는 이름은 동물의 왕국에 나오는 비단뱀이 아니라, 원작자인 귀도 반 로섬이 좋아하던 영국의 전설적인 코미디 그룹 '몬티 파이튼(Monty Python)'의 코미디 쇼 명칭에서 따왔다. 공식 로고에는 뱀 두 마리가 서로 얽혀 있는 모양을 묘사하고 있어 이름값을 톡톡히 하고 있다.
  • 고통의 마이그레이션 암흑기: 파이썬 2버전에서 3버전으로의 마이그레이션은 소프트웨어 역사상 가장 길고 고통스러웠던 암흑기 중 하나로 꼽힌다. 3버전으로 판올림하면서 하위 호환성을 사정없이 끊어버렸기 때문에, 수많은 기업들이 "그냥 2버전으로 평생 살겠다"고 버티다가 2버전 공식 지원 종료(EOL) 날짜인 2020년 1월 1일이 되어서야 부랴부랴 눈물을 흘리며 코드를 뜯어고치는 장관을 연출했다.
  • 이스터 에그 import this: 파이썬의 철학을 담은 import this라는 이스터 에그가 있다. 인터프리터 창에 입력하면 '아름다운 것이 추한 것보다 낫다(Beautiful is better than ugly)'로 시작하는 19개의 명언이 출력된다. 정작 파이썬 개발자들은 이 철학을 어기는 코드를 짜서 서로를 괴롭히는 것이 일상이다.

5. 관련 문서

각주

  1. 싱글 스레드 성능 극대화를 위해 메모리 관리 방식인 가비지 컬렉션을 안전하게 처리하고자 고안된 장치이다. 문제는 이 유산이 너무 거대해서 현대 파이썬 코어 개발팀조차 30년 넘게 GIL을 완벽히 걷어내지 못하고 낑낑대고 있다는 점이다.

  2. 실제로 파이썬 기반 프레임워크(Django, FastAPI 등)는 트래픽이 몰리면 뒷단에서 작동하는 비동기 루프나 C언어로 작성된 프록시 서버(Gunicorn 등)의 버프를 받아 연명하는 경우가 허다하다.