2021.01.29

칼럼 | 기업이 파이썬 인기에 편승해야 할까?··· 찬반 양론 8가지

Peter Wayner | InfoWorld
분명 파이썬(Python)이 소프트웨어 개발자들 사이에서 큰 인기를 끌고 있으며 그 인기는 지속적으로 높아질 것이다. 매월 프로그래밍 언어의 인기도를 공개하는 소프트웨어 업체 티오베(TIOBE)는 지난해 11월 파이썬이 처음으로 자바(Java)를 제치고 2위 자리에 올랐다고 밝혔다. 



이 외에도 파이썬의 성공을 나타내는 지표는 많은데, 이는 그리 놀라운 일도 아니다. 실제로 다른 순위에서도 파이썬이 약진을 기록했다. 예를 들어, IEEE는 매년 적합성에 따라 언어를 평가하는데, 2020년에는 파이썬이 목록의 최상단에 포함됐다. 

컴퓨터 언어의 인기 순위는 고등학교 아이들이 파티를 하면서 학교에서 가장 인기있는 아이를 고르라고 하는 것과 별반 다르지 않다. 작성된 코드의 줄 수를 세어보는 경우, 일부 반대 의견을 가진 사람들이 짧고 읽기 쉬운 코드를 원한다고 지적할 것이다. 프로덕션 시 실행되는 코드를 측정하려 한다면, 최고의 언어는 중독성 있는 스마트폰용 게임을 개발하기 위해 사용되는 것이다. 손쉬운 지표는 없지만 모든 수치를 종합해 보면 개략적으로 유용한 해답을 얻을 수 있다.

성공이 성공을 부른다. 오픈소스 세계에서 온, 한 때 하찮았던 스크립트 작성 언어의 중요성이 증가하고 있음을 부인하는 사람은 거의 없다. 파이썬의 부상으로 많은 기업 관리자가 이제 이 유행에 편승할 때가 되었는지 궁금할 것이다. 이 질문의 답을 얻기 위해 본지는 파이썬에 합류하는 것이 현명한 8가지의 이유와 수십 년은 더 기다려야 하는 8가지 이유를 정리해 보았다.


파이썬은 인기가 있다

그렇다. 엄마들은 모두가 쥐떼처럼 뛰어내린다고 해서 다리에서 뛰어내릴 필요가 없다고 말하지만 아이에게는 멋진 아이와 어울리기 위해 서둘러 뛰어내려야 하는 나름대로의 실질적인 이유가 있다. 프로그래머를 고용하기는 더 쉬우며, 대부분 입문 프로그래밍 수업에 파이썬을 도입한 대학에서 이제 막 졸업한 젊은 세대는 더욱 그렇다. 파이썬의 범용성 덕분에 더 많은 새로운 라이브러리와 도구가 제공되고 있으며 머신러닝에서 보았듯이 최신 기술은 인기 언어로 작성될 가능성이 높다.


인기는 기업에게 쓸모가 없다

해변에서 읽을 소설이 필요한 경우에는 적극 동참할 수 있지만 수십 년 동안 사용해야 하는 소프트웨어 스택을 관리하는 경우에는 이야기가 다르다. 지금까지 팀이 새로운 인기있는 언어를 채용했다면 나이테 같은 계층으로 이루어진 코드 집합을 얻었을 것이다. 새로운 파일은 자바스크립트(JavaScript)로 채워지고, 루비(Ruby), 자바 등이 있으며 콜드퓨전(ColdFusion)에 일부 라이브러리가 스노볼(SNOBOL)로 작성된 코볼(COBOL)로 채워질 수 있다. 코드베이스가 모든 코딩 역사를 그대로 담고 있기를 원하는 이는 없을 것이다.

이로 인해 유지보수가 불가능해진다. 새로운 코드 작성자는 심지어 수년 전에 만들어진 코드를 읽을 수조차 없기 때문에, 이것을 하나의 블랙박스처럼 여기고 데이터를 원하는 형태로 변환하기 위해 무한한 글루 루틴(Glue Routine)을 작성한다. 새로운 작업이 많이 진행되지는 않지만 나이테는 점차 두꺼워지고 많아진다. 

