파이썬 UserPreferences
 
Help Info Print View Search Diffs Edit
 인덱스   찾기   Freeboard   Subjectless   Images   최근글 

see also 파이썬공부?

파이썬은 1989년 암스텔담에서 귀도 반 로섬(Guido van Rossum)에 의해 개발되기 시작한 언어로, 인터프리터식, 객체지향적, 플랫폼 독립적이며 동적인 대화형 스크립트 언어이다.

(컴퓨터) 언어학적인 계보를 살펴보자면, Modula와 Lisp, Smalltalk 등에서 조금씩 좋은 특질을 모아서 그야말로 베스트 오브 베스트를 추린 것이 -- 이 부분은 필자의 주관적 견해임을 밝힌다 -- 파이썬이다. 파이썬의 친모는 ABC라는 교육용 언어였고, 이 태생의 비밀은 귀도의 "만인을 위한 컴퓨터 프로그래밍"CP4E(Computer Programming for Everybody) 운동으로 그 정신을 이어가고 있다. 하지만 그렇다고 해서 쓰임이 교육이라는 분야에만 한정된 것은 절대 아니며, 각종 웹 검색 사이트 운용(Google, InfoSeek?, Four11, ...) 및 생물정보학(bioinformatics), 웹 서버(Zope) 등 넓은 분야에서 제 몫을 단단히 해내고 있고, 1999년 Jolt Award 프로그래밍 언어 분야를 수상했으며, 개발자 로섬은 닥터 도브즈 저널에서, 개발성 향상에 대한 공로로 "Excellence in Programming Awards"를 수상한 바 있다. 이 외에 파이썬 자체에 대한 구체적인 설명은 마소 2000년 6월호의 실전 강의실을 참고하기 바란다. 좀더 실질적인 것을 원하는 분들을 위한 간단한 예로, 고전적 예제인 단어 개수 세기 프로그램을 파이썬으로 작성한 것이 <리스트 1>이다. 주석이 필요없을 정도로 간단하고 직관적이지 않은가.


<리스트 1> 단어 개수 세기
import sys 
fp=open(sys.argv[1],'r') 
words=fp.read().split() 
wordlist={} 
for word in words: 
   wordlist[word]=wordlist.get(word,0)+1  
for word in wordlist.keys(): 
   print "The word",word,"occurs",wordlist[word],"time(s) in",sys.argv[1] 

도대체 무엇 때문에 이토록 파이썬이 이름을 날리고 개발자 커뮤니티의 시선을 한 '뱀'에 받고 있는 것일까? 여러 가지 요인이 있겠지만 가장 대표적인 것을 든다면 역시 "빠른 개발 속도"가 아닐까 한다.

어찌된 일인지 국내에서는 스크립트 언어는 저열한 것이고, 자바나 C++류가 어디서나 최고의 만병통치약이라고 생각하는 사람이 많은 것 같다. 한 두 가지에 우루루 몰리는 집단 문화의 강세 때문인지도 모르겠다.

스크립트 언어와 C++의 개발 속도에 대한 비교로 Tcl을 개발한 아우스터하우트(Ousterhout)의 IEEE 논문이 유명한데, DB 애플리케이션 개발에 C++은 이개월, DB 라이브러리 개발에 역시 C++은 삼개월이 소요되었는데, 스크립트 언어로는 각각 하루와 일주일만 걸렸다. 코드 길이를 봐도 3000라인과 300라인의 대략 10배 비율은 극단적인 예가 아니다.

파이썬에 대한 직접적인 비교는 루츠 프렉헬트(Lutz Prechelt)의 보고서가 통계적으로 비교적 엄밀히 수행된 것인데, 자바, C++, C로 대변되는 비스크립트 언어와 Perl, Python, Rex, Tcl의 스크립트 언어에 대해, 해당 언어 전문가 수십명으로 실험집단을 만들고 동일한 과제(검색 및 스트링 처리)를 주어 여러 가지 측정 결과를 비교했다. 파이썬과 비스크립트 언어에 대해서만 이야기 한다면, 파이썬은 C, C++, Java에 비해 평균적으로 삼분의 일 이하의 개발 시간과, 코드의 라인 수도 C, C++, Java에 비해 대략 삼분의 일이고, Java의 절반 정도의 메모리 소모에, 전체 수행 속도는 C나 C++보다는 느리지만 Java보다 약간 빠른 정도를 보여줬다. (주목할 만한 사실은 스크립트 언어 중에서도 파이썬이 높은 성능을 보여줬다는 점이다)

여기서 주지할 점은 바로 파이썬의 높은 생산성이다. 같은 시간 동안에 더 많은 코드를 만들 수 있으면서 동시에 전체 코드 길이는 짧다는 점은 파이썬의 대표적인 매력 중 하나이다. 파이썬 유저 그룹에서, C나 C++로 2주일 걸린 작업을 하루에 했다, 허무하다는 등의 이야기는 너무 흔해서 더 이상 뉴스거리조차 되지 못한다.

하지만 파이썬 역시 하나의 도구일 뿐이고, 만병통치약은 되지 못한다. 파이썬은 자신이 잘 쓰일 수 있는 곳이 있고(이곳 About을 통해 앞으로 하나하나 살펴보게 될 것이다), C++나 자바 역시 그것들이 효율적일 수 있는 부분이 있다. 현명한 판단은 어느 상황에 어떤 도구를 선택하여 사용하느냐는 것이다. 수저로 바닥을 푸겠는가, 삽으로 밥을 먹겠는가.

