Upgrade to Pro — share decks privately, control downloads, hide ads and more …

파이썬과 다이아스포라

파이썬과 다이아스포라

Python and Diaspora (English slides: https://speakerdeck.com/minhee/python-and-diaspora)

25여 년간의 다른 언어들이 파이썬에 준 영향

How other languages have influenced Python for 25+ years

Hong Minhee (洪 民憙)

August 12, 2017
Tweet

More Decks by Hong Minhee (洪 民憙)

Other Decks in Programming

Transcript

  1. 파이썬과 다이아스포라 25 여 년간의 다른 언어들이 파이썬에 준 영향

    파이콘 한국 2017 홍민희 <hongminhee.org> (Slides in English: <bit.ly/pyconkr2017‑hong‑en>.)
  2. 다이아스포라 (διασπορά) 특정 민족이 자의적이든지 타의적이든지 기존에 살던 땅을 떠나

    다른 지 역으로 이동하는 현상을 일컫는다. … 디아스포라란 낱말은 … 본토를 떠 나 항구적으로 나라 밖에 자리잡은 집단에만 쓴다. — 위키백과 〈 다이아스포라 〉 예: 재일교포, 중국조선족
  3. 건국 신화, 또는 역사 귀도 판 로쉼이 1989 년 성탄절에

    파이썬을 만들기 시작했다. 그런데, 그 후 25 년여간은 아무 일도 없었나?
  4. 무엇이 파이썬다운 것일까? P y t h o n 1

    . 5 . 2 ( # 1 , A u g 1 1 2 0 1 7 , 1 3 : 3 2 : 3 4 ) [ G C C 4 . 8 . 4 ] o n l i n u x 4 C o p y r i g h t 1 9 9 1 - 1 9 9 5 S t i c h t i n g M a t h e m a t i s c h C e n t r u m , A m s t e r d a m > > > ' W h a t i s P y t h o n i c ? ' . u p p e r ( ) T r a c e b a c k ( i n n e r m o s t l a s t ) : F i l e " < s t d i n > " , l i n e 1 , i n ? A t t r i b u t e E r r o r : ' s t r i n g ' o b j e c t h a s n o a t t r i b u t e ' u p p e r '
  5. 무엇이 파이썬다운 것일까? P y t h o n 1

    . 5 . 2 ( # 1 , A u g 1 1 2 0 1 7 , 1 3 : 3 2 : 3 4 ) [ G C C 4 . 8 . 4 ] o n l i n u x 4 C o p y r i g h t 1 9 9 1 - 1 9 9 5 S t i c h t i n g M a t h e m a t i s c h C e n t r u m , A m s t e r d a m > > > ' W h a t i s P y t h o n i c ? ' . u p p e r ( ) T r a c e b a c k ( i n n e r m o s t l a s t ) : F i l e " < s t d i n > " , l i n e 1 , i n ? A t t r i b u t e E r r o r : ' s t r i n g ' o b j e c t h a s n o a t t r i b u t e ' u p p e r ' > > > i m p o r t s t r i n g > > > s t r i n g . u p p e r ( ' W a s i t P y t h o n i c ? ' ) ' W A S I T P Y T H O N I C ? ' > > > s t r i n g . j o i n ( [ ' f o o ' , ' b a r ' , ' b a z ' ] , ' / ' ) ' f o o / b a r / b a z ' > > > s t r i n g . f i n d ( ' H e l l o , w o r l d ! ' , ' , ' ) 5
  6. 플랫폼 프로그래밍 언어가 대중화되기 위해서는 대중적인 플랫폼의 스크립팅 언 어가

    되어야 합니다. 포트란과 코볼은 초기 IBM 메인프레임의 스크립팅 언어였습니다. C 는 유닉스의 스크립팅 언어였고, 나중에는 펄도 그랬습 니다. 티클도 Tk 의 스크립팅 언어였습니다. 자바와 자바스크립트도 웹 브라우저의 스크립팅 언어로 의도됐습니다. 〈 대중화되기〉 . 폴 그레이엄.
  7. 접착 언어 파이썬은 인터프리트되어 실행되기 때문에, 시제품이나 프로그램 개발을 빠르게

    해내는 데에 좋습니다. 다른 언어로 작성된 모듈도 쉽게 붙일 수 있어서, 큰 소프트웨어 프로젝트에서 전체 구조를 위한 훌륭한 접착 언어 가 될 수 있습니다. 파이썬은 압축이나 디바이스 드라이버, 복잡한 부동 소수점 계산, 복잡한 데이터베이스 연산 등의 빠른 성능이 요구되거나 정 확한 시간을 엄수해야 하는 알고리즘을 짜는 데에는 별로입니다. —〈 파이썬으로 하는 인터넷 프로그래밍 〉 . 《 리눅스 저널 》 42 호 (1997 년 10 월).
  8. 접착 언어 파이썬은 확장성이 있습니다. 최고 성능이 중요한 연산를 수행하기

    위해 서든, 바이너리 형태로만 구할 수 있다거나 하는 라이브러리( 특정 하드웨 어 벤더를 위한 그래픽 라이브러리 같은 것) 를 파이썬 프로그램에 붙이기 위해서든, C 로 프로그램을 짤 수 있다면 파이썬 인터프리터에 내장 함수 나 모듈을 쉽게 추가할 수 있습니다. 이 방식에 한번 빠지고 나면, C 로 짠 프로그램에 파이썬 인터프리터를 붙여서 확장이나 명령 언어로 쓸 수도 있게 됩니다. —“ 입맛 돋우기.” 〈 파이썬 1.5.2 튜토리얼 〉 .
  9. “ 용인 가능한 리스프” 제가 장담하건대, 리스프만 쓰는 리스프 프로그래머

    같은 사람은 단 한 명도 없습니다. 리스프 프로그래머들은 대신 각종 불합리와 씨름하면서 시간을 보내죠. 대부분 리스프가 아닌 언어로요. —〈 리스프는 ‘ 용인 가능한 리스프’가 아니다 〉 . 스티브 예기.
  10. 리스프에 익숙했던 초기 이용자들 따라서, 그런 언어에 익숙했던 초기 이용자들은

    파이썬에서도 비슷한 기 능들을 만들어 쓰고 있었다는 것을 알아챘습니다. … 1993 년 말, 이용자들은 m a p ( ) 이나 f i l t e r ( ) , r e d u c e ( ) 같은 리 스트 처리 함수들 뿐만 아니라 익명 함수를 만드는 아이디어까지 논했었 습니다. —〈 파이썬의 “ 함수형” 기능들의 유래 〉 . 《 파이썬의 역사 》 . 귀도 판 로쉼.
  11. 1993 년 익명 함수? m a p ( ) ?

    f i l t e r ( ) ? r e d u c e ( ) ? 그런 거 없는 언어도 있나요?
  12. 1995 년 자바 (2014 년에 람다 및 m a p

    / f i l t e r 도입) 자바스크립트 (2005 년에 m a p / f i l t e r 도입) 루비
  13. 하스켈과 리스트 조건제시법 리스트 조건제시법은 본래 함수형 프로그래밍 언어인 하스켈에서

    나온 아이디어입니다. 그레고리 유잉이 파이썬에 이 문법을 넣자고 했고, 이를 구현하는 패치를 처음으로 만든 것도 그레고리 유잉입니다. 이 패치는 그 간 python‑dev 메일링 리스트에서 끝도 없이 논의됐고, 스킵 몬태나로 가 최신 상태로 유지( 리베이스) 해 왔습니다. — 리스트 조건제시법. 〈 파이썬 2.0 에서 바뀐 것〉 .
  14. s t r 상속받기 P y t h o n

    3 . 6 . 2 ( d e f a u l t , J u l 2 4 2 0 1 7 , 1 9 : 4 7 : 3 9 ) [ G C C 4 . 9 . 2 ] o n l i n u x T y p e " h e l p " , " c o p y r i g h t " , " c r e d i t s " o r " l i c e n s e " f o r m o r e i n f o r > > > c l a s s M y S t r i n g ( s t r ) : . . . d e f c o u n t _ a ( s e l f ) : . . . r e t u r n s e l f . c o u n t ( ' a ' ) . . . > > > M y S t r i n g ( ' f o o b a r ' ) . c o u n t _ a ( ) 1 > > >
  15. s t r 상속받기 P y t h o n

    1 . 5 . 2 ( # 1 , A u g 1 1 2 0 1 7 , 1 3 : 3 2 : 3 4 ) [ G C C 4 . 8 . 4 ] o n l i n u x 4 C o p y r i g h t 1 9 9 1 - 1 9 9 5 S t i c h t i n g M a t h e m a t i s c h C e n t r u m , A m s t e r d a m > > > c l a s s M y S t r i n g ( s t r ) : . . . d e f c o u n t _ a ( s e l f ) : . . . r e t u r n s e l f . c o u n t ( ' a ' ) . . . T r a c e b a c k ( i n n e r m o s t l a s t ) : F i l e " < s t d i n > " , l i n e 1 , i n ? T y p e E r r o r : b a s e i s n o t a c l a s s o b j e c t
  16. 자료형과 클래스 스몰토크와 마찬가지로, 파이썬도 동적 타이핑 및 동적 바인딩

    언어이며, 모든 것이 객체입니다. 그렇지만, 파이썬은 내장 객체 자료형과 사용자가 정의한 클래스를 구분하며, 현재로서는 내장 자료형을 상속받는 것도 불 가능합니다. —〈 파이썬과 다른 언어 비교〉 . 1997 년 4 월. 귀도 판 로쉼. (강조는 인용자가.)
  17. PEP 253 이전 3.4 U s e r D i

    c t — 딕셔너리 객체를 위한 클래스 래퍼 본 모듈은 딕셔너리 객체를 감싸는 래퍼로 동작하는 클래스를 정의합니 다. 상속받아 메서드를 덮어씌우거나 새로 추가할 수 있도록 자신만의 유 사 딕셔너리 클래스를 만들 때 그 기반으로 유용합니다. 이 방법으로 딕 셔너리에 동작을 추가할 수 있습니다. — 파이썬 라이브러리 참조 문서. 1.5.2 버전. 1999 년 4 월.
  18. Before PEP 253 3.4 U s e r L i

    s t — 리스트 객체를 위한 클래스 래퍼 본 모듈은 리스트 객체를 감싸는 래퍼로 동작하는 클래스를 정의합니다. 상속받아 메서드를 덮어씌우거나 새로 추가할 수 있도록 자신만의 유사 리스트 클래스를 만들 때 그 기반으로 유용합니다. 이 방법으로 리스트에 동작을 추가할 수 있습니다. — 파이썬 라이브러리 참조 문서. 1.5.2 버전. 1999 년 4 월.
  19. 내장 자료형 상속받기 본 PEP 은 C 와 파이썬에서 내장

    자료형의 서브클래스를 만들 수 있게 하 는 타입 객체 API 의 추가를 제안합니다. —PEP 253 〈 내장 자료형 상속받기〉 . 2001 년 5 월.
  20. 디지털 크리에이션스 파이썬래브스 사람들은 거처를 디지털 크리에이션스로 옮깁니다. 귀도 판

    로쉼은 … 질문에 친절히 답변해주셨습니다. … 파이썬래브스의 사람들이 조프 작업도 하게 될 것으로 보시나요? 네. 조프는 매우 흥미로운 소프트웨어인데다, 우리도 돕고 싶습니다. 저 는 실제로 시도해보고 싶은 아이디어들도 좀 있습니다. 그렇긴 해도 우리 일과의 많은 시간을 쓰지는 않을 것 같습니다. 대신, 우리는 짐 풀턴의 팀 이 조프를 개선하는 데에 도움이 되는 쪽으로 파이썬을 발전시킬 겁니다. “귀도 판 로쉼, 디지털 크리에이션스로 이적” 2000 년 11 월 1 일. LWN.
  21. 스몰토크와 조프 오래 전부터 스몰토크 프로그래머셨던 것으로 압니다. 짐 풀턴:

    네. 스몰토크 정말 괜찮죠. 미국 지질조사국에서 쓸 시각 차트 편 집기를 GNU 스몰토크로 만들었습니다. ANSI 스몰토크 표준 위원회에 서 잠깐 일한 적도 있고요. 스몰토크, 특히 스퀵으로 괜찮은 작업들이 여전히 진행되고 있더라고요. — 짐 풀턴 인터뷰. 조페라 ( 프랑스 조프 모임). 2002 년 2 월.
  22. 스몰토크와 조프 전부터 봐왔던 미래 웹 개발의 비전이나, 따르려는 산업

    표준 같은 게 있 나요? 짐 풀턴: 저는 객체 신봉자이고, 조프는 언제나 복잡한 문제들을 웹으로 가능한 쉽게 풀기 위해 객체 기술의 힘과 파이썬을 활용하려 해왔습니다. — 짐 풀턴 인터뷰. 조페라 ( 프랑스 조프 모임). 2002 년 2 월.
  23. 파이썬을 더 스몰토크처럼 만들기 이 PEP 은 내장 자료형에 대한

    인트로스펙션 API 를 고쳐, 내장 자료형은 좀더 클래스처럼 보이고 내장 자료형 값들은 좀더 클래스의 인스턴스처 럼 보이게 하는 것을 제안합니다. 예를 들어, t y p e ( x ) 는 대부분의 내 장 자료형에 대해 x . _ _ c l a s s _ _ 와 같은 결과가 될 것입니다. —PEP 252 〈 내장 자료형을 더 클래스처럼 보이게 하기〉 . 2001 년 4 월.
  24. 그때와 지금 P y t h o n 1 .

    5 . 2 ( # 1 , A u g 1 1 2 0 1 7 , 1 3 : 3 2 : 3 4 ) [ G C C 4 . 8 . 4 ] o n l i n u x 4 C o p y r i g h t 1 9 9 1 - 1 9 9 5 S t i c h t i n g M a t h e m a t i s c h C e n t r u m , A m s t e r d a m > > > t y p e ( ' a ' ) < t y p e ' s t r i n g ' > > > > s t r < b u i l t - i n f u n c t i o n s t r > > > > t y p e ( ' a ' ) i s s t r 0 P y t h o n 3 . 6 . 2 ( d e f a u l t , J u l 2 4 2 0 1 7 , 1 9 : 4 7 : 3 9 ) [ G C C 4 . 9 . 2 ] o n l i n u x T y p e " h e l p " , " c o p y r i g h t " , " c r e d i t s " o r " l i c e n s e " f o r m o r e i n f o r > > > t y p e ( ' a ' ) < c l a s s ' s t r ' > > > > s t r < c l a s s ' s t r ' > > > > t y p e ( ' a ' ) i s s t r T r u e
  25. 조프와 파이썬 웹 프레임워크들 트랙, 에지월 소프트웨어 (2004 년) 파일론스,

    벤 뱅거트 · 제임스 가드너 (2005 년) 웹오브, 이언 비킹 (2007 년) r e p o z e . b f g , 어젠달리스 컨설팅 (2009 년)
  26. 조프와 파이썬 웹 프레임워크들 트랙 (2004 년) 파일론스 프로젝트 파일론스

    (2005 년) → 피라미드 (2010 년) 웹오브 (2007 년) → 피라미드 (2010 년) r e p o z e . b f g (2009 년) → 피라미드 (2010 년)
  27. 패키지 매니저는 이제 일반적입니다 펄 (1987 년): CPAN 파이썬 (1989

    년): PyPI 및 p i p 루비 (1995 년): 루비젬스 자바 (1995 년): 메이븐 하스켈 (1990 년): 카발 및 스택 자바스크립트 (1995 년): n p m
  28. 그 당시에는 아니었지만 펄 (1987 년): CPAN (1995 년) 파이썬

    (1989 년): 치즈숍 (2002 년) 및 p i p (2011 년) 루비 (1995 년): 루비젬스 (2004 년 3 월) 자바 (1995 년): 메이븐 (2004 년 7 월) 하스켈 (1990 년): 카발 (2005 년) 및 스택 (2016 년) 자바스크립트 (1995 년): n p m (2010 년)
  29. 펄의 CPAN 이 부러웠던 파이썬 파이썬도 CPAN 같은 모듈 저장소가

    필요하다는 얘기가 여러 차례 있었 습니다. 이에 대해 현재 어떤 생각이신가요? 맞다고 봅니다. 그 방향의 구체적인 계획이 바로는 없지만, 장기적으로는 python.org 웹사이트를 ( 커뮤니티가 운영하는 조프 사이트로 만드는 식 으로) 개선하려고 하고, 저장소 같은 것을 추가하는 것은 필연적이라고 생각합니다. 파이썬 2.0 에 들어간 distutils 패키지 덕분에 서드파티 코 드를 훨씬 설치하기 쉬워진 것도 주목해 주세요. “귀도 판 로쉼, 디지털 크리에이션스로 이적” 2000 년 11 월 1 일. LWN.
  30. 펄 파이썬에 대한 ESR 의 잘 알려진 글 그래서 이

    이야기에서 재밌는 부분은 실은 이겁니다. fetchmailconf† 를 만든지 여러 달이 지났어도, 여전히 fetchmailconf 코드를 읽고서 이게 어떻게 돌아가던 것인지 파악할 수 있었다는 것이죠. 별로 머리 아프지 않고. 반면 제가 더이상 사소한 프로젝트를 빼고는 펄을 쓰지 않게 된 이 유는, 크고 복잡한 코드를 펄로 짤 때는 한 번도 그럴 수 없었다는 것이고 요. keeper‡ 나 anthologize‡ 는 행여나 고칠 일이 있을까 두렵습니다만, fetchmailconf 는 전혀 그런 부채감을 주지 않습니다. —〈 왜 파이썬인가〉 . 《 리눅스 저널 》 73 호 (2000 년 5 월). 에릭 레이먼드. † ESR 이 파이썬으로 짠 소프트웨어. ‡ ESR 이 펄로 짠 소프트웨어.
  31. ABC 80 년대가 됐고, … 신세대 아마추어 프로그래머들이 쓰는 언어는

    베이직 이었습니다. 우리 팀은 베이직 언어를 세상에서 사라져야 할 해충으로 여 겼습니다. 우리의 모토에 따르면, 우리가 만들던 언어인 ABC가 “ 베이직 을 몰아내야” 만 했습니다. 슬프지만, 이런 저런 이유로, …, ABC 는 그만두게 됐습니다. 이후 저는 많은 시간 프로젝트가 어쩌다 실패했는지 이해하려 애썼습니다. … 제가 내린 최선의 대답은, ABC 는 인터넷이 없던 시절에 만들어져 언어 제작 자와 이용자 사이에 건강한 피드백 순환이 이뤄지지 않았기 때문이라는 것이었습니다. ABC 의 설계는 실상 일방통행이었던 것이죠. —〈 네덜란드 국왕탄생일 연설 〉 . 귀도 판 로쉼.
  32. 대중성 따라서 언어가 대중화되기 위해서 좋은 언어가 될 필요가 있는지의

    여부 와 상관 없이, 저는 좋은 언어가 되기 위해서 대중화될 필요가 있다고 생 각합니다. 그리고 좋은 상태를 유지하기 위해서도 대중성을 유지해야 합 니다. 〈 대중화되기〉 . 폴 그레이엄.
  33. 우리가 “ 파이썬답다”Pythonic 를 정의해갈 방식 다른 언어들이 현재의 파이썬의

    모습을 형성하는 데에 영향을 줘 왔습니다. 미래의 파이썬이 어때야 할지 역시도, 다른 언어들이 영향을 줄 것입니다.