파이썬은 다른 언어들이 비해 느리다라고 많이 얘기합니다.
그런데 유명한 오픈소스 프로젝트인 오픈스택(Openstack)이나 스포티파이(Spotify), 드롭박스(Dropbox), 레딧(Reddit)도 파이썬으로 개발되었답니다. 정말 파이썬이 느린걸까요? 이에 대한 반론을 Frank Andrade라는 데이터 과학, 웹스크랩핑, 파이썬 관련 글을 주로 블로깅하는 블로거가 업데이트한 내용을 가져와봤습니다. 블로그 내용에 일부 동의하지 않는 부분이 있지만
많은 부분 납득이 가는 글입니다.
(예를 들어 블로그에서는 성능이 중요하지 않다지만 사용하기 불편하기 없는 수준의 성능은 나와야 한다고 생각합니다. 또한, 코드 관리에 대해서도 논문이든 상용 프로덕트던지 재현가능한, 재사용가능한 모델과 연구, 서비스여야 한다고 저는 생각합니다)
✅ "Python is a slow programming language" (파이썬은 느린 언어입니다)
▶️ 실제로 Python은 C++이나 Java와 같은 다른 프로그래밍 언어보다 느리지만, 실제 애플리케이션(적어도 모든 단계에서)이나 소규모 프로젝트에서 속도가 항상 최우선 순위가 되는 것은 아닙니다.
✅ "In some cases, 0.01, 0.1, or 1 second of execution time doesn’t make any difference" (어떤 경우에는 실행 시간이 0.01초, 0.1초, 1초가 차이가 없습니다.)
▶️ 어떤 상황에서는 실행 속도보다 개발 속도가 더 중요할 수도 있습니다. 스포티파이(Spotify)가 파이썬을 사용한 이유를 살펴보면 언어의 속도보다 개발 속도를 우선시 했기에 이 언어를 선택했습니다. 예를 들어 Python은 작업을 자동화하는 데 널리 사용되는 언어입니다. 자동화하려는 작업이 있다면 스크립트를 실행하는 데 0.1초가 걸리든 1초가 걸리든 상관없습니다. 가장 중요한 것은 해당 자동화를 생성하기 위해 코드를 작성하는 데 소요되는 시간입니다.
✅ 파이썬은 빠른 확장을 도와줍니다.
▶️ Python은 크로스 플랫폼에서 빠르게 확장이 가능하기에 좋은 선택이 될수 있습니다.
Dropbox의 한 엔지니어가 플랫폼에서 Python을 선택한 이유는 가독성, 크로스 플랫폼지원, 학습의 용이성때문이라고 합니다. 새로운 기능을 구현하고, 테스트하고, 배포하는 데 있어 Python의 빠른 개발 주기는 매우 중요했습니다.
현재 Dropbox는 Go, Rust같은 다른 프로그래밍 언어도 함께 사용합니다. 백엔드에 Python을 사용하는 스포티파이(Spotify), 레딧(Reddit)은 다른 프로그래밍 언어도 사용합니다. Spotify의 백엔드는 ZeroMQ를 통해 자체 메시징 프로토콜로 연결된 여러 상호 의존적인 서비스로 구성되어 있습니다. 이러한 서비스 중 약 80%가 Python으로 작성되었습니다. 속도가 중요한 프로그램에서는 다른 언어를 사용할수 있지만, 파이썬과 관련성이 줄어들지는 않습니다.
✅ "In some fields programming is a means to an end" (일부 분야에서는 프로그래밍이 목적의 수단이 되기도 합니다.)
▶️ 파이썬은 컴퓨터 공학을 전공하지 않은 통계학자나, 데이터 분석가, 데이터 과학자, 관리자 및 기타 비전공 프로그래머가 가장 먼저 사용하는 언어가 파이썬일 것입니다. 그 이유는 , 파이썬은 프로그래밍을 해본 적이 없는 사람도 쉽게 접근할 수 있는 언어이기 때문입니다.
데이터분석가와 과학자는 수백줄의 코드를 유지 관리할 필요가 없고, 시스템 리소스 관리보다 분석과 모델의 성능이 더 중요합니다. Python은 수많은 라이브러리가 존재하고, 이것을 통해 빠르게 작업을 완료할수 있습니다. 머신러닝을 구현하고 싶으면 Sklearn, TensorFlow를, 웹개발을 하고 싶으면 Flask를, 데이터분석을 하고 싶으면 Pandas, Numpy를 사용하면 됩니다.
이런 파이썬 라이브러리 숫자는 계속 늘어나고 있고, 이에 따라 굳이 원하는 기능을 처음부터 개발할 필요도, 그 기능을 개발하기 위해 비싼 전문가를 고용할 필요도 없습니다.