스택은 누계가 포함된 트랜잭션 원장을 유지하는 등의 단순한 기능은 수행할 수 있지만 코드가 수백만 줄에 달하며 데이터는 반지의 제왕(Lord of the RIngs) 3부작만큼 벅찬 영웅의 임무가 된다. 스택은 그 과정에서 데이터를 18번이나 변환하고 다시 코볼의 마법사가 확정적인 비즈니스 로직을 실행하는 코드의 중심부로 되돌아올 수 있다. 

일관성은 지루할 수는 있지만 기업에 필요한 것은 흥미로운 코드가 아니다. 제대로 작동하는 소프트웨어가 필요하다.


사람들은 스크립트 작성 언어를 좋아한다

파이썬 같은 언어는 프로그래머들이 작은 문제를 해결해야 하는 경우가 많았기 때문에 개발됐다. 이들은 IDE를 시작하고 적절한 라이브러리가 로드 될 때까지 기다린 후, 코드 저장소를 만들고, CI/CD 빌드 경로를 구성하는 대신에 몇 줄만 작성하고 끝내고 싶어한다. 작은 코드 토막들이 많다고 해서 잘못된 것은 아니다. 몇 줄을 작성하는 것이 쉽다면 수백만 줄을 작성하는 것으로 확장하는 것은 당연한 수순이다.


기업을 위한 스크립트 작성 언어에는 스프레드시트가 있다

많은 프로그래머가 스프레드시트에서 얼마나 많은 연산이 이뤄지고 있는지 모를 수 있다. 스스로를 코드 작성자라고 생각하지 않는 사람이 실제로 얼마나 많은 코드 작성을 하는지 깨닫지 못하기 때문이다. 프로그래머는 숫자가 없다면 도구를 워드 프로세서로 치부할 수 있지만 스프레드시트가 얼마나 유용하고 적응적인지 깨닫지 못한다. 

그래서 많은 기업 도구가 보고서를 스프레드시트로 출력하며 많은 비즈니스 팀이 스프레드시트를 공통어로 사용하고 있는 것이다. 파이썬은 일부 과학 실험실에 좋은 도구이지만 사무실 사람들이 이미 알고 있는 완벽하게 좋은 도구를 외면할 이유가 되지 않는다. 


동적 언어(Dynamic Language), 재미 있다

파이썬 코딩이 빠를 수 있는 이유 가운데 하나는 프로그래머가 데이터 유형을 정의하느라 시간을 보낼 필요가 없기 때문이다. 해석 프로그램은 실행 중에 오류를 찾을 만큼 충분한데, 머신이 대신 일을 하게 하는 것도 나쁘지 않다. 


타입 언어(Typed languages), 대규모 작업에 더 좋다

대규모 작업에 더 좋다는 주장에 대한 반대 의견도 많지만 다이내믹 언어에 대한 한 가지 공통적인 불편사항은 프로그램 일부의 오류가 결국 전혀 다른 곳에서의 충돌로 이어진다는 점이다. 디버깅(Debugging)은 연결점을 찾는 것을 의미한다. 지난 여름에 파이썬 오류를 찾느라 고생한 한 프로그래머는 다이내믹 언어의 타입 부재를 저주하기 시작했다.

타입 언어의 경우, 개발자는 심지어 코드를 처음으로 실행하기도 전에 이런 문제를 찾는 데 도움이 될 수 있는 추가적인 정보 계층을 추가해야 한다. 이런 경우 대규모 팀은 데이터 유형에 대한 서로의 생각을 파악하고 ‘i’라는 이름의 변수가 정수라는 사실을 알 필요가 없기 때문에 협력하는 데 도움이 된다. 다행히도 파이썬은 형태 힌팅(Hinting)을 도입하고 있다. 형태 검사를 원한다면 팀이 힌트를 추가하기만 하면 된다.


장난감은 아이들만을 위한 것이 아니다

