조슈아 할로Joshua Harlow는 파이썬 개발자입니다. 야후 오픈스택 팀의 기술 책임자였고, 2012년에서 2016년 사이, 그리고 현재 고대디GoDaddy에서 근무하고 있습니다. 조슈아는 태스크플로 Taskflow, 오토마톤Automaton, Zake와 같은 파이썬 라이브러리의 개발자입니다.
· · ·
Q. 파이썬을 사용하게 된 계기는 무엇입니까?
저는 뉴욕 포킵시 근처의 IBM에서 인턴십을 하면서 2004년경 파이썬 2.3, 2.4로 프로그래밍을 시작했습니다(저희 친척과 가족 대부분 뉴욕 북부 출신이랍니다). 제가 했던 일이 정확히 기억나지 않지만, wxPython과 일부 시스템의 자동화를 위한 파이썬 코드 작업을 했습니다. 인턴십을 마치고 학교로 돌아와 로체스터 공과대학교 대학원에 진학했고, 야후에서 일하게 되었습니다. CTO 팀에서 일했으며, 이곳에서 몇몇 사람들과 어떤 오픈소스 클라우드 플랫폼을 사용할지 확인하는 업무를 수행했습니다. 그러다 대부분의 코드가 파이썬으로 작성된 오픈스택 프로젝트에 정착하게 되었습니다.
Q. 파이썬 언어에서 좋아하는 점과 좋아하지 않는 점이 있다면요?
제가 특별히 좋아하는 것은 다음과 같습니다.
● 단순성
파이썬은 초보자가 쉽게 입문할 수 있고, 숙련된 개발자도 계속 사용할 수 있습니다.
● 스타일검사
작성해둔 코드를 나중에 읽는 일은 소프트웨어를 개발에서 큰 부분을 차지하며, flake8, pycodestyle. pylint와 같은 도구로 일관성을 갖추는 것은 큰 도움이 됩니다.
● 프로그래밍 스타일을 원하는 대로 선택하고 조합할 수 있습니다.
제가 싫어하는 것은 다음과 같습니다.
● 파이썬 2에서 3으로의 전환이 조금 혼란스럽습니다(하지만 파이썬 3.6에서 대부분의 문제가 해결되었습니다).
● 람다Lambda는 너무 단순해서, 더 강력해져야 합니다.
● 제대로 된 패키지 설치 프로그램이 없습니다. pip는 디펜던시dependency 문제를 해결하는 개발이 필요합니다.
● 전역 인터프리터 락global interpreter lock(GIL)이 필요합니다(11장 GIL에 대해 더 자세히 설명합니다).
● 멀티스레딩에 대한 지원이 부족합니다. 현재는 asyncio 모델을 추가해서 작업해야 합니다.
● 파이썬 커뮤니티가 분산되어 있습니다. CPython과 PyPy 등으로 나뉘어 있습니다.
Q. 지원 중단 경고를 관리하기 위한 파이썬 모듈인 debtcollector를 개발하신다고 들었습니다. 새 라이브러리를 시작하는 과정은 어떻습니까?
위에서 언급한 단순성으로 다른 사람이 사용할 수 있는 새 라이브러리를 쉽게 만들고 게시할 수 있습니다. 코드는 내가 작업하는 다른 라이브러리에서 나왔으므로(태스크플로)7 API가 잘 못 설계되어 있다는 걱정 없이, 코드를 이식하고 확장하는 것이 상대적으로 쉬웠습니다. 많은 사람이(오픈스택 커뮤니티 또는 외부) 라이브러리의 중요성을 느끼는 것 같아 기쁩니다. 저는 이 라이브러리를 더 발전시켜서 다른 라이브러리에서 유용하게 사용할 수 있도록 더 폭넓은 지원중단deprecation 패턴을 지원하게 하고 싶습니다.
Q. 파이썬에는 어떤 점이 부족하다고 생각하나요?
파이썬은 JITjust-in-time 컴파일에서 성능을 더 잘 발휘할 수 있습니다. 최근에 개발된 대부분의 언어(예를 들어 크롬 V8 자바스크립트 엔진을 사용하는 Rust, Node.js 등)는 파이썬 기능을 많이 가지고 있지만 JIT로 컴파일되었습니다. 기본 CPython도 JIT 컴파일하여, 파이썬 이 성능면에서 새로운 언어와 경쟁할 수 있다면 정말 좋을 것입니다.
또한 파이썬은 강력한 동시성 패턴이 필요합니다. 낮은 수준의 비동기와 스레딩 스타일 패턴뿐 아니라 더 큰 규모의 응용 프로그램에서 작동하는 애플리케이션을 만드는 데 도움이 되는 높은 수준의 패턴이 필요합니다. 파이썬 라이브러리 goless는 내장 동시성 모델을 제공하는 Go의 일부 개념을 포함합니다. 이러한 상위 수준의 패턴이 표준 라이브러리에 내장되어 개발자들이 적합한 곳에 사용할 수 있도록 가장 첫 번째 패턴으로 유지되어야 합니다. 이것이 없다면 파이썬은 다른 언어와 경쟁하기 어려울 것입니다.
· · ·