앞으로    목차    1    제2장    3    4    5    6    7    8    다음으로

2. 실제 세계에 있어서의 파이썬

2.1. 얼마나 많은 사람들이 파이썬을 사용하나요?

분명히, 수십만 정도 확실히는 수만은 될 겁니다. 나날이 많은 사람들이 그 빛을 보고 있습니다. comp.lang.python 뉴스그룹은 대단히 활동적입니다, 그렇지만 거기에서 파이썬 사용자나 가입자의 정확한 숫자를 추산할 수는 없습니다.

제이셐 아트미악(Jacek Artymiak)이 파이썬 사용자를 세는 계수기를 만들었습니다; 현재의 숫자는 http://www.wszechnica.safenet.pl/cgi-bin/checkpythonuserscounter.py에 방문하시면 보실 수 있습니다. (이렇게 방문하신다고 해서 카운터가 올라가지는 않습니다; 아직까지 등록하지 않으셨다면 그 링크를 사용하세요). 대부분의 파이썬 사용자들은 반드시 등록할 필요는 없어 보입니다.

또 다른 통계는 파이썬 웹 서버에 대한 접근 빈도입니다. 다음의 http://www.python.org/stats/를 한 번 보세요.


2.2. 파이썬으로 실행되는 중요한 프로젝트가 진행되고 있는게 있나요?

CWI (파이썬의 예전 집)에서, 우리는 20,000라인의 하이퍼 미디어 저작 환경을 작성하였습니다. 5,000라인의 멀티미디어 원격회의 도구, 뿐만 아니라 많고 많은 작은 프로그램들을 작성하였습니다.