파이썬의 성공은 도구의 발전과 일반 프로그래머의 등장을 반영하는 것에 불과하다. 소위 말하는 ‘노 코드(No Code)’ 혁명이 일부 계층을 휩쓸고 지나가듯이 프로그래머가 아닌 사람들이 일부 기본적인 도구로 무엇인가를 할 수 있다는 사실을 깨닫고 있다. 물론, 제대로 된 코드 작성자는 파이썬 같은 스크립트 작성 언어를 장난감으로 치부할 수 있지만 그것으로도 작업을 처리할 수 있다면 상관없다. 


제대로 된 프로젝트는 제대로 된 도구를 필요로 한다

10줄의 코드를 작성하기에 좋은 언어가 1만 줄의 스택 또는 1,000만 줄의 거대한 것에 반드시 좋은 것은 아니다. 수년 동안 프로그래머들은 규율과 일관성이 있는 대규모 코드베이스를 정리하는 스마트한 구조를 추가했다. 파이썬 애호가들은 이런 아이디어를 파이썬에도 접목시켰지만 하위 호환성이 희생되는 경우가 많았다. 자바나 C/C++ 같은 언어가 발전해 기업 코드 작성자들이 해야 할 일을 처리하게 되었다.


머신러닝과 데이터 사이언스가 붐이다

예전에 IT 팀은 재고를 관리하고 장부를 유지하는 것만으로 충분했다. 현재 많은 기업이 복잡한 수학과 인공 지능(AI)을 사용하는 더욱 정교한 접근방식을 탐구하고 있다. 파이썬은 이런 세계에서 매우 인기가 있었다. 물론, 누군가 머신러닝 라이브러리를 코볼로 다시 작성하기를 기다리거나 약간의 추가적인 글루 코드를 작성할 수도 있다.


유행을 따를 때는 신중해야 한다

머신러닝 같은 접근방식이 양자 컴퓨터의 과냉 코어의 양자 결함만큼 오래갈지 판단하기에는 이르지만, 때로는 IT 직원이 이런 결정을 내리지 않는다. 코드베이스를 망치지 않으면서 목적을 달성하는 방법을 찾는 것이 어렵다. 일각에서는 일관성을 최대한 높이기 위해 파이썬을 이런 프로세스 안에서만 사용하고 작업의 상당 부분을 하나의 표준 언어로 수행해야 한다고 주장하기도 한다.


파이썬 생태계가 성장하고 있다

물리 수업에서는 관성이 중요한 개념일 수 있지만 질량이 없는 프로그래밍 언어 같은 것에는 적용되지 않아야 한다. 그럴지도 모른다. 하지만 흥분의 피드백 루프가 존재해 더 많은 코드 작성자가 유인된 후 더 많은 라이브러리를 작성해 더 많은 코드 작성자가 유입된다는 점을 부인할 수는 없다. 

티오베 차트에 파이썬이 등장했다는 사실에는 모든 옵션을 살펴보고 파이썬을 선택한 수천 명의 코드 작성자의 개인적인 결정이 반영되어 있다. 이에 관해 오래 생각하면서 조금 더 지켜보거나, 아니면 군중들과 함께 가면 된다. 


성장이 일정하지 않았다              

자바 같은 프로그래밍 언어는 천천히 발전하면서 아무 것도 망가뜨리지 않는 것을 중요하게 여긴다. 파이썬 팀은 진행 과정에 대해 그렇게 생각하지 않는 것 같다. 파이썬 2.6에서 파이썬 3.0으로의 전환은 중요한 문제였으며, 이 두 버전은 서로 다른 언어라는 점은 모두가 알고 있다.

하지만 작은 변화도 그만큼 불안한 경우가 많다. 파이썬 3.9 릴리즈 노트를 보면 중요한 기능이 반환한 오류 유형뿐만이 아니라 대체 기능의 동작을 변경했음을 알 수 있다. 실질적으로 개선됐을 수도 있고 다른 새로운 기능도 멋지지만 각 업그레이드를 다른 언어로 취급하는 것이 현명하다. 따라서 현실적으로 현재 파이썬의 변종은 손가락으로 셀 수 있는 것보다 많다.


파이썬은 운영체제의 일부처럼 보인다

