파이썬은

파이썬은 _간단_하면서도 _강력_한 언어 중 하나입니다. 파이썬은 언어의 문법과 구조에 별로 신경을 쓰지 않아도 문제를 푸는 것 자체에 집중할 수 있기 때문에 매우 놀랍습니다.

다음은 파이썬의 공식 소개글입니다.

파이썬은 배우기 쉽고 강력한 프로그래밍 언어입니다. 파이썬은 효율적인 고수준 데이터 구조를 갖추고 있고 간단하지만 효과적인 객체 지향 프로그래밍 접근법 또한 갖추고 있습니다. 우아한 문법과 동적 타이핑, 인터프리팅 환경을 갖춘 파이썬은 다양한 분야와 다양한 플랫폼에서 사용될 수 있는 최적의 스크립팅, RAD(rapid application development) 언어입니다.

다음 섹션에서 이러한 파이썬의 특징에 대해 상세히 알아보겠습니다.

파이썬이라는 이름의 유래

파이썬의 창시자 귀도 반 로섬(Guido van Rossum)이 BBC에서 방영되던 "Monty Python’s Flying Circus"라는 TV 프로그램의 이름을 따서 지었습니다. 사실 귀도는 뱀이라는 긴 몸으로 다른 동물의 몸을 휘감아 으깨어 부수고 먹어치우는 동물을 딱히 좋아하지는 않는다고 합니다.

파이썬의 특징

단순함

파이썬은 단순하고 최소화된 언어입니다. 잘 쓰여진 파이썬 프로그램을 읽는 것은 좀 딱딱하게 쓰여진 영어 문장을 읽는 것과 크게 다르지 않습니다! 이러한 프로그램 코드 같지 않아 보이는 특성은 파이썬의 가장 강력한 특징 중 하나입니다. 이로 인해 파이썬이라는 언어 자체보다 여러분이 풀고자 하는 문제에 더 쉽게 집중할 수 있습니다.

배우기 쉬운 언어

곧 알게 되시겠지만 파이썬은 정말 배우기 쉬운 언어입니다. 이미 말씀드린 것처럼 파이썬은 굉장히 쉬운 문법 체계를 갖고 있습니다.

자유, 오픈 소스 소프트웨어

파이썬은 FLOSS (Free/Libré and Open Source Software - 자유, 오픈 소스 소프트웨어)의 좋은 예입니다. 이것은 이 소프트웨어의 복사본을 마음대로 배포할 수 있고 소스 코드가 공개되어 있어 언제든지 읽을 수 있으며, 필요한 부분을 고칠 수 있고 새로운 자유 소프트웨어를 작성할 때 이 프로그램의 일부를 사용해도 된다는 것을 의미합니다. FLOSS는 지식을 공유하는 공동체를 기반으로 하고 있습니다. 이러한 특징 때문에 파이썬은 굉장히 좋은 프로그래밍 언어라고 할 수 있습니다. 그리고 더 좋은 파이썬을 만들고자 하는 많은 사람들이 지속적으로 파이썬을 개선하고 있습니다.

고수준 언어

파이썬으로 프로그래밍을 할 때에는 메모리를 관리하는 것과 같은 저수준의 세부적인 사항들을 전혀 신경쓰지 않아도 됩니다.

이식성(Portable)

파이썬은 오픈 소스이기 때문에 다양한 플랫폼을 지원합니다. 때문에 특정 플랫폼에서만 사용되는 기능들을 사용하지 않는다면 특별히 프로그램을 수정하지 않더라도 다양한 플랫폼에서 실행할 수 있습니다.

파이썬은 리눅스, Windows, FreeBSD, MacOS, 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, PocketPC과 같은 플랫폼에서 사용할 수 있습니다.

혹은 Kivy 와 같은 플랫폼을 활용하면 컴퓨터와 iPhone, iPad, Android상에서 동작하는 게임을 제작할 수도 있습니다.

인터프리터 언어

이 부분은 설명이 조금 필요합니다.

C언어나 C++과 같은 컴파일 언어는 여러 옵션과 플래그를 사용해 소스 코드를 컴퓨터가 이해하는 언어(0과 1로 구성된 바이너리 코드)로 번역하는 과정을 거칩니다. 이렇게 컴파일 된 프로그램을 실행하면 링커(linker)나 로더(loader)라는 소프트웨어가 프로그램을 하드 디스크에서 읽은 후 메모리로 불러와 프로그램을 실행하게 됩니다.

반면에 파이썬은 이렇게 컴파일을 할 필요가 없습니다. 파이썬은 소스 코드를 곧바로 _실행_합니다. 이때 파이썬은 소스 코드를 '바이트코드’라는 중간 단계의 형태로 변환하고 이것을 다시 여러분의 컴퓨터가 사용하는 언어로 변환한 후 실행합니다. 사실 이러한 특징 때문에 여러분은 컴파일이라는 과정을 신경쓰지 않고서도, 즉 여러분이 필요한 라이브러리를 갖고 있는지 링크가 잘 되었는지 잘 로드 되었는지 등을 신경쓰지 않고서도 파이썬을 쉽게 사용할 수 있습니다. 또한 여러분이 작성한 파이썬 프로그램을 복사하기만 하면 다른 컴퓨터에서도 곧바로 실행할 수 있기 때문에 이식성이 뛰어납니다.

