4. 소개

파이썬은 '간단'하면서도 '강력'한 몇 안 되는 언어입니다. 여러분은 곧 문제를 해결할 때 파이썬이라는 언어의 문법과 구조에 별로 신경쓰지 않고 문제를 푸는 자체에 집중할 수 있다는 데 놀라게 될 것입니다.

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


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


다음 절에서 이러한 파이썬의 특징에 대해 상세히 다룰 것입니다.



파이썬이라는 이름의 유래 

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



4.1 파이썬의 특징

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

  • 배우기 쉬운 언어
    곧 알게 되겠지만, 파이썬은 정말 배우기 쉽습니다. 앞서 이미 이야기했지만, 파이썬은 굉장히 쉬운 문법 체계를 갖고 있습니다.

  • 자유, 오픈 소스 소프트웨어
    파이썬은 FLOSSFree/Libré and Open Source Software - 자유, 오픈 소스 소프트웨어의 좋은 예입니다. FLOSS는 이 소프트웨어의 복사본을 마음대로 배포할 수 있고, 소스 코드가 공개되어 있어 언제든지 읽을 수 있으며, 필요한 부분을 고칠 수 있고, 새로운 자유 소프트웨어를 작성할 때 이 프로그램의 일부를 사용해도 된다는 것을 의미합니다. FLOSS는 지식을 공유하는 공동체를 기반으로 하고 있으며, 왜 파이썬이라는 언어가 이렇게 좋은 언어가 되었는지를 말해줍니다. 파이썬은 좀 더 나은 파이썬을 만들고자 하는 공동체의 노력에 의해 지속적으로 개선되고 있습니다.

  • 고수준 언어
    파이썬으로 프로그램을 작성할 때에는 메모리를 관리하는 것과 같은 저수준의 세부적인 사항을 신경쓸 필요가 없습니다.

  • 이식성
    파이썬은 소스 코드가 공개되어 있어 여러 플랫폼을 지원하도록 수정되어 왔습니다. 따라서 여러분이 프로그램을 작성할 때 특정 플랫폼에서만 사용되는 몇몇 기능을 사용하지 않으면, 작성한 모든 파이썬 프로그램은 어떤 수정 없이 파이썬이 동작하는 모든 플랫폼에서 동작합니다.

    파이썬은 GNU/Linux(리눅스), Windows(윈도), FreeBSD, Macintosh(맥킨토시), Solaris(솔라리스), OS/2, Amiga(아미가), AROS, AS/400, BeOS, OS/390, z/OS, Palm OS(팜 OS), QNX, VMS, Psion, Acorn RISC OS, VxWorks, PlayStation(플레이스테이션), Sharp Zaurus(샤프 자우르스), Windows CE(윈도 CE), PocketPC(포켓 PC) 상에서 동작합니다.

    혹은 Kivy와 같은 플랫폼을 활용하면, 여러분의 컴퓨터  아이폰iPhone, 아이패드iPad, 안드로이드Android운영체제에서 동작하는 게임을 제작할 수도 있습니다.

  • 인터프리터 언어
    이 부분은 설명이 조금 필요합니다. 컴파일러 언어인 C 혹은 C++로 작성된 프로그램은 컴파일러에 여러 옵션과 플래그를 주어 프로그래머가 작성한 소스 코드로부터 컴퓨터가 사용하는 언어(0과 1로 구성된 바이너리 코드)로 번역하는 과정을 거칩니다. 이렇게 번역된 프로그램을 실행하면, 링커 또는 로더라고 불리우는 소프트웨어가 프로그램을 하드디스크로부터 메모리로 불러들인 후 프로그램을 실행합니다.
    반면에 파이썬은 이러한 컴파일 과정을 필요로 하지 않습니다. 파이썬 프로그램은 파이썬으로 된 소스 코드로부터 곧바로 실행됩니다. 이때 파이썬은 내부적으로 실행되는 소스 코드를 '바이트코드’라고 불리우는 중간 단계의 형태로 변환합니다. 이후 이것을 다시 여러분의 컴퓨터가 사용하는 언어로 변환한 다음 실제로 실행하게 됩니다. 사실 이 모든 과정은, 여러분이 컴파일이라는 과정을 신경쓰지 않아도, 즉 여러분이 필요한 라이브러리를 갖고 있는지 링크가 잘 되었는지 잘 로드되었는지 등을 몰라도 파이썬을 쉽게 사용할 수 있게 해줍니다. 뿐만 아니라 이러한 특성은 여러분이 작성한 파이썬 프로그램이 여러 플랫폼에서 잘 동작하게 해주므로, 다른 컴퓨터에 프로그램을 단순히 복사하기만 해도 곧바로 잘 동작하게 됩니다!

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

  • 확장성
    만약 여러분이 작성해야 하는 프로그램의 일부분이 빠른 속도로 동작해야 하거나 알고리즘의 일부를 공개하고 싶지 않은 경우, 코드의 일부분을 C 혹은 C++로 작성한 후 파이썬 프로그램에서 읽어들여 사용할 수 있습니다.

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

  • 확장 가능한 라이브러리
    파이썬은 방대한 표준 라이브러리를 갖추고 있습니다. 여기에는 정규 표현식, 자동 문서 생성, 유닛 테스트, 스레딩, 데이터베이스, 웹 브라우저, CGI, FTP, 전자메일, XML, XML-RPC, HTML, WAV 파일, 암호화 알고리즘, GUIGraphical User Interfaces 등이 들어 있으며, 여러 시스템 관련 기능 또한 포함되어 있습니다. 이러한 기능들은 파이썬이 설치되어 있는 어떤 시스템에서든지 사용 가능하다는 점을 기억하세요. 이러한 표준 라이브러리 외에도, 파이썬 패키지 인덱스Python Package Index에는 다양한 라이브러리가 공개되어 있습니다.

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


4.2 파이썬 2 vs 3

파이썬 2와 3의 차이에 대해 큰 관심이 없으시다면 이 섹션을 무시하셔도 좋습니다. 그러나 현재 어떤 버전의 파이썬을 사용하고 있는지는 알고 있는 게 좋습니다. 참고로 이 책은 파이썬 2에 대응하도록 작성되었습니다.

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

파이썬 2와 파이썬 3의 차이점에 대해 자세히 알고 싶으다면 다음 문서를 참조하세요:


4.3 프로그래머가 말하는 파이썬

ESREric S. Raymond과 같은 위대한 해커이 파이썬을 뭐라고 표현했는지 알아보세요:

  1. Eric S. Raymond 는 『성당과 시장The Cathedral and the Bazaar』의 저자며, 또한 오픈 소스Open Source라는 단어의 창시자입니다. 그는 파이썬이 자신이 가장 좋아하는 언어가 되었는지에 대한 글을 남겼습니다. 이 글은 제가 파이썬을 배우는 계기가 된 글이기도 합니다.

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

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