리눅스는 C와 어셈블리 코드로 시작했을 수 있지만 파이썬은 모든 곳에 적용되고 있는 것 같다. 이제 여러 리눅스 배포판의 중요한 부분으로 자리잡고 있으며, 사람들은 자신의 커널 버전에 파이썬을 추가하는 방법에 관해 질문하고 있다. 리눅스 기기를 사용할 생각이라면 파이썬이 도움이 될 것이다.


파이썬과 리눅스, 상호 의존적이다

파이썬과 리눅스의 긴밀한 연결성은 단점이 있다. 지난해 봄, 필자는 우분투 19.04가 기본적으로 파이썬 3.7에 의존하고, 우분투 18.04가 파이썬 3.6에 의존하고 있기 때문에 며칠을 낭비했다. 필자에게 주어진 코드 스택은 우분투 18.04 기기에서는 작동하지만 새로운 버전의 우분투가 적용된 기기로 옮기면 실패했다. 파이썬 3.6과 3.7 사이에서 무엇인가 변경되었다. 하지만 우분투 19.04 기기의 파이썬 3.7을 파이썬 3.6으로 대체하면 OS에 작은 결함이 보였다.

며칠 동안 파이썬 설치를 돕는 다양한 도구와 씨름한 후 우분투 19.04에서 우분투 18.04로 다운그레이드하고 잊어버렸다. 파이썬 커뮤니티는 이런 문제에 관해 잘 알고 있었으며 이를 관리하기 위한 도구를 개발하고 있지만, 이런 파이썬 관리 도구의 확산으로 인해 또 다른 메타 혼란 계층이 추가되고 있다. 이 프로젝트의 한 조력자는 Pip를 사용하고 다른 조력자는 아나콘다(Anaconda)를 사용하고 있었으며, 두 사람 모두 자신이 사용하는 것으로 변경하면 필자의 문제가 사라질 것이라고 주장했다. 하지만 실제로는 그렇지 않았다.

앞서 설명한 문제는 연구실에서 데이터를 압축하기 위해 몇 줄만 작성하는 과학자에게는 문제가 되지 않는다. 그들은 다른 버전을 다시 설치하거나 컨테이너 안에서 실행시킬 수 있다. 하지만 이런 문제는 다양한 버전의 언어를 사용해 여러 기기에서 수년에 걸쳐 작성된 대형 코드를 유지하려는 사람에게 심각한 문제가 될 수 있다. 파이썬 3.2.5에서 코드베이스가 멈춰버린 기업이 학교에서 파이썬 3.9를 배운 신입을 채용한다면 어떻게 될까? 


파이썬, 모든 곳에서 사용한다

오픈소스 전통으로 인해 다양한 테스트와 혁신이 이뤄졌고 스택을 만들 뿐 아니라 운용하기 위해서도 많은 코드를 작성하게 되었다. 단일 기업이 개발하고 유지하는 일부 언어는 컴파일러가 하나이지만 파이썬 개발자들은 자신이 선호하는 것이 한 손으로 다 꼽을 수 없을 만큼 많다고 말할 수 있다. 수십 가지를 선택할 수 있다.


선택의 압제는 현실이다

선택권이 많다는 것이 정말로 좋은 것일까? 아니면 신뢰할 수 있는 하나의 확실한 선택이 좋을까? 오픈소스 코드가 좋기는 하지만 옵션을 시도해 보고 결함을 패치하며 제대로 작동할 때까지 씨름하기 위한 추가적인 지원이 제공되지 않는다.


파이썬, 쉽다

기업들은 조금씩 앞으로 전진해야 한다. 파이썬은 좋은 도구이며 사라지지 않을 것이다. 현재 교육 시스템에 깊이 뿌리내리고 있기 때문에 점차 공통어가 되어가고 있다.

팀들은 서서히 미래로 마이그레이션해야 하며 파이썬을 더 도입하는 것이 그 방법이다. 문제는 튼튼한 전략을 기반으로 이를 신중하게 수행하는 방법이다. 파이썬은 시간이나 인프라에 크게 투자할 필요가 없다는 것이 장점이다. 원래 소규모 작업을 위해 개발됐다. 작게 시작해 이점을 누리고 관리할 수 있다. 큰 작업은 나중에 합리적인 경우 수행할 수 있다.  editor@itworld.co.kr 



