[서설]


파이썬이라는 도구가 다른 프로그래밍 언어(개발 플랫폼)보다 좋은 점은 별로 없습니다.

장점을 굳이 꼽아 보라면 중괄호랑 세미콜론 따위를 잘 안 쓰기 때문에 의사코드 용도로 쓰기 좋다는 정도일까요.

이 정도로 말했으니 맵고 자극적인 것을 좋아하는 한국 사람의 입맛에 맞추어서 주의(어그로)를 명확히 끌었으리라 생각합니다.

그럼 이쯤에서, 원인, 이유, 맥락 내지는 배경 지식이라고 부르는 역사 이야기를 줄줄이 할 수 있을 것 같습니다. (Lore explanation)


[BASIC vs Python]


오늘날 파이썬의 거의 유일한 장점은 C언어 계열의 문법을 벗어나서 의사코드 용도로 쓰기 좋다는 점입니다.

여기서 의사코드라는 것은 다시 말하면 비전공자를 비롯해서 누구에게나 쉽게 읽히는 코드라는 뜻이에요.

그런데 원래는, 프로그래밍 입문자에게 좋은 언어라고 소문난 베이직(BASIC)이 그 용도였습니다.

중괄호나 세미콜론처럼 자잘한 글자들이 눈이 침침해서 잘 안 보이는 분들을 위한 언어로서는 파이썬이 아니라 BASIC이 한 때 최고의 프로그래밍 언어였습니다.

그 옛날 80년대에는 PC라고 하면 다른 것은 모르겠다고 해도 BASIC 인터프리터는 무조건 기본으로 깔려 있었습니다.

게다가 보통 미국의 중고등학교에서는, 대수 문제를 컴퓨터로 풀이한다던지 하는 식으로 수학 과목의 일부로서 일반 학생들에게도 BASIC 프로그래밍을 가르쳤습니다.

그 정도로 BASIC이라는 언어는 인기 있고 대중적인 것이었습니다.[각주:1]

빌 게이츠를 비롯한 수많은 프로그래머들이 BASIC으로 입문했으며 컴퓨터 프로그래밍이라는 개념이 일반에 보급되는 현장의 최전선에 BASIC이 있었습니다.

BASIC의 전성기가 정점을 찍은 것은 90년대 초반 마이크로소프트의 비주얼 베이직(Visual Basic)이 출시되면서부터입니다.

하지만 비주얼 베이직은 마이크로소프트 윈도우즈용 프로그램만을 타겟으로 한다는 특징이 있습니다.

이 때부터 BASIC이라는 프로그래밍 언어는, 본격적으로 마이크로소프트 진영에서 밀어 주는 언어가 된 것 같습니다.

그러는 한편 오픈소스 진영에서는 BASIC을 역사의 쓰레기통에 던져 버리고 대신 파이썬을 개발해서 쓰기 시작했기 때문입니다.

비주얼 베이직이 개발된 것과 동시기에, 마이크로소프트가 지원하는 BASIC의 경쟁자로서 오픈소스 진영에서 개발한 것이 파이썬입니다.

실제로 파이썬을 창시한 귀도 반 로섬은 애초에 리눅스(유닉스/C) 프로그래머들에게 어필할 목적으로 파이썬을 만들었다고 밝히고 있어요.

그리고 파이썬은 함수 중괄호와 세미콜론의 부재로 대표되는 그 문법의 특징상 명백히 BASIC과 비슷한 위치에 있습니다.

그렇기 때문에, 파이썬은 마이크로소프트 진영이 '밀어 주는' BASIC에 대항하는 용도로 쓰일 수 있었던 것입니다.

그러한 의도가 실제 있었던지, 아니면 아무도 모르게 은연중에 그런 영향을 끼쳐 왔던지 간에 말이에요.

어쨌든 리눅스 프로그래머/오픈소스 진영의 지원을 받는 파이썬은 윈도우 프로그래머/마이크로소프트 진영의 BASIC과 정반대의 행보를 걸었습니다.

그리고 그것은 파이썬이 성공하는 계기가 되었습니다.

비록 초기의 파이썬은 다른 언어의 인기의 빛에 가려서 별로 주목 받지 못하고 묻혀 있었지만 말입니다.

그 말은, 본질은 원래 좋은 플랫폼인데 그만큼 좋게 평가 받지 못했다는 의미가 아니라, 그만큼 초기에는 별로 안 좋고 가치가 없었다는 뜻입니다.

반면 비주얼 베이직은 이미 인기가 높은 언어로부터 출발했기 때문에 압도적으로 높은 명성으로 널리 쓰이고 쉽게 전파되었습니다.

그런 BASIC에 망조가 들고 비주얼 베이직이 내리막길을 걸은 계기가 있으니, 비주얼 베이직이 네이티브 환경을 무시한 채 .NET 기반으로 넘어가 버린 사건입니다.

그 사연은 넘어가지만, 결국 이유야 어찌되었건 간에 VB.NET은 솔직히 그냥 망했고, 쓸모 없는 비인기 언어에요.

