아주 오랫동안 파이썬의 가장 중요한 특성은 상호운영성(interoperability) 입니다.

그러나 이제는 많은 모던 프로그래밍 언어도 유사한 상호운영성을 제공하기에 큰 장점은 아니게 되었습니다.

오늘날 프로그래머들에게 더욱 중요한 것은 바로 생산성(productivity) 입니다.

파이썬의 생산성을 높여주는 큰 축의 하나는 공식 파이썬 패키지 인덱스(Official Python Package Index, OPPI)입니다.

OPPI는 거대한 소프트웨어 라이브러리 및 프레임워크의 보고이며, 명확하면서도 간결한 문법으로 사용할 수 있기에 소프트웨어 작성과 유지보수에 드는 시간과 노력을 현저히 줄여줍니다.

바로 이 점이 프로그래밍 생산성 영역에서 파이썬의 가치를 더욱 높여줍니다.

이번 장에서는 파이썬의 현재 상태, 파이썬 생태계와 커뮤니티에서 일어나는 새로운 변화들에 관한 정보를 수집하는 방법에 관해 설명합니다.

이번 장에서 다루는 주제

  • 파이썬의 현재와 진행 상황
  • 파이썬 2의 현재와 미래
  • 최신 정보 확인과 습득

1.1 파이썬의 현재와 진행 상황

파이썬의 역사는 생각보다 짧지 않습니다.

  • 1980년 후반부터 개발
  • 1994년 공식 1.0버전 출시
  • 2000년 10월 16일: 공식 파이썬 2.0 릴리스
  • 2008년 12월 3일: 공식 파이썬 3.0 릴리스
  • 2011년 11월 9일: 파이썬 2.8 출시 미정 발표
  • 2020년 1월 1일: 파이썬 2 개발 및 지원 종료

파이썬 3은 긴 역사에 비해 도입 속도가 그만큼 빠르지 않았기 때문에 파이썬 2는 당초 계획보다 5년이나 지연된 시점에 그 개발과 지원이 종료되었습니다.

대부분 하위 호환성이 맞지 않는게 문제였습니다.

다행히 파이썬 2는 역사의 뒤안길로 사라지게 되었고, 기업들은 전략적으로 파이썬 3으로 전환하게 되었습니다.

1.2 파이썬 2의 현재와 미래

현 시점에서 파이썬 2는 공식적으로 많은 언어 개발자의 지원을 받지 못합니다.

또한 보안 패치가 되지 않고 있어 안전하지 않은 것으로 간주해야 합니다.

파이썬 2 코드는 활발하게 개발이 진행되는 소프트웨어의 핵심 컴포넌트로서는 사용되지 않겠지만 오랫동안 추가적으로 개발되지 않은 유틸리티 스크립트, 내부 도구 또는 내부 서비스에서는 여전히 많이 찾아 볼 수 있습니다.

아직 파이썬2를 사용하는 곳이 있으나, 이제는 파이썬3로 마이그레이션 하는게 좋습니다.

마이그레이션을 하기 위해서 많은 비용이 필요하기에 다음과 같은 전략을 세워 다른 사람들을 설득해볼 수 있습니다.

  1. 전환 대상과 그 이유를 인식하라.
  2. 방해가 되는 대상을 식별하라.
  3. 이해관계자들을 설득하라.

이해관계자들의 승인을 얻는 과정이 가장 어렵습니다.

따라서 문제를 제기하기 전에 철저히 준비해야 합니다.

공수를 산정할 수 있고, 해당 공수가 필요한 이유를 만들어낼 수 있습니다.

전환을 해야하는 일반적인 긍정적 이유로는 다음을 들 수 있습니다.

  • 신규 또는 업데이트된 라이브러리 활용 가능
  • 소유 비용 감소
  • 보다 단순해지는 유지보수와 운영
  • 보다 쉬운 신규 채용 인원 교육

부정적 이유

  • 큰 보안 이슈
  • 높은 보안 관련 비용
  • 신규 채용 시 어려움.

1.3 최신 정보의 확인과 습득

기술은 끊임없이 진화합니다.

새로운 언어 또는 언어의 피처들은 유명한 라이브러리나 프레임워크 개발을 이끌게 됩니다.

이는 차례로 새로운 프로그래밍 패러다임과 새로운 디자인 패턴으로 이어집니다.

한 언어 생태계에서 이러한 패턴이나 패러다임이 성공을 거두면, 프로그래머들은 이를 다른 언어에도 도입하고자 합니다.

이렇게 언어에서 언어로 새로운 아이디어가 전파되고 있습니다.


파이썬 3.9(2020년 10월 5일 릴리스)부터 새로운 메이저 릴리스를 연 단위로 하게 된다.