2021.01.29

칼럼 | 기업이 파이썬 인기에 편승해야 할까?··· 찬반 양론 8가지

Peter Wayner | InfoWorld
분명 파이썬(Python)이 소프트웨어 개발자들 사이에서 큰 인기를 끌고 있으며 그 인기는 지속적으로 높아질 것이다. 매월 프로그래밍 언어의 인기도를 공개하는 소프트웨어 업체 티오베(TIOBE)는 지난해 11월 파이썬이 처음으로 자바(Java)를 제치고 2위 자리에 올랐다고 밝혔다. 



이 외에도 파이썬의 성공을 나타내는 지표는 많은데, 이는 그리 놀라운 일도 아니다. 실제로 다른 순위에서도 파이썬이 약진을 기록했다. 예를 들어, IEEE는 매년 적합성에 따라 언어를 평가하는데, 2020년에는 파이썬이 목록의 최상단에 포함됐다. 

컴퓨터 언어의 인기 순위는 고등학교 아이들이 파티를 하면서 학교에서 가장 인기있는 아이를 고르라고 하는 것과 별반 다르지 않다. 작성된 코드의 줄 수를 세어보는 경우, 일부 반대 의견을 가진 사람들이 짧고 읽기 쉬운 코드를 원한다고 지적할 것이다. 프로덕션 시 실행되는 코드를 측정하려 한다면, 최고의 언어는 중독성 있는 스마트폰용 게임을 개발하기 위해 사용되는 것이다. 손쉬운 지표는 없지만 모든 수치를 종합해 보면 개략적으로 유용한 해답을 얻을 수 있다.

성공이 성공을 부른다. 오픈소스 세계에서 온, 한 때 하찮았던 스크립트 작성 언어의 중요성이 증가하고 있음을 부인하는 사람은 거의 없다. 파이썬의 부상으로 많은 기업 관리자가 이제 이 유행에 편승할 때가 되었는지 궁금할 것이다. 이 질문의 답을 얻기 위해 본지는 파이썬에 합류하는 것이 현명한 8가지의 이유와 수십 년은 더 기다려야 하는 8가지 이유를 정리해 보았다.


파이썬은 인기가 있다

그렇다. 엄마들은 모두가 쥐떼처럼 뛰어내린다고 해서 다리에서 뛰어내릴 필요가 없다고 말하지만 아이에게는 멋진 아이와 어울리기 위해 서둘러 뛰어내려야 하는 나름대로의 실질적인 이유가 있다. 프로그래머를 고용하기는 더 쉬우며, 대부분 입문 프로그래밍 수업에 파이썬을 도입한 대학에서 이제 막 졸업한 젊은 세대는 더욱 그렇다. 파이썬의 범용성 덕분에 더 많은 새로운 라이브러리와 도구가 제공되고 있으며 머신러닝에서 보았듯이 최신 기술은 인기 언어로 작성될 가능성이 높다.


인기는 기업에게 쓸모가 없다

해변에서 읽을 소설이 필요한 경우에는 적극 동참할 수 있지만 수십 년 동안 사용해야 하는 소프트웨어 스택을 관리하는 경우에는 이야기가 다르다. 지금까지 팀이 새로운 인기있는 언어를 채용했다면 나이테 같은 계층으로 이루어진 코드 집합을 얻었을 것이다. 새로운 파일은 자바스크립트(JavaScript)로 채워지고, 루비(Ruby), 자바 등이 있으며 콜드퓨전(ColdFusion)에 일부 라이브러리가 스노볼(SNOBOL)로 작성된 코볼(COBOL)로 채워질 수 있다. 코드베이스가 모든 코딩 역사를 그대로 담고 있기를 원하는 이는 없을 것이다.

이로 인해 유지보수가 불가능해진다. 새로운 코드 작성자는 심지어 수년 전에 만들어진 코드를 읽을 수조차 없기 때문에, 이것을 하나의 블랙박스처럼 여기고 데이터를 원하는 형태로 변환하기 위해 무한한 글루 루틴(Glue Routine)을 작성한다. 새로운 작업이 많이 진행되지는 않지만 나이테는 점차 두꺼워지고 많아진다. 

