지금 잘나가는 파이썬의 미래를 어둡게 보는 이유

학습 차원에서 틈틈이 해외 전문가들이 블로그나 미디어 그리고 책에서 쓴 글을 정리하고 있습니다. 이번 포스팅도 그중 하나고요. 거칠고 오역된 부분이 있을 수 있습니다. 제대로 번역되지 않은 부분은 확인주시면 반영토록 하겠습니다. 이번 글은 해외 개발자인 리아 모우타피스가 미디엄 블로그에 파이썬의 한계에 대해 지적한 글을 정리한 것입니다.

프로그래밍 커뮤니티가 파이썬의 진가를 이해하기까지는 몇십년이 걸렸다. 그러나 2010년대 초 이후, 파이썬은 번영했다. 결과적으로 C, C#, 자바, 자바 스크립트를 인기도에서 앞질렀다.

그러나, 언제까지 이 트렌드가 계속될까? 언제 파이썬은 결국 다른 언어에 의해 대체될까? 그리고 왜 그럴까?

파이썬의 정확한 만료일을 정하는 것은 매우 추측에 가까운 일일 것이다. 공상과학같은 길일 수 있다. 대신 나는 지금 파이썬가 인기를 확대해 나가고 있는 가치들과 미래 그것을 깰 약점들에 대해 평가할 것이다.

지금 당장 파이썬을 인기있게 만드는 것들

파이썬의 성공은 스택오버플로우 트렌드에서도 볼 수 있다. 스택오버플로우는 플랫폼에 올라오는 포스트들에 붙는 태그수를 측정한다. 스택오버플로우 규모를 고려하면, 이것은 프로그래밍 언어의 인기에 대한 꽤 좋은 지표다.

2009년부터 2020년까지 파이썬, C#, C++, 자바, 자바스크립트, R의 인기 다이어그램. 파이썬은 2018년부터 가장 높다.

R은 지난 몇년간 안정상태인 반면 많은 다른 언어들은, 꾸준한 하향세다. 파이썬의 성장은 멈추지 않는 것처럼 보인다. 스택오버플로우에 올라오는 질문들중 거의 14%에 파이썬이 태그로 붙어 있다. 이같은 트렌드는 강화되고 있다. 여기에는 몇가지 이유들이 있다.

파이썬은 오래됐다.

파이썬은 90년대 이후 존재했다. 이것은 성장할 많은 시간이 있었다는 것만 의미하지 않는다. 이것은, 또한 대규모 그리고 강력한 커뮤니티를 획득했다는 말도 된다.

따라서 당신이 파이썬으로 코딩하는 동안 어떤 문제가 있다면, 한번의 구글 검색으로 그것을 해결할 가능성이 매우 높다. 간단하게 말해 누군가 이미 당신이 겪는 문제에 직면했고 그것에 유용한 무언가를 작성했을 것이기 때문이다.

파이썬은 초보자 친화적이다.

프로그래머들이 훌륭한 자습서를 만들어줄 수 있는 수십년이라는  시간이 있었다는 것은 유일한 사실은 아니다. 그것 이상이 있다. 파이썬의 문법은 매우 사람이 읽을 수 있도록 돼 있다.

초보자 입장에서 데이터 유형을 특정해야할 필요가 없다. 당신은, 단지, 변수를 선언하면 된다. 파이썬은 그것이 정수인지 부동 소수점인지, 불(boolean: 컴퓨터와 전자공학에서 참과 거짓을 나타내는 숫자 1과 0만을 이용하는 방식) 방식인지 등을 문맥으로 이해할 수 있다. 이것은 초보자들에게는 대단한 이점이다.

당신이, C++에서 프로그램을 짜야 했다면, 당신은 부동 소수점을 정수로 바꾼 것 때문에 작성한 프로그램이 컴파일되지 않는다는 것이 얼마나 좌절스러운 것인지 언다.

당신이, 예전에 파이썬과 C++ 코드를 나란히 봤다면  파이썬이 얼마나 이해할만 것인지 알것이다. C++이 영어를 염두에 두고 디자인됐음에도, 파이썬 코드와 비교하면 읽기가 어렵다.

파이썬은 다재다능하다

피이썬은 오래전부터 있어왔고 개발자들은, 모든 용도를 위한 패키지를 만들었다. 요즘 당신은 거의 모든 것을 위한 패키지를 찾을 수 있다.

숫자들 벡터, 매트릭들을 다루고 싶은가? 넘파이( NumPy)가 당신의 친구다.

기술과 엔지니어링을 위한 계산을 하고 싶은가? 사이파이(SciPy)를 사용하라.

대규모로 데이터 처리나 분석을 하고 싶은가? 판다스(Pandas)를 쓰라.

