Media Log

새 해가 되면 항상 찾아보는 것이 있다.
지난 해 동안 괜찮은 오픈소스 프로젝트가 뭐가 있었는지, 프로그래밍 언어 동향은 어떻게 바뀌어가는지를 둘러보는 일이다.
TV에서 연예시상을 하듯이 이것들도 몇몇 단체들에서 시상식을 한다. 찾아보면 여러군데가 있는데 내가 좋아하는 곳은
InfoWorld의 Bossie Award(오픈소스 소프트웨어 어워드)와 Tiobe(프로그래밍 언어순위)이다.
나는 이것들이 여느 연예시상식이나 가요톱텐보다 훨씬 재밌다.

Bossie Award 페이지에서는 한 눈에 수상작들을 보기가 불편해서 여기에 링크와 함께 정리해보았다.
프로젝트에 대한 소개는 여기에 적지 않는다. 링크를 따라가서 잠시 읽어 보면 어떤 프로젝트들인지 쉽게 알 수 있다.

Application Development software 부문

Application Development software 부문

Platforms and Middleware 부문

Networking Software 부문

2007년부터 2009년까지의 수상작들은 이미 위키피디아에 잘 정리되어 있다.
http://en.wikipedia.org/wiki/Infoworld_Bossie_Awards

아참, 올해의 프로그래밍 언어는 또 한번 파이썬이 차지했다.

C# 한 번 시켜주지.

Python 3.0 Released

2008. 12. 4. 18:41 | Programming



내가 파이썬을 처음 만나본 것은 2006년 12월이었다.
나는 그 때 입사한지 4개월 정도된 신입사원었는데, 파이썬이라는 언어를 생전 들어보지도 못했었다.

그 때 우리 프로젝트에서 사용되던 작은 파이썬 프로그램이 하나 있었는데,
그것은 안철수 연구소의 웹 페이지에 가서 V3 모듈을 내려 받아 업데이트 해주는 프로그램이었다.
나는 그 코드를 고칠 일이 있어 수정 하면서 별 거지 같은 언어라고 얼마나 속으로 투덜 거렸는지 모른다.

그 뒤로 언제부터 파이썬이 좋아졌는지는 잘 기억이 안난다.
아마도 도서관에서 두리번 두리번 책을 고르다가 Learning Python이라는 책을 빌려서
천천히 읽어본 후, 꽤 매력을 느꼈고 그 때 부터 파이썬에 호감을 갖기 시작했던 것 같다.

그 후에 회사에서 사람들과 파이썬 스터디도 하고, 프로젝트에도 파이썬을 조금씩 적용하기 시작했다.

나는 언어를 선택할 때, 윈도우즈 플랫폼에서만 동작해도 되고 클라이언트에 배포되지 않는 그런 서버 사이드 코드를 작성해야 한다면 주저하지 않고 C#을 선택한다.
파이썬을 선택하는 경우는 일단 리눅스 플랫폼일 때이다.
나는 리눅스에서 코드를 작성 할 때 vi, gcc, make 세트를 사용하는 것을 아주 어려워하고 또 싫어하는데,
아마도 그래서 그 대안 언어로써 파이썬을 공부했는지도 모르겠다.

그래서 리눅스에서 그다지 많지 않은 코드를 작성할 때는 파이썬 부터 머리에 떠올린다.
터미날을 통해 vim에서 편하게 코드를 작성할 수 있기 때문이다. -C보다 훨씬!
또한 파이썬은 Perl의 문법보다 깔끔하고 Java처럼 잡 것들을 설치하지 않아도 되고, Ruby보다 레퍼런스가 많아서 좋다.

그렇다고 해도 회사에서 파이썬으로 코딩하게 되는 일은 거의 10%도 되지 않는다.
하지만 나는 파이썬으로 코드를 작성하는 그 시간들이 정말 즐겁다.

오늘은 그 파이썬 3.0이 릴리즈 되었다.
나는 지금까지 작성해놓은 코드들이 그렇게 많지 않기 때문에 파이썬 3.0으로 전부 포팅할까 잠시 고민했었는데, 금방 생각을 덮었다.

파이썬 3.0은 2.x 와 호환되지 않는데, 그 만큼 아주 많은 부분이 바뀌었다.
바뀐 부분들은 다음 링크에서 찾아볼 수 있다.

http://docs.python.org/dev/3.0/whatsnew/3.0.html
http://www.python.org/download/releases/3.0/NEWS.txt

나는 이렇게 팍팍 뭔가를 뜯어고치는 파이썬 프로젝트의 스타일이 마음에 든다.
빨리 파이썬 3.0을 써먹어보는 날이 왔으면 좋겠다.
Python Essential Reference (4th, Paperback) - 8점
Beazley, David M./Addison-Wesley


그다지 두껍지도 않으면서 아주 간결하게 파이썬을 잘 설명해주고 있는 책이다.

다음은 이 책 2판의 목차인데, 레퍼런스 용 책 답게 문법 설명은 최대한 간결하게 하고 다양한 부록을 절반 이상이나 할애하고 있다.

1 A Tutorial Introduction 1
2 Lexical Conventions and Syntax 13
3 Types and Objects 19
4 Operators and Expressions 43
5 Control Flow 55
6 Functions and Functional Programming 63
7 Classes and Object-Oriented Programming 71
8 Modules and Packages 77
9 Input and Output 83
10 Execution Environment 93
A The Python Library 99
B Extending and Embedding Python 297
C: Summary of Changes 331