스택은 누계가 포함된 트랜잭션 원장을 유지하는 등의 단순한 기능은 수행할 수 있지만 코드가 수백만 줄에 달하며 데이터는 반지의 제왕(Lord of the RIngs) 3부작만큼 벅찬 영웅의 임무가 된다. 스택은 그 과정에서 데이터를 18번이나 변환하고 다시 코볼의 마법사가 확정적인 비즈니스 로직을 실행하는 코드의 중심부로 되돌아올 수 있다. 

일관성은 지루할 수는 있지만 기업에 필요한 것은 흥미로운 코드가 아니다. 제대로 작동하는 소프트웨어가 필요하다.


사람들은 스크립트 작성 언어를 좋아한다

파이썬 같은 언어는 프로그래머들이 작은 문제를 해결해야 하는 경우가 많았기 때문에 개발됐다. 이들은 IDE를 시작하고 적절한 라이브러리가 로드 될 때까지 기다린 후, 코드 저장소를 만들고, CI/CD 빌드 경로를 구성하는 대신에 몇 줄만 작성하고 끝내고 싶어한다. 작은 코드 토막들이 많다고 해서 잘못된 것은 아니다. 몇 줄을 작성하는 것이 쉽다면 수백만 줄을 작성하는 것으로 확장하는 것은 당연한 수순이다.


기업을 위한 스크립트 작성 언어에는 스프레드시트가 있다

많은 프로그래머가 스프레드시트에서 얼마나 많은 연산이 이뤄지고 있는지 모를 수 있다. 스스로를 코드 작성자라고 생각하지 않는 사람이 실제로 얼마나 많은 코드 작성을 하는지 깨닫지 못하기 때문이다. 프로그래머는 숫자가 없다면 도구를 워드 프로세서로 치부할 수 있지만 스프레드시트가 얼마나 유용하고 적응적인지 깨닫지 못한다. 

그래서 많은 기업 도구가 보고서를 스프레드시트로 출력하며 많은 비즈니스 팀이 스프레드시트를 공통어로 사용하고 있는 것이다. 파이썬은 일부 과학 실험실에 좋은 도구이지만 사무실 사람들이 이미 알고 있는 완벽하게 좋은 도구를 외면할 이유가 되지 않는다. 


동적 언어(Dynamic Language), 재미 있다

파이썬 코딩이 빠를 수 있는 이유 가운데 하나는 프로그래머가 데이터 유형을 정의하느라 시간을 보낼 필요가 없기 때문이다. 해석 프로그램은 실행 중에 오류를 찾을 만큼 충분한데, 머신이 대신 일을 하게 하는 것도 나쁘지 않다. 


타입 언어(Typed languages), 대규모 작업에 더 좋다

대규모 작업에 더 좋다는 주장에 대한 반대 의견도 많지만 다이내믹 언어에 대한 한 가지 공통적인 불편사항은 프로그램 일부의 오류가 결국 전혀 다른 곳에서의 충돌로 이어진다는 점이다. 디버깅(Debugging)은 연결점을 찾는 것을 의미한다. 지난 여름에 파이썬 오류를 찾느라 고생한 한 프로그래머는 다이내믹 언어의 타입 부재를 저주하기 시작했다.

타입 언어의 경우, 개발자는 심지어 코드를 처음으로 실행하기도 전에 이런 문제를 찾는 데 도움이 될 수 있는 추가적인 정보 계층을 추가해야 한다. 이런 경우 대규모 팀은 데이터 유형에 대한 서로의 생각을 파악하고 ‘i’라는 이름의 변수가 정수라는 사실을 알 필요가 없기 때문에 협력하는 데 도움이 된다. 다행히도 파이썬은 형태 힌팅(Hinting)을 도입하고 있다. 형태 검사를 원한다면 팀이 힌트를 추가하기만 하면 된다.


장난감은 아이들만을 위한 것이 아니다