객체 지향 언어

파이썬은 절차 지향 프로그래밍과 객체 지향 프로그래밍을 모두 지원합니다. 절차 지향 언어에서 프로그램은 일련의 프로시저(procedures)나 함수(functions)들로 구성되는데 이것들은 단순히 프로그램에서 많이 재사용되는 코드 조각들을 의미합니다. 반면 객체 지향 언어에서 프로그램은 객체(Object)로 구성되어 있는데 객체란 데이터와 기능이 결합된 하나의 대상을 의미합니다. 파이썬은 특히 C++이나 Java와 같은 언어들에 비해 매우 강력하고도 쉬운 방법으로 객체 지향을 지원합니다.

확장성

만약 여러분이 빠르게 동작하는 프로그램을 만들고 싶거나 프로그램의 일부 알고리즘을 공개하고 싶지 않다면 코드의 일부분을 C 혹은 C++로 작성한 후 파이썬 프로그램에서 읽어들여 사용하도록 할 수 있습니다.

포함성(embeddable)

여러분의 C/C++ 프로그램에 파이썬을 포함하도록 하여 여러분의 프로그램을 사용하는 사용자들이 '스크립팅' 기능을 사용하도록 할 수 있습니다.

방대한 라이브러리

파이썬은 방대한 표준 라이브러리를 갖추고 있습니다. 여기에는 정규 표현식, 자동 문서 생성, 유닛 테스트, 쓰레딩, 데이터베이스, 웹 브라우저, CGI, FTP, 전자메일, XML, XML-RPC, HTML, WAV 파일, 암호화 알고리즘, GUI (graphical user interfaces) 등등이 들어 있으며, 여러 시스템 관련 기능들 또한 포함되어 있습니다. 이러한 기능들은 파이썬이 설치되어 있는 어떤 시스템에서든지 사용 가능하다는 점을 기억하세요.

이러한 표준 라이브러리 외에도, 파이썬 패키지 인덱스(Python Package Index) 에 다양한 라이브러리가 공개되어 있습니다.

요약

파이썬은 정말 흥미진진하고 강력한 언어입니다. 파이썬의 빠른 성능과 여러 기능들의 조화는 여러분이 재미있고 쉽게 파이썬으로 프로그램을 작성할 수 있도록 해 줍니다.

파이썬 3 vs 파이썬 2

만약 여러분이 파이썬 2와 3의 차이에 대해 큰 관심이 없으시다면 이 섹션을 넘어가도 괜찮습니다. 그렇지만 여러분이 어떤 버전의 파이썬을 사용하고 있는지는 알고 계시는 것이 좋습니다. 이 책에서는 파이썬 3을 사용합니다.

일단 여러분이 어느 한 버전을 잘 이해하고 사용하는 방법을 익히고 나면 두 버전의 차이점에 대해 쉽게 배울 수 있고 다른 버전 또한 쉽게 사용할 수 있습니다. 프로그래밍을 배우고 파이썬 언어의 기본을 이해하는 것 그 자체가 어려운 부분입니다. 이것이 바로 이 책의 목표이며 일단 목표를 달성하고 나면 상황에 따라 파이썬 2나 3 모두 쉽게 사용할 수 있게 될 것입니다.

파이썬 2와 파이썬 3의 차이점에 대해 자세하게 알고 싶으시다면 다음을 참조하세요.

프로그래머들이 말하는 파이썬

ESR(Eric S. Raymond)과 같은 위대한 해커들이 파이썬을 뭐라고 표현했는지 확인해 보세요.

  • Eric S. Raymond 는 "성당과 시장(The Cathedral and the Bazaar)" 의 저자이며, 또한 오픈 소스(Open Source) 라는 단어의 창시자입니다. 그는 어떻게 파이썬이 자신이 가장 좋아하는 언어가 되었는지에 대한 글(영문)을 남겼습니다. 또 이 글은 제가 파이썬을 처음 시작하게 된 계기가 된 글이기도 합니다.

  • Bruce Eckel 은 유명한 책 'Thinking in Java' 와 'Thinking in C++' 의 저자입니다. 그는 파이썬이 아닌 다른 어떤 언어도 그가 파이썬을 사용할 때만큼 생산적이도록 하지 못했다고 말합니다. 또 그는 프로그래머에게 있어서 문제를 쉽게 해결하는 데 초점을 맞추는 언어는 아마도 파이썬이 유일하지 않을까 라는 말도 남겼습니다. 좀 더 자세한 사항은 인터뷰 전문(영문)을 읽어 보세요.

  • Peter Norvig 은 유명한 Lisp 프로그래머이며 또 구글의 '검색 품질 책임자' 로 일하고 있습니다 (이것을 지적해준 귀도 반 로섬에게 감사드립니다). 그는 파이썬으로 프로그래밍 하는 것은 마치 의사코드로 프로그램하는 것 같다(영문)고 말합니다. 그는 또한 파이썬은 언제나 구글의 가장 중요한 부분을 담당하고 있다는 사실도 밝혀 주었습니다. 이에 대해서는 여러분이 직접 구글 채용(Google Jobs) 페이지에 방문해 보시면 소프트웨어 엔지니어로 채용되는 조건에 파이썬에 대한 지식이 필수 사항으로 되어 있는 것을 확인해보실 수 있습니다.

Last updated