이런 릴리스는 파이썬 커뮤니티에 혁신을 위한 끊임없는 연료를 공급받는 것과 같습니다.

이를 따라잡기 위해서는 어렵지만 파이썬을 업으로 삼은 이들에게 이런 최신 정보를 습득하는 것은 대단히 중요합니다.

다음 절에서는 파이썬을 둘러싸고 벌어지는 일들에 관한 정보를 얻는 방법들을 소개합니다.

1.3.1 PEP 문서

파이썬 커뮤니티는 변경점을 알리는 방법을 제공합니다.

파이썬 언어의 추상적인 아이디어들은 대부분 특별한 메일링 리스트(python-ideas@python.org)를 통해 진행되지만, 실제 변경 내용은 파이썬 개선 제안Python Enhancement Proposal, PEP 문서에 모두 기록됩니다.

PEP는 파이썬에 이루어지는 변경에 대한 제안을 세부적으로 기술하는 정형화된 문서입니다.

PEP 문서의 목적, 형태 및 문서 작성 워크플로는 PEP 1 문서로 모두 표준화되어 있습니다.

PEP 문서는 파이썬에서 매우 중요하며 주제에 따라 다양한 목적을 지원합니다.

  • 정보 제공: 코어 파이썬 개발자들에게 필요한 정보를 요약하고 파이썬 릴리스 일정을 알려줍니다.
  • 표준화: 모드 스타일, 문서, 기타 가이드라인을 제공합니다.
  • 설계: 제안된 피처를 기술해둡니다.

제안된 모든 PEP 문서는 PEP 0 문서에서 확인할 수 있습니다.(PEP 0 문서는 지속적으로 업데이트된다).

파이썬의 변경에 관련된 모든 논의를 확인할 수 있을 만큼의 충분한 시간이 없는 사람들에게, 파이썬의 행보에 관한 정보를 얻을 수 있는 훌륭한 보고다.

PEP 0에서는 승인된 아이디어, 구현된 아이디어는 물론 논의 중인 아이디어들까지 확인할수 있습니다.

최신 정보 와 관련해 가장 중요한 PEP 인덱스 섹션은 열린open 상태의 PEP일 것이다.

열린 상태의 PEP는 현재 논의 중인 아이디어들을 설명합니다.

아직 논의가 진행 중인 흥미로운 PEP들에는 다음과 같은것들이 있습니다.

  • PEP 603: collection에 frozenmap 타입 추가
  • PEP 634: 구조적 패턴 매칭: 명세
  • PEP 638: 구문적 매크로
  • PEP 640: 사용되지 않는 변수 구문

1.3.2 활성화된 커뮤니티

파이썬 소프트웨어 파운데이션 Python Software Foundation, PSF은 파이썬을 지탱하는 비영리 조직이다.