파이썬의 성공은 도구의 발전과 일반 프로그래머의 등장을 반영하는 것에 불과하다. 소위 말하는 ‘노 코드(No Code)’ 혁명이 일부 계층을 휩쓸고 지나가듯이 프로그래머가 아닌 사람들이 일부 기본적인 도구로 무엇인가를 할 수 있다는 사실을 깨닫고 있다. 물론, 제대로 된 코드 작성자는 파이썬 같은 스크립트 작성 언어를 장난감으로 치부할 수 있지만 그것으로도 작업을 처리할 수 있다면 상관없다. 


제대로 된 프로젝트는 제대로 된 도구를 필요로 한다

10줄의 코드를 작성하기에 좋은 언어가 1만 줄의 스택 또는 1,000만 줄의 거대한 것에 반드시 좋은 것은 아니다. 수년 동안 프로그래머들은 규율과 일관성이 있는 대규모 코드베이스를 정리하는 스마트한 구조를 추가했다. 파이썬 애호가들은 이런 아이디어를 파이썬에도 접목시켰지만 하위 호환성이 희생되는 경우가 많았다. 자바나 C/C++ 같은 언어가 발전해 기업 코드 작성자들이 해야 할 일을 처리하게 되었다.


머신러닝과 데이터 사이언스가 붐이다

예전에 IT 팀은 재고를 관리하고 장부를 유지하는 것만으로 충분했다. 현재 많은 기업이 복잡한 수학과 인공 지능(AI)을 사용하는 더욱 정교한 접근방식을 탐구하고 있다. 파이썬은 이런 세계에서 매우 인기가 있었다. 물론, 누군가 머신러닝 라이브러리를 코볼로 다시 작성하기를 기다리거나 약간의 추가적인 글루 코드를 작성할 수도 있다.


유행을 따를 때는 신중해야 한다

머신러닝 같은 접근방식이 양자 컴퓨터의 과냉 코어의 양자 결함만큼 오래갈지 판단하기에는 이르지만, 때로는 IT 직원이 이런 결정을 내리지 않는다. 코드베이스를 망치지 않으면서 목적을 달성하는 방법을 찾는 것이 어렵다. 일각에서는 일관성을 최대한 높이기 위해 파이썬을 이런 프로세스 안에서만 사용하고 작업의 상당 부분을 하나의 표준 언어로 수행해야 한다고 주장하기도 한다.


파이썬 생태계가 성장하고 있다

물리 수업에서는 관성이 중요한 개념일 수 있지만 질량이 없는 프로그래밍 언어 같은 것에는 적용되지 않아야 한다. 그럴지도 모른다. 하지만 흥분의 피드백 루프가 존재해 더 많은 코드 작성자가 유인된 후 더 많은 라이브러리를 작성해 더 많은 코드 작성자가 유입된다는 점을 부인할 수는 없다. 

티오베 차트에 파이썬이 등장했다는 사실에는 모든 옵션을 살펴보고 파이썬을 선택한 수천 명의 코드 작성자의 개인적인 결정이 반영되어 있다. 이에 관해 오래 생각하면서 조금 더 지켜보거나, 아니면 군중들과 함께 가면 된다. 


성장이 일정하지 않았다              

자바 같은 프로그래밍 언어는 천천히 발전하면서 아무 것도 망가뜨리지 않는 것을 중요하게 여긴다. 파이썬 팀은 진행 과정에 대해 그렇게 생각하지 않는 것 같다. 파이썬 2.6에서 파이썬 3.0으로의 전환은 중요한 문제였으며, 이 두 버전은 서로 다른 언어라는 점은 모두가 알고 있다.

하지만 작은 변화도 그만큼 불안한 경우가 많다. 파이썬 3.9 릴리즈 노트를 보면 중요한 기능이 반환한 오류 유형뿐만이 아니라 대체 기능의 동작을 변경했음을 알 수 있다. 실질적으로 개선됐을 수도 있고 다른 새로운 기능도 멋지지만 각 업그레이드를 다른 언어로 취급하는 것이 현명하다. 따라서 현실적으로 현재 파이썬의 변종은 손가락으로 셀 수 있는 것보다 많다.


파이썬은 운영체제의 일부처럼 보인다