파이썬이 스스로를 기타 스크립트 언어(특히 Perl)와 차별화하는 것 중 하나가 빠른 학습 속도이다. 이것은 "성당과 시장"으로 유명한 이 시대의 해커 에릭 레이먼드의 일명 "파이썬이 이렇게 좋은 줄 몰랐어요"(원제 "Why Python?" http://www2.linuxjournal.com/cgi-bin/frames.pl/lj-issues/issue73/3882.html )라는 수기에서 확인할 수 있다. 파이썬 언어를 공부한지 하루만에 자신이 원하는 프로그램을 만든 놀라운 경험과 "저는 제가 타이핑하는 속도만큼 빨리, 제대로 돌아가는 코드를 만들어내고 있었어요"(I was generating working code nearly as fast as I could type.)로 대변되는 무아의 경지는 레이먼드 같은 해커에게만 일어나는 일은 아니다.

세 번째 대표적인 매력은 "접착제 언어"로 사용될 수 있다는 점이다. 각종 언어의 기존 코드들을 손쉽게 파이썬으로 엮을 수 있다. 특히, C와 C++은 개발 초기부터 이를 염두에 두었기 때문에 아주 강력한 확장성을 지원하고, Java는 Jython(혹은 JPython)에서 지원한다. 이런 특징 덕분에 일단 파이썬으로 코드를 작성하고 수행 시간이 문제가 되는 부분을 C나 기타의 언어로 확장을 하는 과정은 매우 효율적이며 간편하다.

--유월? [월간 마이크로소프트웨어 1월호에서]

파이썬과 위키위키?의 관계

위키위키?가 모두 파이썬으로 구현되었다든지 하는 관계를 말하는 것은 아니다. 물론, 파이썬으로 구현된 위키위키?도 존재한다. (정확히는 위키클론이라고 부른다) 양자의 관계는 구체적 기술 차원이라기보다는 좀 더 "사회적"인 면에서 그 의미를 찾을 수 있다.

파이썬과 위키위키?가 추구하는 가치의 공통점은 결국 "대중에게 힘을"(Power to the people)에서 찾을 수 있을 것이다. 위키위키?파이썬이나 모두 이미 기존의 시스템이 거의 전권을 독점적으로 소유한 상태에서 이것을 사용자들에게 나눠줄 수 있도록 하는 노력으로 볼 수 있다.

현재 거의 모든 기술과 도구들이 그 사용자들에게 일방적으로 어떤 방식의 사용을 강요하는 현실에서, 스스로가 주체가 되어 자율적이고 능동적인 개체가 되려는 운동에 파이썬의 의미는 각별하다. (사회 기능이건, 기술이건 개발자와 사용자가 분리되고 개발자에게 특수 권력이 주어지는 사회는 바람직하지 못하다.) 파이썬이 주창하는 CP4E(Computer Programming for Everybody) 운동은 개발자와 기술, 시스템에 빼앗겼던 권리의 회복이고, 이 기술 중심적 사회에서 인간성과 주체성을 회복하려는 노력으로 이해할 수 있다.
위키위키?도 여러면에서 이와 비슷하다.

이러한 것들 자체가 실질적으로 어떤 "사회적" 운동을 대표할 수 있지는 않겠지만, 이것들이 일종의 발단이 되어서 사람들이 "깨어나도록"하는 데에 일조할 수 있을 것이다. 이는 인터넷이 탈중심화(decentralization)의 가능성을 보여주고 자극을 제공했다는 것에서 그 예를 볼 수 있다.

Pythoner and Pythoness

오늘 잠깐 시간이 되어서 python이라는 단어의 어원과 역사에 대해 연구를 조금 해봤는데 재미있는 파생어를 발견했습니다. pythoner와 pythoness가 그것입니다.

pythoness라는 단어는 대략 14세기부터 그 용례를 찾아 볼 수 있는데, python에 여성형 어미 -ess가 붙어서 어떤 신령의 힘에 의거해 미래를 예건하는 여자나, 그런 통찰력을 가진 여자를 일컫습니다. 드물긴 하지만 아직 현대 영어에도 살아 있습니다.

pythoner는 이미 사어가 되어버렸는데 15세기 이후의 문헌에는 거의 남아있지 않습니다. 역시 미래를 예견하는 사람, 신통력을 가진 사람이라는 의미를 갖고 있습니다. (보통 남자들에게 쓰임)

두 단어 모두 정령(여기서는 python)을 자기 맘대로 부린다고 하는 "familiar spirit"의 의미가 있습니다.

파이썬을 자유자재로 다루는 여러분들이야 말로 정말 신통력을 가진 분들이 아닐까 하는 생각을 해봅니다. 하지만, 우리가 추구해야할 것은 그런 신통력을 보편적인 가치로 세속화 하는 것이겠죠. 과거의 승려들이 보여주던 마술같은 프로그래밍의 기술을 누구나가 다 할 수 있도록 "聖"을 "俗"화 하는 것, 이것이 오늘을 사는 pythoner와 pythoness의 또다른 사명일지도 모르겠습니다. [[유월] from http://www.python.or.kr/ 자유게시판]


컴퓨터분류 프로그래밍분류


PythonPowered EditText of this page (last modified 2003-04-16 10:53:11)
FindPage by browsing, searching, or an index
Or try one of these actions: DeletePage, DeleteUploadedFile, LikePages, SpellCheck, UploadFile