그와 정반대로, VB.NET 출시 이전 비주얼 베이직의 마지막 배포 버전인 VB6.0은 최소한 10년은 우려먹었다고 봅니다.

VB.NET이 기존작만큼도 파급력이 없고 BASIC의 인기를 망쳐 놨다는 것입니다.

결국 BASIC이 .NET의 몰락과 함께 외면 받는 사이 파이썬은 지속적인 성장으로 그 자리를 꿰차고 맙니다.

그것이, 지금의 파이썬 유행이 시작한 배경입니다.


[C계열 언어 vs Python]


2018년 현대의 모든 프로그래밍 언어의 기본은 C입니다.

그리고 중괄호로 함수를 정의하는 C언어 계열을 제외한 나머지 언어는 쉽게 망하고 대중성이 희박해지는 경향이 있습니다.

그런데 그런 와중에, 그 C계열이 아닌 나머지 언어 중에서는 위에서 서술했듯 오픈소스 진영에서 지원하는 파이썬이 마이크로소프트의 BASIC을 대체하는 하나의 대안으로서 그나마 명맥을 유지해 왔습니다.

C계열 문법을 채택하지 않는다는 그 특징 하나가 현재 유행하는 파이썬의 인기 비결이고, 정확히 그 점을 제외하면, 파이썬이 특별히 다른 프로그래밍 언어보다 좋은 점은 전혀 없습니다.


[MATLAB, R vs Python]


내가 생각해 낸 중요한 결론인데, 그런 별로 좋지도 않은 파이썬이 요즘 유행하게 된 원인은 단 한 가지밖에 없습니다.

전공자나 관련 분야에 오래 머무른 사람들이야 C계열 언어가 좋지만, 프로그래밍의 입문자라면 파이썬이나 BASIC의 그것처럼 의사코드 스타일의 쉬운 프로그래밍 문법을 선호할 수 있다는 점입니다.

프로그래머 입장에서 보기에 파이썬은, 리눅스에서 쓰기 좋고 간단한 자동화나 특히 서버 프로그램 작성 용도로는 나쁘지는 않습니다.

하지만 배포 방식이 지나치게 까다롭기 때문에 클라이언트 개발에는 파이썬이 전혀 유익하지 않습니다.

반면에 프로그래밍을 전공의 일부로서 학습하지 않는 통계/수학/기타 분야 연구자의 입장이라면 MATLAB이나 R 대신 파이썬을 쓰는 것은 상당히 좋은 선택입니다.

파이썬이 MATLAB이나 R보다는 확실히 좀 더 확장성 있고 다른 C계열 언어에 비해서도 입문자에게 비교적 문법이 친절한 편일 수 있으니까요.

C계열 문법을 채택하지 않는다는 그 특징 하나가 현재 유행하는 파이썬의 인기 비결이고, 정확히 그 점을 제외하면, 파이썬이 특별히 다른 프로그래밍 언어보다 좋은 점은 전혀 없습니다.


[파이썬을 비난]


파이썬이 많은 사람들의 주목을 받은 결정적인 계기는 2010년대 초중반 즈음에 MIT 등 미국의 주류 대학교에서 파이썬의 학습 과정을 정규 교과목으로 들여오면서부터인 것 같습니다.

지금 한국의 파이썬 유행은 때늦은 것입니다.

바보 같은 사람들은 자기가 독자적으로 판단해서 올바른 정책인지 나쁜 것(쓰레기)인지 분리해 내지 못하고, 이거야 하면 이거구나, 저거야 하면 저거구나, 다른 사람이 가는 길을 우르르 따라가는 경향이 있으니까.

나처럼 독단적인 인간에게는 비판의 대상입니다.

나는 낙관적인 사람 유형을 혐오합니다.

잘못, 오류, 차후의 위험이 있을 때, 그것을 못 보거나, 알면서도 가르쳐 주지 않는 사람보다는, 무엇이 나쁜지 무엇이 위험인지 감지하고 있는 그대로, 곧이 곧대로 말해서 바로잡고 넘어가는 비관적인 사람이 좋습니다.

그런 사람은 별로 인기는 없겠지만, 진짜 일꾼이랍니다.


개인적인 생각으로는, 파이썬을 학습용으로 활용하거나 배우는 것까지는 좋지만, 이것을 이용해서 의미 있는 것을 개발해 보려 한다면, 그것은 1분 1초가 모두 시간낭비입니다.

그 무슨, 인생이 짧아서 파이썬을 해야 하고 파이썬을 배워서 시간을 아낀다는 그 말 있는데, 마케팅(홍보)으로 그냥 으레 하는 소리에요.

믿어 봐야 거짓말이니까, 허위 과장 과대 광고로 신고해 주세요.

파이썬이 그리 나쁘다는 것은 아니지만, 그저 그래요.

전혀 좋지는 않습니다.

90년대, 00년대 프레임워크나 프로그래밍 기법들은 이제는 한물 간 아이돌처럼 촌스러운 것들로 보입니다.

그리고 파이썬이 딱 그 짝입니다.

분별력이 있다면, 이런 <쓰레기>는 알아서 분리수거하기를 바랍니다.