리눅스는 C와 어셈블리 코드로 시작했을 수 있지만 파이썬은 모든 곳에 적용되고 있는 것 같다. 이제 여러 리눅스 배포판의 중요한 부분으로 자리잡고 있으며, 사람들은 자신의 커널 버전에 파이썬을 추가하는 방법에 관해 질문하고 있다. 리눅스 기기를 사용할 생각이라면 파이썬이 도움이 될 것이다.


파이썬과 리눅스, 상호 의존적이다

파이썬과 리눅스의 긴밀한 연결성은 단점이 있다. 지난해 봄, 필자는 우분투 19.04가 기본적으로 파이썬 3.7에 의존하고, 우분투 18.04가 파이썬 3.6에 의존하고 있기 때문에 며칠을 낭비했다. 필자에게 주어진 코드 스택은 우분투 18.04 기기에서는 작동하지만 새로운 버전의 우분투가 적용된 기기로 옮기면 실패했다. 파이썬 3.6과 3.7 사이에서 무엇인가 변경되었다. 하지만 우분투 19.04 기기의 파이썬 3.7을 파이썬 3.6으로 대체하면 OS에 작은 결함이 보였다.

며칠 동안 파이썬 설치를 돕는 다양한 도구와 씨름한 후 우분투 19.04에서 우분투 18.04로 다운그레이드하고 잊어버렸다. 파이썬 커뮤니티는 이런 문제에 관해 잘 알고 있었으며 이를 관리하기 위한 도구를 개발하고 있지만, 이런 파이썬 관리 도구의 확산으로 인해 또 다른 메타 혼란 계층이 추가되고 있다. 이 프로젝트의 한 조력자는 Pip를 사용하고 다른 조력자는 아나콘다(Anaconda)를 사용하고 있었으며, 두 사람 모두 자신이 사용하는 것으로 변경하면 필자의 문제가 사라질 것이라고 주장했다. 하지만 실제로는 그렇지 않았다.

앞서 설명한 문제는 연구실에서 데이터를 압축하기 위해 몇 줄만 작성하는 과학자에게는 문제가 되지 않는다. 그들은 다른 버전을 다시 설치하거나 컨테이너 안에서 실행시킬 수 있다. 하지만 이런 문제는 다양한 버전의 언어를 사용해 여러 기기에서 수년에 걸쳐 작성된 대형 코드를 유지하려는 사람에게 심각한 문제가 될 수 있다. 파이썬 3.2.5에서 코드베이스가 멈춰버린 기업이 학교에서 파이썬 3.9를 배운 신입을 채용한다면 어떻게 될까? 


파이썬, 모든 곳에서 사용한다

오픈소스 전통으로 인해 다양한 테스트와 혁신이 이뤄졌고 스택을 만들 뿐 아니라 운용하기 위해서도 많은 코드를 작성하게 되었다. 단일 기업이 개발하고 유지하는 일부 언어는 컴파일러가 하나이지만 파이썬 개발자들은 자신이 선호하는 것이 한 손으로 다 꼽을 수 없을 만큼 많다고 말할 수 있다. 수십 가지를 선택할 수 있다.


선택의 압제는 현실이다

선택권이 많다는 것이 정말로 좋은 것일까? 아니면 신뢰할 수 있는 하나의 확실한 선택이 좋을까? 오픈소스 코드가 좋기는 하지만 옵션을 시도해 보고 결함을 패치하며 제대로 작동할 때까지 씨름하기 위한 추가적인 지원이 제공되지 않는다.


파이썬, 쉽다

기업들은 조금씩 앞으로 전진해야 한다. 파이썬은 좋은 도구이며 사라지지 않을 것이다. 현재 교육 시스템에 깊이 뿌리내리고 있기 때문에 점차 공통어가 되어가고 있다.

팀들은 서서히 미래로 마이그레이션해야 하며 파이썬을 더 도입하는 것이 그 방법이다. 문제는 튼튼한 전략을 기반으로 이를 신중하게 수행하는 방법이다. 파이썬은 시간이나 인프라에 크게 투자할 필요가 없다는 것이 장점이다. 원래 소규모 작업을 위해 개발됐다. 작게 시작해 이점을 누리고 관리할 수 있다. 큰 작업은 나중에 합리적인 경우 수행할 수 있다.  editor@itworld.co.kr 

X