파이썬 초보를 벗어나기 위한 가이드라인
파이썬을 파이썬답게 짜기 위해서는 어떻게 해야할까?
요새는 다양한 이유로 사람들이 파이썬을 많이 공부한다.
리스트와 문자열 처리에 특화되어있는 파이썬의 특성상 데이터 분석에 유리하기 때문이다.
이 문서는 비전공자와 파이썬 초보들이 어떻게 파이썬을 학습해야할지에 대한 가이드라인이다.
(기본적인 파이썬 문법을 알고있다 가정한다)
1. PEP-8을 공부하라
PEP(Python Enhancement Proposal)는 말그대로 파이썬을 더 효과적으로 만들거나, 사용하기 위한 제안서이다.
파이썬 설계의 지침서가 될수도 있고, 개발자들에게 권고하는 사항이나, 새로운 기능들이 적혀있을 수 있다.
문서의 제목은 PEP-{숫자} 형태로 되어있으며 Github에서 관리된다.
그 중에서 개발자들이 꼭 읽어봐야할 문서는 PEP-8이다.
PEP-8은 파이썬의 공식 스타일 가이드로써 파이썬을 어떻게 작성해야 좋은지를 알려준다.
각 회사별로 각자의 스타일 가이드가 존재하겠지만, 그 중에서도 가장 일반적으로 통용되는 가이드라인이라고 볼 수 있다.
그 외에 읽어보면 좋은 문서는 What’s New In Python {version}이다.
이 문서 자체는 PEP는 아니고, 그 버전의 새로운 기능이 적혀있는 PEP에 대한 인덱스이다.
2. OOP를 공부하라
OOP(Object-Oriented Programming)는 오늘날 프로그램 개발하는데 반드시 알아야할 상식이다.
다만, 파이썬은 Java, C++과는 조금 다른 OOP를 지원한다.
기본적인 원리는 같지만 지원하는 문법과 동작 방식이 다르다.
이러한 차이점을 알아야 파이썬의 특징을 비로소 이해할 수 있다.
여유가 된다면 Java나 C++의 OOP도 함께 공부하는 것을 권장한다.
하나의 언어만 공부해서는 그 언어를 이해할 수 없다.
3. Functional Programming을 공부하라
FP(Functional Programming)은 수학적 함수의 원리를 이용하는 프로그래밍 패러다임이다.
FP의 역사는 굉장히 오래됐지만, 다시 주목받기 시작한 것은 요근래의 일이다.
FP의 아버지라고 할 수 있는 언어인 LISP는 자연어 처리에 특화된 언어이다.
함수형 프로그래밍의 높은 안전성 덕분에 병렬 프로그래밍에서 우수한 성능을 보여준다.
현대의 많은 프로그래밍 언어들이 FP를 지원하려는 이유가 이것 때문이다.
Python도 많은 부분에서 FP를 지원하고 있다. OOP와 FP를 적절히 섞는다면 생산성과 안전성을 동시에 챙길 수 있다고 생각한다.
FP에 대한 파이썬 지침서는 이 링크를 참고하라.
4. 파이썬이 왜 느린지 공부하라
파이썬은 느리다.
보통 같이 언급되는 Node.js 런타임에 비해서도 매우 느리다.
이는 파이썬의 대표적인 구현체인 CPython의 태생적 문제에 기인한다.
CPython은 JIT 컴파일러를 지원하지 않고, 지원할 생각도 없다고 한다.
이는 CPython의 구조가 JIT 컴파일러를 도입해서 얻을 수 있는 이점이 없기 때문이다.
처음부터 JIT 컴파일러를 고려해서 만들어진 구현체인 PyPy가 있긴하다.
하지만 기존 파이썬 라이브러리와 호환이 되지 않는 문제가 있다.
아무튼 Python은 짧고 반복적으로 실행되는 프로그램에 적합하다고 할 수 있다.
그리고 속도보다 생산성을 중요하게 생각한다면 파이썬은 매우 좋은 언어이다.
그런데 정말 성능이 중요하다면 다른 언어로 포팅하는 것을 진지하게 고려해보라.