파이썬을 의사코드 정도로 쓴다는 용도 이외에, 실제 그것을 이용해서 프로그램을 개발한다는 것은 정말 어리석은 짓입니다.

최대한으로 낙관적으로 봐 줘도, 프로토타이핑 용도에요.

개발하려는 프로그램의 프로토타이핑 용도로 파이썬은 몹시 매우 아주 좋을지도 모릅니다.

하지만 상용 프로그램 같은 것들의 최종 결과물이 파이썬 프로그램이어서는 안 됩니다.

프로그래머가 아닌 일반 사용자들을 대상으로 하는 유용한 프로그램의 개발에 파이썬을 사용하는 것은 시간이 아깝습니다.

왜냐하면 파이썬은 그 태초부터 개발한 프로그램의 배포가 지나치게 까다롭다는 치명적인 결점이 있기 때문입니다.

파이썬을 새로 배워서 뭐 해 보겠다 써 보겠다는 사람들에게 반드시 이야기해 주고 싶은 단점이 까다로운 배포에요.


Github에서 파이썬 프로젝트 종종 보는데, 일반 유저들은 있죠.

파이썬 환경을 설정하고, 패키지 설치하고, 버전 맞춰 주고, requirements.txt 작성하는 그런 기본적인 배포 절차조차 제대로 이해하는 사람이 별로 없습니다.

cx_Freeze 같은 배포 모듈은 파이썬 코어 개발자들이 만드는 것도 아니고 잘 되지도 않아요.

(참고로 대부분의 파이썬 패키지는 그런 식으로 듣보잡 오픈소스인 경우가 많아서 신뢰성이 떨어집니다.)

매번 이거 깔고 저거 깔고 뭘 깔아야 해 이런 식으로 배포해야 하는데, 일반 사용자는 그런 수고를 감내하려고 하지 않습니다.

프로그래머 입장에서 보기에 파이썬은, 리눅스에서 쓰기 좋고 간단한 자동화나 특히 서버 프로그램 작성 용도로는 나쁘지는 않습니다.

하지만 배포 방식이 지나치게 까다롭기 때문에 클라이언트 개발에는 파이썬이 전혀 유익하지 않습니다.


파이썬이라면, 라이브러리(패키지)도 많고 오픈소스 진영에서 밀어 주기 때문에 얻는 몇 가지 이점이 있어서, 쓸 만하기는 합니다.

이미 파이썬으로 개발하는 것에 익숙한 사람이 다른 프레임워크나 언어로 갈아탈 필요는 없어 보입니다.

그러나, 새로 시작하는 사람에게 그리 추천하고 싶은 언어는 아닙니다.

파이썬은 초창기에 정교한 설계 없이 아무렇게나 만들어져서 약간 조잡하고 조악한 감도 있습니다.

무슨 놈의 버전이 허구언날 변해서 의존관계가 이것저것 서로 부딪히고 잘 호환되지 않는다던가.

그래서 저는 파이썬을 좋지도 나쁘지도 않다고 평가합니다.

좋다 이외의 모든 것은 지금 나의 분류 방식에 의하면 <쓰레기>와 동일하지만요.


[프로그래머에게 진짜 좋은 언어]


1. 인터프리터 언어 (스크립트)

직관적인 문법으로 런타임에 한 줄 한 줄 해석되고 어디서나 손쉽게 쌩쌩 돌아가는 스크립트 언어를 원한다면 파이썬보다 자바스크립트를 쓰는 편이 좋습니다.

파이썬이야 묵직한 인터프리터를 안 깔고는 못 쓰지만, 소위 브라우저라고 부르는 자바스크립트 해석기는 어디에나 있습니다.

요즘은 웹서버도 자바스크립트로 만들고, 머신러닝 프레임워크도 자바스크립트를 지원하며, 파이썬으로 주로 한다는 그 간단한 자동화를 굳이 파이썬 아닌 자바스크립트로 구현하지 말라는 법도 없습니다.

어떤 용도든 모든 면에서 파이썬보다 자바스크립트가 더 우수합니다.


2. 나머지 컴파일 언어

제대로 된 컴파일 언어로 빌드/배포를 하고 싶다면 개발 목표가 되는 플랫폼을 고려해서 C/C++/Java/Go/Swift/Objective-C/C# 가운데에서 하나 골라잡으면 족해요.

운영체제나 커널이나 마이크로 컨트롤러 따위의 근본적인 입출력 제어 및 시스템 프로그램에는 C,

리거시 어플리케이션이나 게임처럼 오래되고 성능 향상이 필요한 거대한 프로그램을 저수준 관점에서 개발한다면 C++를,

플랫폼 독립적이며 유지보수가 간편하고 정석적인 객체지향 프로그램 개발에는 Java나 Go,

맥이나 iOS 대상으로는 Swift나 Objective-C를 쓰면 좋고,

마지막으로 .Net 개발용으로는 VB.NET보다는 C#이 레퍼런스가 풍부하고 더 좋습니다.


...개인적으로 좋아하고 가장 강력하다고 생각하는 것은 Java와 Go입니다.



  1. https://www.youtube.com/watch?v=seM9SqTsRG4 [본문으로]
Top