문법 설명이 너무나 간결해서 프로그래밍 언어를 처음 배우려는 사용자에게는 좋지않다.
아직까지도 대부분의 사람들은 파이썬을 자신의 첫 언어로 배우지 않는다.
이 책은 다른 언어를 좀 공부했다가 Python을 배워보려는 프로그래머들에게 효율적으로 파이썬을 가르켜주는 아주 좋은 책이다.
이 책을 보면서 마치 Learn Visual Basic 6.0을 읽을 때와 비슷한 기분이 들었다.
아직까지 읽어본 파이썬 책은 그다지 많지 않지만, 그 중에서 가장 깔끔했다.

2001년에 이 책의 2판이 발행되었고, 비교적 최근인 2006년에 3판이 발행되었다.
파이썬은 버전이 바뀔 때마다 문법이 조금씩 달라지기도 하고 변화되는 부분이 많으므로 최신 에디션으로 구해보는 것이 좋다.
이 책의 저자처럼 파이썬 책을 쓰는 사람이나, 기존 프로젝트를 포팅해야 하는 사람들에게 이런 변화는 어쩌면 울화통 치밀게 짜증나는 일 일지도 모르겠다.( 물론 즐겁게 받아들일꺼라 생각한다. )
나는 파이썬의 이런 발 빠르고 과감한 변화를 너무나도 좋아한다. 사실 파이썬으로 이미 커다란 프로젝트를 만들어 놨다면 귀도 반 로섬을 빌어먹을 개자식이라며 욕할지도 모르겠지만, 뭐 만들어 놓은 것이 없으니깐^^
그저 파이썬 3000이 두근두근 기다려질 뿐이다.

Art of UNIX Programming - 8점
Eric S. Raymond 지음, 김희석 옮김/정보문화사


오픈소스나 유닉스 계열에서 꽤나 유명한 에릭 레이몬드가 쓴 책이다.
이 책의 제목만 봐서는 유닉스 프로그래밍에 대한 고급 기법들을 다룰 것 같지만, 단지 유닉스 철학만을 이야기한다. 도날드 커누스의 Art of Computer Programming의 이름을 본 따서 지었다는데, 책 주제와 상관없는데도 제목을 이렇게 지은 걸 보면 어지간히도 커누스의 Art of 시리즈가 감명 깊었는가보다.( 책 이름이던지 내용이던지 아니면 커누스 그 자체던지간에 )

책의 목차를 한번 살펴보자. 소주제들은 제외했다.

Part 1 UNIX의 오늘
Chapter 1 철학 : 중요한 것은 철학이다
Chapter 2 역사 : 두 문화에 대한 이야기
Chapter 3 대조 : UNIX 철학과 다른 것을 비교하기

Part 2 설계
Chapter 4 모듈화 : 간단하게, 단순하게!
Chapter 5 텍스트화 : 우수한 프로토콜은 우수한 습관을 만든다
Chapter 6 투명성 : 빛이 있으라!
Chapter 7 멀티프로그래밍 : 서로 다른 작업을 위한 프로세스들
Chapter 8 미니언어 : 노래하는 기호를 찾아
Chapter 9 생성 : 명세를 한 단계 높게
Chapter 10 구성 : 순조롭게 출발하기
Chapter 11 인터페이스 : UNIX 환경의 사용자 인터페이스 디자인 패턴
Chapter 12 최적화
Chapter 13 복잡함 : 되도록 단순하게 그러나 지나치지 않게

Part 3 구현
Chapter 14 언어 : C 언어이어야 하는가? 아닌가?
Chapter 15 툴 : 개발의 용병들
Chapter 16 재사용 : 바퀴를 다시 발명하지 않기 위해서

Part 4 공동체
Chapter 17 이식 가능성 : 소프트웨어의 이식성과 표준 따르기
Chapter 18 문서화 : 소프트웨어를 종이-중심의 세계로 설명하기
Chapter 19 오픈소스 : 신 UNIX 공동체의 프로그래밍
Chapter 20 미래 : 위험 그리고 기회


vi와 emacs를 비롯한 편집기에 대한 평가와 c, java, python, lisp등 여러 언어에 대한 평가가 특히 재밌다.

편집기나 언어에 대한 평가는 언제나 인터넷을 뜨겁게 달구는 주제이다.
Effective C++의 스캇마이어스도 Effective 시리즈 중 어떤 책에서 편집기에 관한 이야기를 잠깐 언급했는데, 그 때 최고의 편집기는 바로 emacs라고 했다. 나는 그 글을 읽고 바로 Emacs를 설치하고 연습해봤는데, 몇 일 못가서 바로 포기했다. ;)

에릭 레이몬드 역시 그렇지만, 리눅스 계통의 해커들은 c, java, C#보다는 perl 이나 python, LISP 같은 언어들을 높게 평가하는 경향이 있다.
하지만, 조엘 온 소프트웨어의 조엘 같은 경우에는 자기 주위의 해커들( 아마도 마이크로소프트의 천재들 )은 그렇지 않다며 반박하는 것도 재밌다.

에릭 레이몬드는 윈도우즈를 정말 더럽게도 싫어하는데, 윈도우즈를 욕하는 내용 또한 역시 재밌는 볼거리이다.

이런 내용들 말고도 재밌게 읽은 만한 내용들이 많이 들어있다.
꼭 유닉스 프로그래머가 아니더라도 가볍게 읽어보기 좋을 것이다.

에릭 레이몬드의 글 중 이 책에 없고 인터넷에 올려진( 어딘가에서 한번씩은 읽어봤을만한 ) 재밌는 글들 또한 많다.

다음 링크들에서 볼 수 있다.
How To Become A Hacker
해커가 되는 방법
Why Python
How To Ask Questions The Smart Way
좀더 나은 질문을 하기 위한 방법
에릭 레이몬드의 홈페이지