인공지능을 시작하고 싶다면? 사이킷 런(Scikit-Learn)을 왜 사용하지 않는가?

당신이 하려고 하는 컴퓨팅 작업이 무엇이든, 그것을 위한 파이썬 패키지가 나와 있다. 이것은 파이썬을 최신 개발의 정상에 머물게 한다. 지난 몇년간 급증한 머신러닝에서도 확인할 수 있다.

파이썬의 단점-그리고 그것들은 파이썬에 치명적일지

앞서 정교한 설명을 기반으로 당신은 파이썬이 앞으로도 계속 톱에 머물 것이라고 상상할 수 있다. 그러나, 모든 기술들처럼, 파이썬에도 약점들이 있다. 나는 파이썬의 가장 중요한 결점들을 하나씩 살펴볼 것이다. 그리고, 이것들이 치명적인지 아닌지 조명할 것이다.

속도

파이썬은 느리다. 정말로 느리다. 평균적으로 당신이 파이썬으로 과제를 완료하려면 다른 언어로 할때 보다 2~10배 오래걸릴 것이다.

여기에는 다양한 이유들이 있다. 그중 하나는, 이것은 동적으로 입력된다는 것이다. 당신은 파이썬이 다른 언어들처럼 데이터 유형을 특성화할 필요가 없다는 것을 기억하라. 이것은, 많은 메모리가 사용될 필요가 있다는 것을 의미한다. 프로그램들은 특정 경우들에서 돌아가는 각각의 다양한 것들을 위해 충분한 공간을 확보할 필요가 있다. 많은 메모리 사용은 많은 컴퓨팅 시간을 의미한다.

또 다른 이유는 파이썬은 한번에 하나의 업무만 실행할 수 있다. 이것은 유연한 데이터 유형들의 결과다. 파이썬은 각각의 변수가 하나의 데이터 타입을 가지고 있는지 확인해야 한다. 병렬 처리는 그것을 망가뜨릴 수 있다.

비교하면 당신의 평균 웹브라우저는 십여개 다른 스레드들을 한번에 돌릴 수 있다. 일부 다른 이론들도 물론 있다.

그러나 결국 가장 중요한 것은, 속도 이슈는 중요하지 않다는 것이다. 컴퓨어와 서버들은 저렴해졌다. 엔드유저들은 그들이 앱로드에 0.001이든 0.01초가 걸리든  실제로는 신경쓰지 않는다.

스코프

당초 파이썬은 동적 스코핑(dynamic scoping)으로 시작됐다. 이것은 기본적으로 익스프레션(expression) 평가하려면 컴파일러는 우선 현재 블록을 찾고 그때 이후에 모든 호출 함수들을 찾는다.

동적 스코핑의 문제는 어떤 표현이, 모든 가능한 맥락에서 테스트될 필요가 있다는 것이다. 이것은 지루한 일이다. 대부분의 현대 프로그래밍 언어들이 정적 스코핑(static scoping)을 사용하는 이유다.

파이썬은, 정적 스코핑으로 전환을 시도했다. 하지만 실패했다. 통상 이너 스코프(inner scopes)는 아우터 스코프(outer scopes)를 보고 바꿀 수 있다.그러나 파이썬에선 이너 스코프는 아우터 스코프를 볼수는 있지만 바꿀 수는 없다. 이것은, 많은 혼란으로 이끈다.

람다스(Lambdas)

파이썬내에서 모든 유연성에도 불구하고, 람다스 사용은 오히려 제한적이다. 람다스는 파이썬에서 익스프레션만 될 수 있다. 스테이트먼트(statements)는 아니다.

반면에 변수 선언과 스테이트먼트는 항상 스테이트먼트다. 이것은 람다스가 이것을 위해 사용될 수 없다는 것을 의미한다.

익스프레션과 스테이트먼트 사이의 차이는 차라리 임의적이다. 다른 언어들에서는 일어나지 않는다.

화이트스페이스(Whitespaces)

파이썬에서 당신은 화이트스페이스와 인덴테이션(indentations)을 다양한 코드 레벨을 표시하기 위해 사용한다. 이것은 시각적으로 이해하는데 호소력 있고 직관적으로 만들어준다.

다른 언어는 예를 들면 C++은 보다 브레이시스(braces)와 세미콜론들에 의존한다. 이것은, 시각적으로 호소력이 없고, 초보자 친화적이지 않지만 이것은,코드를 보다 유지할 수 있게 만들어준다. 큰 프로젝트에서 이것은 보다 유용하다.

하스켈 같은 새 언어들은 이 문제를 해결한다. 이들 언어는, 화이트스페이스에 의존한다. 그러나 화이트스페이스 없이 가려는 이들을 위한 대안적인 문법도 제공한다.

모바일 개발

