파이썬 소개
파이썬은 단순하면서도 강력하다고 할 수 있는 몇 안 되는 언어 중 하나입니다. 파이썬을 사용하다 보면 프로그래밍에 사용하는 언어의 문법과 구조보다는 문제의 해법에 집중하는 것이 얼마나 쉬운지 알게 될 것입니다.
파이썬은 공식적으로 다음과 같이 소개돼 있습니다.
파이썬은 배우기 쉽고 강력한 프로그래밍 언어입니다. 파이썬은 효율적인 고수준 자료구조를 갖추고 있고 단순하지만 효과적인 객체지향 프로그래밍을 지원합니다. 파이썬의 우아한 문법과 동적 타입 체계는 인터프리터라는 특성과 더불어 파이썬을 대부분의 플랫폼 상의 여러 영역에서 스크립팅과 신속한 응용 프로그램 개발에 최적화된 언어로 만들어줍니다.
다음 절에서 이러한 특징에 대해 좀 더 자세히 설명하겠습니다.
이름에 얽힌 일화
파이썬 언어를 만든 귀도 반 로섬(Guido van Rossum)은 BBC 프로그램인 "몬티 파이썬의 날으는 서커스"를 따서 파이썬이라는 이름을 지었습니다. 귀도는 먹잇감을 위해 긴 몸으로 다른 동물을 둘둘 감싸서 으스러뜨리는 식으로 잡아먹는 뱀을 특히 좋아하지 않습니다.
파이썬의 특징
단순함
파이썬은 단순하고 미니멀리즘을 지향하는 언어입니다. 잘 만들어진 파이썬 프로그램을 읽는 것은 비록 매우 딱딱하지만 영어를 읽는 것과 거의 흡사합니다! 파이썬의 이러한 의사코드 같은 특성은 파이썬의 큰 강점 중 하나입니다. 그 덕분에 언어 자체보다 프로그램 해법에 집중할 수 있습니다.
배우기 쉬움
앞으로 보겠지만 파이썬은 시작하기가 굉장히 쉽습니다. 이미 앞에서 언급했다시피 파이썬의 문법은 굉장히 단순합니다.
자유 오픈소스
파이썬은 FLOSS(Free/Libré and Open Source Software)의 한 예입니다. 간단한 측면에서 보자면 자유롭게 이 소프트웨어의 사본을 배포하고, 소스코드를 읽을 수 있고, 변경할 수 있고, 프로그램의 일부를 새로운 무료 프로그램에서 사용할 수 있습니다. FLOSS는 지식을 공유하는 커뮤니티라는 개념에 기반을 두고 있습니다. 파이썬이 좋은 이유 중 하나가 바로 여기에 있습니다. 즉, 단지 개선된 파이썬을 보고 싶어 하는 커뮤니티의 주도로 파이썬이 만들어지고 지속적으로 개선되고 있다는 것입니다.
고수준 언어
파이썬으로 프로그램을 작성하면 프로그램에서 사용되는 메모리를 관리하는 등의 저수준 세부사항에 신경 쓰지 않아도 됩니다.
이식성
오픈소스라는 특성 덕분에 파이썬은 여러 플랫폼에 이식돼 왔습니다(즉 다른 플랫폼에서도 동작하도록 변경돼 왔습니다). 모든 파이썬 프로그램은 여러분이 시스템에 특화된 기능을 사용하지 않을 만큼만 신경 쓴다면 아무것도 변경하지 않고도 이러한 플랫폼에서 모두 동작할 수 있습니다.
GNU/Linux, Windows, FreeBSD, Macintosh, Solaris, OS/2, Amiga, AROS, AS/400, BeOS, OS/390, z/OS, Palm OS, QNX, VMS, Psion, Acorn RISC OS, VxWorks, PlayStation, Sharp Zaurus, Windows CE and PocketPC에서 파이썬을 사용할 수 있습니다!
심지어 컴퓨터와 아이폰, 아이패드, 안드로이드용 게임을 만들기 위한 Kivy 같은 플랫폼에서도 사용할 수 있습니다.
인터프리터
이 부분은 설명이 조금 필요합니다.
C나 C++ 같은 컴파일 언어로 작성된 프로그램은 다양한 플래그와 옵션을 제공하는 컴파일러를 이용해 소스 언어(C나 C++)에서 컴퓨터 언어(바이너리 코드, 즉 0과 1)로 변환됩니다. 이렇게 변환된 프로그램을 실행하면 링커/로더 소프트웨어가 하드디스크에서 메모리로 프로그램을 복사하고 실행하는 과정을 시작합니다.
반면 파이썬은 바이너리로 컴파일할 필요가 없습니다. 단지 프로그램을 소스코드에서 곧바로 실행하기만 하면 됩니다. 파이썬은 내부적으로 소스코드를 바이트코드(bytecode)라고 하는 중간 형태로 변환한 다음 이를 컴퓨터의 네이티브 언어로 번역한 후 실행합니다. 이 모든 것들은 실제로 파이썬을 훨씬 쉽게 사용할 수 있게 만들고 프로그램을 컴파일하고 적절한 라이브러리를 링크하고 로드하는 등의 걱정을 하지 않아도 되게 해줍니다. 또한 이러한 특성은 파이썬 프로그램의 이식성을 훨씬 더 높여주는데, 파이썬 프로그램을 다른 컴퓨터에 복사하기만 해도 실행할 수 있기 때문입니다.
객체지향
파이썬은 절차지향 프로그래밍뿐만 아니라 객체지향 프로그래밍도 지원합니다. 절차지향(procedure-oriented) 언어에서는 프로그램이 재사용 가능한 프로그램 조각에 불과한 프로시저나 함수를 중심으로 만들어집니다. 객체지향(object-oriented) 언어에서는 프로그램이 데이터와 기능을 결합한 객체(object)를 중심으로 만들어집니다. 파이썬은 특히 C++나 자바(Java) 같은 규모가 큰 언어와 비교했을 때 매우 강력하지만 단순한 방법으로 OOP를 수행합니다.
확장성
코드의 핵심부를 매우 빠르게 실행해야 하거나 알고리즘의 일부를 공개하고 싶지 않다면 해당 부분을 C나 C++로 작성한 다음 파이썬 프로그램에서 사용하게 할 수 있습니다.
임베딩
C/C++ 프로그램 내에 파이썬을 탑재해서 프로그램 사용자가 직접 스크립트를 작성하도록 만들 수 있습니다.
폭넓은 라이브러리
파이썬 표준 라이브러리(Python Standard Library)는 정말 거대합니다. 정규 표현식, 문서 생성, 단위 테스트, 스레딩, 데이터베이스, 웹 브라우저, CGI, FTP, 이메일, XML, XML-RPC, HTML, WAV 파일, 암호화, GUI(graphical user interfaces) 등을 비롯해 다른 시스템에 특화된 기능들을 구현하는 데 활용할 수 있습니다. 파이썬이 설치된 곳이라면 이 모든 것들을 이용할 수 있습니다. 이를 가리켜 파이썬의 배터리 포함 철학이라고 합니다.
표준 라이브러리 외에도 다른 다양한 고품질 라이브러리를 Python Package Index에서 찾아볼 수 있습니다.
정리
파이썬은 정말로 흥미롭고 강력한 언어입니다. 파이썬은 성능과 기능성을 적절히 겸비해서 파이썬으로 프로그램을 작성하는 것을 재미있고 손쉽게 만들어 줍니다.
파이썬 3과 파이썬 2
"파이썬 2 버전"과 "파이썬 3 버전"의 차이점에 관심이 없다면 이번 절을 건너뛰셔도 됩니다. 하지만 어떤 버전을 사용하고 있는지는 알아두시기 바랍니다. 이 책은 파이썬 3 버전을 대상으로 씌여졌습니다.
한 버전의 사용법을 적절히 이해하고 배우고 나면 다른 버전과의 차이점과 사용법을 손쉽게 배울 수 있습니다. 어려운 부분은 프로그래밍을 배우고 파이썬 언어 자체의 기초를 이해하는 것입니다. 그것이 바로 이 책의 목표이며, 그러한 목표를 달성하고 나면 상황에 따라 파이썬 2나 파이썬 3을 손쉽게 사용할 수 있습니다.
파이썬 2와 파이썬 3의 자세한 차이점은 아래 글을 참고하세요.
- The future of Python 2
- Porting Python 2 Code to Python 3
- Writing code that runs under both Python2 and 3
- Supporting Python 3: An in-depth guide
프로그래머 가라사대
ESR 같은 훌륭한 해커가 파이썬에 관해 뭐라고 이야기했는지 궁금하실 겁니다.
- 에릭 S. 레이몬드(Eric S. Raymond)는 "성당과 시장(The Cathedral and the Bazaar)"의 저자이며, 오픈소스(Open Source)라는 용어를 만들어낸 분이기도 합니다. 에릭은 파이썬이 가장 좋아하는 프로그래밍 언어가 됐다고 이야기합니다.
- 브루스 에켈(Bruce Eckel)은 그 유명한 'Thinking in Java'와 'Thinking in C++'의 저자입니다. 브루스는 파이썬보다 생산성이 높은 언어는 없다고 이야기합니다. 또한 파이썬이야말로 프로그래머의 업무를 손쉽게 만드는 데 초점을 둔 유일한 언어일 것이라고 이야기하기도 합니다. 자세한 사항이 궁금하다면 인터뷰 전문을 읽어보세요.
- 피터 노빅(Peter Norvig)은 유명한 리스프(Lisp) 제작자이자 구글의 검색 품질 책임자이기도 합니다(알려주셔서 감사해요, 귀도 반 로섬). 피터는 파이썬 코드를 작성하는 것은 의사코드를 작성하는 것과 같다라고 이야기합니다. 또한 파이썬은 항상 구글에 없어서는 안 될 요소였다고 말합니다. 실제로 구글의 채용공고 페이지를 통해 이를 확인할 수 있는데, 여기엔 소프트웨어의 자격 요건으로 파이썬 지식이 나열돼 있습니다.