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

Avatar for Hong Minhee (洪 民憙)

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 를 정의해갈 방식 다른 언어들이 현재의 파이썬의

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