데스크톱에서 스마트폰으로의 전환을 목격하면서, 우리가 모바일 소프트웨어를 개발하기 위해 강력한 언어들을 필요로 하는 것은 분명하다. 그러나 많은 모바일 앱들은 파이썬으로 개발되고 있지 않다. 이것은 개발될 수 없다는 의미는 아니다. 모바일 앱 개발용으로 나온 키비(Kivy)라는 파이썬 패키지가 있다.

그러나 파이썬은 모바일을 염두에 두고 만들어지지 않았다. 그것은 기본적인 업무용으로는 그런대로 괜찮은 결과를 보여줄지 몰라도 당신이 할 수 있는 최고의 베팅은 모바일앱 개발을 위해 만들어진 언어를 사용하는 것이다.

모바일을 위해 광범위하게 사용하는 프로그래밍 프레임워크는 리액트 네이티브(React Native), 플루터(Flutter), 아이코닉(Iconic), 코도바(Cordova) 등을 포함하고 있다.

분명하게 랩톱이나 데스크톱 컴퓨터들은 앞으로도 오랫동안 있을 것이다. 그러나, 모바일이 이미 데스크톱 트래픽을 멀치감치 추월했다. 파이썬을 배우는 것은 경험이 많은 올라운드 개발자가 되는데 충분치 않다고 말하는 것이 안전하다.

런타임 에러들

파이썬 스크립트는 먼저 컴파일되고 이후 실행되지 않는다. 대신에, 파이썬 스크립트는 당신이 실행할떄마다 컴파일된다. 따라서 모든 코딩 오류는 런타임에서 나타난다. 이것은 좋지 않은 성능, 시간 소비, 많은 테스트의 필요성으로 이어진다.

테스트는 많은 것을 가르쳐주기 때문에 초보자들에게는 중요하다. 그러나 경험이 있는 개발자들 입장에서 파이썬에서 복잡한 프로그램을 디버깅해야 하는 것은 엉망으로 만든다. 성능 부족은, 파이썬에 타임스탬프를 설정하는 가장 큰 요인이다.

무엇이 미래 파이썬을 대체할까 그리고 언제?

프로그래밍 언어 시장에선 몇몇 새로운 경쟁자들이 있다.

러스트는 파이썬이 갖고 있는 것과 같은 종류의 안전을 제공한다. 변수는 뜻하지 않게 과도하게 작성되지 않는다. 그러나 오너십(ownership)과 차용(borrowing) 개념을 갖고 성능 이슈는 해결한다. 스택오버플로우 인사이트에 따르면 러스트는 최근 몇년간 가장 사랑받는 프로그래밍 언어다.

고(go)는 파이썬처럼 초보자들을 위해 좋다. 이것은 매우 간단하다. 그러면서도 코드를 유지하기 쉽게 해준다. 재미있는 포인트는 고 개발자들은 시장에서 가장 몸값이 비싼 프로그래들 사이에 있다는 것이다.

줄리아(Julia)는 매우 새로운 언어다. 파이썬과 일대일로 경쟁한다. 이것은 대규모 기술적인 계산의 차이를 메워준다. 일반적으로 누군가 매트랩(Matlab) 또는 파이썬을 사용하고 전체를 대규모에 필수적인 C++ 라이브러리로 패치했을 것이다. 이제 두 언어로 곡예를 하는 대신 줄리아를 사용할 수 있다.

시장에서는 또 다른 언어들이 있지만 러스트, 고, 줄리아는, 피이썬의 약점을 수정한 것들이다. 이들 언어는, 아직 오지 않은 뛰어난 기술들이다. AI에서 가장 주목할만 하다. 그들의 시장 점유율은 여전히 작지만, 스택오버플로우 태그 숫자가 보여주는 트렌드는 분명하다. 상승세다.

현재 파이썬의 보편적인 인기를 고러하면 새 언어가 파이썬을 대체하기까지는 6~7년 걸릴 것이다.

이들 언어는, 러스트, 고, 줄리아일 것이다. 현재 시점에서 어느 것이라고 말하기는 어렵다. 그러나 성능 이슈는 파이썬 아키텍처에서 근본적이라는 것을 감안하면, 하나는 필연적으로 그 자리를 차지할 것이다.

테크잇 뉴스레터를 전해드립니다!

오피니언 기반 테크 블로그 'TechIt'
테크 비즈니스를 보는 다양한 통찰들을 이메일로 간편하게 받아 볼 수 있습니다.

About the author

endgame
endgame

테크 블로거 / 공유할만한 글로벌 테크 소식들 틈틈히 전달하겠습니다

No more pages to load


TechIT

테크 비즈니스를 보는 다양한 통찰 '테크잇'

독자 여러분들께서 좋은 의견이나 문의 사항이 있으시면 아래 양식에 따라 문의 주시기 바랍니다.

Contact