CNRI (파이썬의 새집)에서, 우리는 두 개의 거대한 어플리케이션을 작성하였습니다: Grail이라는, 완전한 사양을 갖춘 웹 브라우저와 (http://grail.cnri.reston.va.us/를 보세요), 그리고 노우보트 운영환경(Knowbot Operating Environment)이라는, 이동통신 코드를 위한 분산 환경을 작성하였습니다.

버지니아 대학은 파이썬을 사용하여 가상 실제 엔진을 제어하였습니다. http://alice.cs.cmu.edu/를 보세요.

제록스의 PARC에서 ILU 프로젝트로 ILU 인터페이스를 위한 접착제를 생성할 수 있었습니다. ftp://ftp.parc.xerox.com/pub/ilu/ilu.html를 보세요. ILU는 자유 CORBA 호환 ORB로서 호스트 언어를 사용하여 호스트 플랫폼에 분산 객체 연결을 가능하게 합니다.

마크 해몬드와 그레그 스타인(Mark Hammond과 Greg Stein) 외 몇몇 사람들은 파이썬과 마이크로소프트의 액티브 X 그리고 COM 아키텍쳐와의 인터페이스에 힘을 쏟고 있습니다. 이것은 곧 파이썬이 액티브 서버 페이지로 사용되거나 COM 제어기로 사용될 수 있다는 것을 의미합니다 (예를 들어 엑실이나 엑세스에 혹은 COM을 인식하는 다른 어떤 어플리케이션에도 정보를 삽입하거나 자동적으로 추출할 수 있다는 것을 뜻합니다). 마크의 주장으로는 파이썬이 심지어는 액티브 X 스크립팅 호스트로도 될 수 있다고 합니다 (약간 이상한 감각을 지니신 분이라면, JScript를 파이썬으로 만들어진 어플리케이션안에 내장하실 수도 있다는 말이지요). Python/AX/COM 은 파이썬윈 배포본에 포함되어 배포됩니다.

캘리포니아 대학의, 얼빈(Irvine)은 TELE-Vision이라고 불리우는 학생 관리 시스템을 사용합니다. 전적으로 파이썬으로 작성된 것입니다. 연락처: 래이 프라이스(Ray Price) rlprice@uci.edu.

호주에 있는 멜보른 크리켓 그라운드 (MCG)에서는 (a 100,000+ person venue) 점수 기록 시스템을 엠에스 윈도우에서 거의 파이썬으로 작성하고 있습니다. 파이썬의 표현식은 그 게시판에 나타나는 거의 모든 점수기록 항목을 작성하는데 사용됩니다. 단독적인 C++에서 Python/C++으로 이동하면 그렇지 않았으면 간단치 않았을 기능을 제공합니다.

다음 질문을 참조하세요.

주의: 이 FAQ 항목은 진짜로 오래되었습니다. 더 최신의 목록을 원하시면 http://www.python.org/psa/Users.html를 참조하세요.


2.3. 파이썬을 사용한 상업용 프로젝트들이 진행되고 있는것이 있나요?

그럼요, 수 많은 상업적 활동에서 파이썬을 사용합니다. 목록은 http://www.python.org/psa/Users.html을 보세요.


2.4. 파이썬은 얼마나 안정적인가요?

대단히 안정적입니다. 현재 버전 번호때문에 개발 단계가 시작단계라는 생각이 들지도 모르지만, 사실은 (0.9.x 에서 1.5.2까지 번호가 매겨진) 새롭고, 안정적인 배포본이 1991년 이후로 매 3개월에서 6개월 혹은 12개월 마다 나오고 있습니다.


2.5. 미래의 파이썬에 어떤 새로운 발전을 예상할 수 있나요?

뉴스그룹의 논의들을 찾아보세요! 워크삽의 진행(http://www.python.org/workshops/)에는 미래에 대한 흥미있는 관점들이 담겨 있기도 합니다.

또한 어떤 제안들이 있나 보시려면 http://python.sourceforge.net/peps/에서 살펴보세요.


2.6. 파이썬에다 비호환적인 변경을 해도 괜찮나요?

일반적으로 말하면, 안됩니다. 이미 수백만 라인의 파이썬 코드가 세계에 있습니다, 그래서 이미 존재하는 프로그램의 아주 작은 부분이상을 무효화시키는, 언어에 대한 어떠한 변경도 거절되어야 합니다. 여러분이 변환 프로그램을 제공할 수 있을지라도, 모든 문서를 갱신해야 하는 문제점이 여전히 있습니다. 만약 한 사양이 변경되어야 한다면 점진적으로 변경하는 길을 제공하는 것이 오직 유일한 방법입니다.

하위-비호환을 작성하기위해서 제안된 메카니즘은 http://python.sourceforge.net/peps/pep-0005.html에서 보세요.


2.7. 파이썬의 미래는 무엇인가?

미래의 활동에 대한 제안들을 알고 싶으시면 http://python.sourceforge.net/peps/를 보세요. PEP(파이썬 개선 제안)중의 하나는 PEP 처리과정과 PEP 형식에 관하여 다룹니다 -- PEP를 제출하고 싶다면 http://python.sourceforge.net/peps/pep-0001.html를 보세요. http://python.sourceforge.net/peps/pep-0042.html에는 파이썬 개발 팀이 손대고 싶어하는 희망목록들이 있습니다.


2.8. 도데체, PSA가 무엇인가요?

파이썬 소프트웨어 활동(The Python Software Activity)으로서 http://www.python.org/psa/ 는 많은 파이썬 열광자들에 의해서 창설되었고 파이썬이 개인 수준의 책임과 제품 이상이기를 원하였습니다. CNRI http://www.cnri.reston.va.us/에 둥지를 꾸렸습니다.

이제 PSA는 폐기되었습니다. 이제 더이상 가입할 필요가 없습니다.


2.9. 삭제됨


2.10. 삭제됨


2.11. 파이썬은 Y2K (2000년 문제)에 적응하나요?

2001년 1월 현재부로 아무런 문제도 보고된 바 없습니다. 그리고 Y2K 적응문제는 주제-거리가 안되는 거 같습니다.

파이썬은 무료로 제공되므로, 어떠한 절대적인 보증도 없습니다. 만약 숨겨진 문제가 있더라도, 책임은 사용자의 것이지 개발자의 것이 아닙니다, 그리고 손해에 대해서 보상을 요구할만한 그 누구도 없습니다.

파이썬은 날짜 처리를 하지 않습니다, 한다면 모든 것은 시간에 관한 유닉스표현에 기초한 것으로서 (비-유닉스 시스템에서도) 1970년 이후로 초를 사용하고 있으며 2038년이 될 때까지는 넘치지 않을 겁니다..


2.12. 파이썬의 초보 프로그래머를 위한 수업에서 좋은 언어인가요?

그렇습니다. 이 오래된 문제는 여러분이 파이썬을 프로그래머의 첫 번째 언어로서 가르치는데 따르는 모든 고민에 대하여 언급하려고 합니다. (파이썬을 교육용으로 사용하는 문제를 논의 하고자 하시면, edu-동호회 메일링리스트에 가입하는 것에 대하여 관심을 가질지도 모르겠습니다. http://www.python.org/sigs/edu-sig/을 보세요.)

여전히 학생들은 예를 들어, 파스칼, C와 같은 정적으로 형정의 되는 순차적인 언어라든가, C++ 또는 Java의 하부 모음과 시작하는 것이 여전히 일반적입니다. 제가 생각하기에 파이썬을 그들의 첫 번째 언어로서 배우도록 학생들을 도와주는 것이 더 좋습니다. 파이썬은 대단히 간결하고 일관적인 구문을 가지며 거대한 표준 라이브러리가 있습니다. 무엇보다 중요한 것은 파이썬을 초보 프로그래밍 강좌에 사용함으로써 학생들은 중요한 프로그래밍 기술, 예를 들어 문제 해결과 데이타 형 디자인과 같은 기술들에 집중할 수 있습니다.

파이썬으로, 학생들은 신속하게 회돌이나 절차등과 같은 기본적인 개념들을 습득할 수 있습니다. 심지어 초기의 강좌 코스에 사용자-정의 객체와도 작업할 수 있습니다. 예를 들어, 트리 구조를 파이썬의 내포 리스트로 구현할 수도 있을 것입니다. 학생들은 원하기만 한다면 첫번째 강좌에서 객체에 관하여 알수도 있을 것입니다. 이전에 전혀 프로그래밍 경험이 없는 학생에게는, 정적으로 형정의된 언어를 사용하는 것은 이상하게 보입니다. 그것의 부가적인 복잡함을 학생들은 배워야만 하며 강좌의 진도를 더디게 합니다. 학생들은 컴퓨터 같이 생각하기를 배우도록 노력합니다, 문제를 분해하며, 일관적인 인터페이스를 디자인하고, 그리고 데이타를 캡슐화합니다. 정적으로 정의된 언어를 배우는 것이 중요하기는 하지만, 학생들의 첫번째 프로그래밍 강좌로 가장 좋은 주제라고 필수적으로 언급할 수는 없습니다.

파이썬의 다른 여러면을 살펴보면 그것이 훌륭한 첫 번째 언어라는 것을 알 수 있습니다. 파이썬은 방대한 표준 라이브러리를 (자바처럼) 가지고 있어서 학생들에게 강좌의 아주 이른 시기에 무언가를 하라는 프로그래밍 프로젝트를 부여할 수 있습니다. 숙제는 4칙 연산 계산기 그리고 대차대조표 점검 프로그램에 한정되지 않습니다. 표준 라이브러리를 사용함으로써, 학생들은 실제 어플리케이션에 관하여 작업하는 것에 대한 만족을 얻을 수 있습니다. 거기에서 학생들은 프로그래밍의 기초를 배웁니다. 표준라이브러리를 사용하게 되면 또한 학생들은 코드 재상용에 대하여 배웁니다.

파이썬의 대화적인 인터프리터로 또한 학생들은 프로그래밍을 하는 중에 언어의 사양을 테스트해 볼 수 있습니다. 학생들은 그 인터프리터가 실행되는 윈도우를 유지하면서 프로그램 소스를 다른 윈도우에 입력할 수 있습니다. 만약 그들이 리스트에 관한 메쏘드들을 기억하지 못한다면, 다음과 같이 시도해 볼 수 있습니다:

 >>> L = []
 >>> dir(L)
 ['append', 'count', 'extend', 'index', 'insert', 'pop', 'remove',
 'reverse', 'sort']
 >>> print L.append.__doc__
 L.append(object) -- append object to end
 >>> L.append(1)
 >>> L
 [1]
그 인터프리터에서, 문서는 학생들이 프로그래밍하는 중에 언제나 가까이 있습니다.

또한 파이썬을 위한 훌륭한 통합환경(IDE)들도 있습니다. 귀도 반 로섬의 IDLE은 파이썬을 위한 플랫폼 독립적인 IDE이며 Tk를 사용하여 파이썬으로 작성되었습니다. 파이썬윈이라 불리우는 윈도우에 종속적인 IDE도 있습니다. 이맥스 사용자들은 이맥스를 위한 대단히 훌륭한 파이썬 모드가 있다는 사실을 알게되면 기쁠 것입니다. 이러한 모든 프로그래밍 환경은 구문색지정, 자동-들여쓰기를 제공하며, 그리고 코딩하는 중에 상호대화적인 그 인터프리터에 접근하도록 해 줍니다. IDE들에 관하여 더 알고 싶으시면, XXX를 보세요.

교육 언어로서 디자인 되었다는 이유로 여러분의 부서에서 현재 파스칼을 사용하신다면, 귀도 반 로섬이 파이썬을 모든 사람들에게 가르칠 수 있도록 간결하게 디자인 했으며, 그렇지만 실 세계의 어플리케이션을 구현할 만큼 강력하게 디자인 했다는 것을 아시면 여러분은 기쁠 것입니다. 파이썬은 초보 프로그래머에게 훌륭한 언어이며 그것이 파이썬을 디자인한 목적입니다. 파이썬 웹사이트의 essays/에 파이썬의 저자가 그 언어의 목적에 관하여 설명하여 놓은 논문들이 있습니다. 여러분이 흥미가 있을지도 모르는 한가지는 "모든 사람을 위한 컴퓨터 프로그래밍" essays/cp4e.html이라는 제목일 겁니다.

파이썬을 학교에서 언어로서 사용하기를 심각하게 고려하신다면, 귀도 반 로섬은 그 언어가 어떻게 여러분의 수업에 적용될지에 관하여 기쁜 마음으로 여러분에게 응답하여 줄 겁니다. "실제 세계"에서 파이썬을 사용하는 예제들을 알고 싶다면 파이썬FAQ.htm#2.2를 보세요.

파이썬이, 소스 코드와 통합환경(IDE)이 자유롭게 사용가능하지만, 고려의 대상에서 다른 언어들을 배제해서는 안됩니다. 무료 언어라면 (자바, 자유 C 컴파일러와 같은) 다른 언어도 있습니다, 그리고 많은 회사들은 기꺼이 학생들의 프로그래밍 도구에 사용료의 일부 혹은 전부를 부과하는 것을 유예할 것입니다. 그렇게 하여 졸업하는 모든 학생들이 그들의 도구를 사용하는 법을 알게될 것이라는 것을 보장만 한다면 말이지요. 다시 말해서, 가르쳐야할 언어를 위한 필수조건중의 하나가 자유롭게 사용되어야 한다는 것이면, 파이썬이 자격을 갖추고 있습니다, 그러나 이 필요조건은 다른 언어들을 배제하지는 않습니다.

파이썬의 직업이 C/C++/Java 직업들처럼 널리 유포되어 있지는 않더라도, 선생님들은 학생들에게 그들의 첫번째 강좌에서 필수적인 직업 기술을 가르치는 것에 대하여 걱정하지 않으셔도 됩니다. 학생들에게 직업을 주게 될 기술들은 상위 과정과 인턴과정에서 배우는 것들입니다. 그들의 첫번째 프로그래밍 강좌는 프로그래밍 기초에 견고한 토대를 쌓는데 있습니다. 그러한 강좌를 위한 언어를 선택하는데 있어서 기본적인 질문은 어떤 언어로 학생들이 이러한 재료들을 방해없이 혹은 제한없이 배울 수 있는가 하는것에 맞추어져야 합니다.

파이썬을 위하여 하나 더 주장한다면 C++과 같은 것을 사용하기에는 너무 과도한, 많은 작업들이 있다는 것입니다. 그것이 바로 파이썬, 펄, 티클, 그리고 비주얼 베이직이 많이 사용되는 곳입니다. 학생들이 이러한 언어들에 관하여 아는 것은 중요합니다. (내가 일해준 모든 고용주는 적어도 그러한 언어 한가지는 사용하였습니다.) 위에 나열한 언어중에서도, 파이썬은 프로그래밍 교과과정에서 가장 적격일 것입니다. 그 구문은 간결하고, 일관적이며, 그리고 그 교과과정에 포함되었을 다른 어떤 언어(C/C++/Java)와도 다르지 않습니다. 학생들이 파이썬으로 시작하게 되면, 한 부서는 다른 프로그래밍 강좌를 위한 토대를 구축하는 것과 동시에 학생들에게 "접착제" 언어로서 자주 사용되는 언어를 소개하는 것입니다. 추가적인 보너스도 있는데, 파이썬은 마이크로소프트의 COM 컴포넌트에 접속하기위해 사용될 수도 있습니다 (마크 해몬드(Mark Hammond)씨에게 감사합니다). 또한 Jython이라는 것도 있는데, 파이썬을 자바로 구현한 것으로, 자바 컴포넌트와 연결하는데 사용될 수 있습니다.

여러분이 현재 학생들을 파스칼 혹은 C/C++ 또는 자바로 시작하도록 하였다면, 여러분은 그들이 파이썬을 시작한 후에 정적으로 정의된 언어를 배우는데 어려움을 겪을까 걱정해서 인지도 모르겠습니다. 제가 생각하기에 이 두려움은 대부분 그 선생님이 정적으로 정의된 언어로 시작했기 때문이고, 우리가 다른 사람들을 우리가 배운 방식대로 가르치려는 경향이 있기 때문이라는 사실에 뿌리를 두고 있습니다. 실제로, 파이썬으로부터 이러한 언어들로 이동하는 것은 대단히 간단합니다.

C++과 같이 정적으로 정의된 언어를 북돋우기 위해서, 그들의 첫 번째 언어였던 파이썬과는 다르게, C++ 은 기계 의존적인 실행파일로 컴파일된다는 것을 설명함으로써 강좌를 시작하세요. 요점은 대단히 빠른 실행파일을 만드는 것이라고 설명하세요. 컴파일러가 최적화를 수행하도록 하기 위해, 프로그래머는 반드시 컴파일러를 도와서 변수들의 "형"을 지정해야 합니다. 각각의 변수를 특정한 형으로 제한함으로써, 컴파일러는 동적인 형을 허용하기 위해서 해야만 했던 책갈피-유지를 감소시킬 수 있습니다. 컴파일러는 또한 참조를 컴파일 시에 해결해야만 합니다. 그리하여, 그 언어는 속도를 얻고서 파이썬의 동적인 사양들을 희생합니다. 그리고 또, C++ 컴파일러는 형 안전을 제공하며 실행시간 대신에 컴파일 시에 많은 버그를 잡아냅니다 (많은 상업용 어플리케이션을 위해서는 심각한 고려 대상입니다). C++은 또한 다른 사람들이 객체의 구현을 건드리지 않기를 원하는 대단히 방대한 프로그램을 위하여 디자인 되었습니다. C++은 한 객체의 구현을 그의 인터페이스로부터 분리하는 대단히 강력한 언어사양을 제공합니다. 왜 이러한 구별이 좋은 것인지를 설명해 주세요.

C++ 강좌의 첫 번째 날은 그러면 C++ 이 무엇을 요구하며 무엇을 제공하는지에 대한 개론이 될 겁니다. 여기에서의 요점은 파이썬으로 한학기 혹은 두학기가 지나면, 학생들은 희망적이게도 능력있는 프로그래머들이 됩니다. 학생들은 회돌이를 다룰줄 알며 처리절차를 작성할 줄 알게 됩니다. 또한 객체도 다루며, 일관된 인터페이스의 이점에 관하여 생각하고, 그리고 행위를 지정하기 위하여 하부클래스화 하는 테크닉도 알게됩니다. 그리하여, C++에 대한 바람잡이 개론으로 그들은 C++에서 어떻게 객체와 하부클래스화가 보이는지 알 수도 있을 것입니다. 객체-지향 디자인에 깊게 숨은 어려운 개념들은, C++ 혹은 자바 같은 언어에서 보여지는 부가적인 장애물 없이 가르쳐집니다. 이러한 언어들중 하나를 배우게 되면, 그 학생은 이미 "road map"이라는 것을 이해하게 될 것입니다. 그들은 객체를 이해하며; 그들은 잔지 어떻게 개체가 정적으로 정의된 언어에 적용되는지 만을 배울 것입니다. 초보 프로그래머에게는 이상하게 보여지는 언어의 필수조건들과 컴파일러 에러는 이러한 새로운 문맥에서 이해가 됩니다. 많은 학생들은 파이썬으로 그들의 알고리즘을 빠르게 원형으로 만들 수 있는 능력이 도움이 된다는 것을 알게 될 것입니다. 그리하여, 그들은 새로운 언어로 그 코드를 작성하기 전에 그들의 아이디어를 테스트하고 디버그할 수 있으므로, C++ 형으로 작업하는 노력을 절감할 것이고, 그러는 동안에 그들은 주어진 숙제에 대한 실질적인 해결책을 찾을 것입니다. 형의 경직성에 대하여 짜증날 때, 기쁜 마음으로 컨테이너와 템프리트를 배워서, 파이썬으로 할 수 있었던 잃어버린 유연성을 되찾을 것입니다. 학생들은 또한 어떤 언어도 모든 작업에 최적인 것은 없다는 사실을 이해하게 될 것입니다. 그들은 C++ 이 더 빠르다는 것을 알게 될 것입니다, 그러나 그들은 실행속도가 중요한 때가 아니라면 파이썬으로 개발 속도와 유연성을 얻을 수 있다는 것을 알게 될 것입니다.

여기에 언급되지 않은 것에 관심이 있으시면, 파이썬의 뉴스그룹에 글을 올려 보세요. 거기에는 파이썬을 교육도구로서 사용하는 문제에 관하여 많은 사람들이 일하고 있습니다. 행운을 빕니다. 우리는 여러분이 파이썬을 수업에 이용하기로 결정하였다는 소식을 들으면 기쁘겠습니다.


앞으로    목차    1    제2장    3    4    5    6    7    8    다음으로