Mailman 2(https://mail.python.org/mailman/listinfo): 오래되고 규모가 작은 아카이브다.

Mailman 3(https://mail.python.org/): 상대적으로 덜 오래된 아카이브다. python . org 메일링 리스 트의 현 시점에서의 메인 아카이브로 보다 많은 활성화된 메일링 리스트가 존재한다.

python-ideas@python.org: 파이썬 메일링 리스트를 이야기할 때 빠지지 않는 메일링 리스트다. 파이썬과 관련된 다양한 아이디어들에 관한 논의의 장이다.

python-dev@python.org: 코어 파이썬 개발(주로 CPython 인터프리터)을 목적으로 하는 특별한 메일링 리스트다. 또한 PEP를 다른 채널을 통해 공식적으로 발표하기 전, 새로운 PEP 초안을 논의하는 곳이다.

python-announce-list@python.org: 다양한 공지 사항을 안내하는 메일링 리스트다. 각종 콘퍼런스나 미트업, 패키지나 프레임워크 또는 새로운 PEP의 릴리스 소식 을 알 수 있다.

전통적인 메일링 리스트 외에 디스코스 Discourse 플랫폼을 통한 공식 인터넷 포럼도 제공한다(https:// discuss.python.org/).

공식 메시지 보드와 메일링 리스트 외에도 잘 알려진 플랫폼들에도 몇몇 공개 파이썬 커뮤니티가 있습니다. 잘 알려진 것들은 다음과 같다.

PySlackers Slack workspace(pyslackers.com): 파이썬 추종자들이 모인 거대 커뮤니티다. 슬랙Slack 메시징 플랫폼을 통해 제공되며 파이썬과 관련된 것이라면 무엇이든 논의합니다.

Python Discord server(pythondiscord.com): 또 다른 공개 파이썬 커뮤니티다. 디스코드 Discord 를 이용한다.

/r/python subreddit(www.reddit.com/r/Python/): 레딧Reddit 플랫폼의 파이썬 전용 하위 레딧이다.

1.3.3 기타 자료들

모든 새로운 PEP를 읽고, 메일링 리스트를 구독하고, 커뮤니티에 합류하는 것은 순간순간 일어나는 일들을 알아채기 위한 최고의 방법입니다.

그러나 이 모든 것을 지속적으로 하기에는 너무 많은 시간과 노력이 소요됩니다.

온라인의 정보를 직접 필터링하는 대신 불로그, 뉴스레터, 소위 ‘어섬 리스트awesome list 라 불리는 업선된 자료들을 활용하는 것도 좋습니다.

최신 정보를 원한다면 뉴스레터가 특히 뛰어나다. 구독하면 좋을 만한 홍미로운 뉴스레터 몇 가지를 소개합니다.

주간 파이썬Python Weekly(http://www.pythonweekly.com/): 유명한 주간 뉴스레터로, 수십 가지의 새롭고 흥미로운 파이썬 패키지와 정보들을 제공한다.

주간 파이코더PyCoder’s Weekly(https://pycoders.com): 또 다른 유명한 주간 뉴스레터로, 새로운 패키지와 흥미로운 아티클을 제공한다.

정보를 얻는 완전히 새로운 방법은 어섬 리스트를 활용하는 것이다. 어섬 리스트는 업선된 특정한 주 제에 관한 가치 있고 주요한 자료들의 링크 리스트를 제공하며 주로 깃Git 저장소에서 관리된다. 이 리스트들은 매우 방대하며 여러 하위 분류로 나뉘어 있다.

awesome-python(https://github.com/vinta/awesome-python): 흥미로운 프로젝트들(대부분 깃허브에서 호스팅됨)과 표준 라이브러리 모듈에 관한 참조 정보를 제공하며, 약 80개의 하위 주제로 구 분된다. 하위 주제는 캐싱, 인증, 디버깅 같은 기본 프로그래밍 개념부터 파이썬이 자주 이용되는웹 개발, 데이터 사이언스, 로보틱스, 침투 테스팅penetration testing 등 전 엔지니어링 영역으로 다 양하게 구분된다. 프로젝트는 물론 뉴스레터, 팟캐스트, 서적 및 튜토리얼까지 풍성한 링크를 제공한다.

pycrumbs(https://github.com/kirang89/pycrumbs): 흥미롭고 가치 있는 아티클을 중점적으로 제공한다. 아티클들은 100여 개의 카데고리로 나뉘며 파이썬 피처, 일반 프로그래밍 데크닉, 자기 계발주제등과관련이 있다.

pythonidae(https://github.com/svaksha/pythonidae): 수학, 생물학, 화학, 웹 개발, 물리학, 이미지처리와 같이 파이썬을 빈번하게 이용하는 과학 및 기술 영역 정보들을 중점적으로 제공한다. 트리 형태의 구조로 구성되어 있다. 메인 페이지는 20여 개의 주요 카테고리 페이지로 구성된다. 이 카테고리들은 보다 작은 하위 카테고리를 포함하며, 각 하위 카테고리에서는 유용한 라이브러리나 리소스의 목록을 제공한다.

1.4 요약

이번 장에서는 파이썬의 현재 상태와 파이썬의 역사를 통해 나타난 변화 과정에 관해 살펴봤고, 파이썬이 변화한 이유와 그 변화를 따라가는 것이 왜 중요한지 설명했습니다.

30여 년이라는 파이썬의 역사, 그리고 커지고 있는 파이썬 커뮤니티로 인해 파이썬 생태계에서 일어나는 변화를 실시간으로 따라잡기는 여의치 않습니다. (따라서 필요로 하는 수준에 맞는 커뮤니티를 선택하여 정보를 습득하는 것이 중요합니다)

언어의 변화와 함께 개발 도구들도 함께 달라지며 소프트웨어 개발 프로세스는 보다 쉽게 개선되고 있습니다.

계속해서 다음 장에서는 이러한 변화와 함께 현대적인 개발 환경들에 관해 살펴볼 것 이고,

반복적이고 지속적인 개발 환경을 구성함으로써 생산성과 개발 편의성 모두를 높이는 방법을 알아보게 됩니다.

또한 파이썬 커뮤니티에서 제공하는 다양한 생산성 도구도 살펴볼 예정입니다.

출처 - 미하우, 타레크 『전문가를 위한 파이썬 프로그래밍 제4판』, 김모세 옮김, Jpub(2022), p25-p36.
본 콘텐츠는 출처에 표기된 도서에 일부분을 요약한 내용입니다. 상세한 내용은 도서를 확인하는 것이 좋습니다.