본문 바로가기
Python/Python 문서고

파이썬으로 모두 붙여 봅시다

by 가므자 2012. 4. 23.

파이썬으로 모두 붙여 봅시다

Guido van Rossum
CNRI
1895 Preston White Drive
Reston, VA 20191
Email: guido@cnri.reston.va.us, guido@python.org

Position paper for the OMG-DARPA-MCC Workshop on Compositional Software Architecture in Monterey, California, January 6-8, 1998.

서문

파이썬은 진보된 스트립트 언어로서 성공적으로 거대한 소프트웨어 콤포넌트를 함께 붙이는데 사용되고 있습니다. 그 범위는 다중 플랫폼, 미들웨어 생산품, 그리고 어플리케이션 영역에까지 확대되고 있습니다. 파이썬은 객체-지향적 언어로서 고-수준 데이타 구조, 동적인 형정의, 동적인 엮기를 가집니다. 파이썬은 1991년 이후로 널리 퍼져서, 대단히 활동적인 사용자 공동체를 가지고 있습니다. 더 자세한 정보는 파이썬 웹사이트 http://www.python.org/을 참조 하세요.

Tcl처럼, 파이썬은 쉽게 C/C++/Java 코드로 확장 가능하며, 그리고 쉽게 어플리케이션에 내장될 수 있습니다. 파이썬은 심지어 Tcl의 구이 도구인, Tk마저 사용하는데, 사실-상 이식성 있는 표준 구이 도구입니다. 그렇지만, Tcl과는 다르게, 파이썬은 객체-지향 프로그래밍을 지원합니다. 파이썬 프로그래머는 클래스를 만들 수 있으며, 다중 상속을 사용할 수 있고, 메쏘드를 정의할 수 있으며, 연산자 중복 등등이 가능합니다.

파이썬의 힘

구문적으로, 파이썬의 코드는 실행가능한 의사 코드처럼 보입니다. 프로그램 개발은 파이썬을 사용하면 C/C++을 사용할 때 보다 5-10 배 빠르며, 자바를 사용할 때 보다 3-5 배 더 빠릅니다. 많은 경우에, 어플리케이션의 원형은 파이썬으로 작성될 수 있으며 C/C++/Java 코드로 작성될 필요가 없습니다. 때로, 그 원형은 충분하게 기능을 갖추고 잘 수행되어 최종 제품으로 배달될 정도여서, 개발 기간을 상당히 절약할 수 있습니다. 또 어떤 때는, 그 원형은 부분적으로 혹은 전체적으로 C++ 또는 Java로 변환될 수 있습니다 -- 파이썬의 객체-지향적 특성때문에 그 변환은 아주 쉽습니다.

가장 좋은 접근법은 때로 그 어플리케션의 중요-수행 부분만을 C++ 또는 Java로 작성하고, 파이썬을 고-수준의 제어와 맞춤처리에 사용하는 것입니다. 여기에는 다수의 일화가 있는데, 처음에는 순수한 C++코드로 시작한 어플리케이션이, 확장 언어로서 파이썬을 추가하고 나서, 새로운 버전이 나올 때 마다 파이썬으로 작성되는 비율이 높아지게 되고 그에 따라서, 여전히 그 어플리케이션의 전체적인 수행속도, 기능성 그리고 신뢰성이 증가했다는 일화가 있습니다. (예. 사례 연구: 상업적 환경에서의 파이썬, by Greg Stein, Microsoft, in Proceedings of the 6th International Python Conference, 그리고 Alice VR project at UvA and CMU.)

파이썬은 웹에서 강력한 존재입니다. 그것은 CGI 프로그래밍에 적합합니다 (모든 플랫폼에서: Unix, Windows and Mac); 모든 주요한 상업적 데이타베이스에 대한 인터페이스가 존재합니다. 파이썬은 주요 인터넷 그리고 웹 프로토콜에 대한 인터페이스와 라이브러리를 가지고 있으며, 그리고 HTML 해석기와 생성 도구를 가지고 있습니다. Infoseek가 작은 규모였을 때는 파이썬이 주요 구현 언어였습니다. 적어도 한 회사 (Digital Creations)는 파이썬을 사용하는 서버쪽 도구 모음을 팔고 있습니다. 그리고 마지막으로, 파이썬은 웹 브라우저(Grail)를 구현하기도 했습니다.

파이썬은 분산 시스템 세계에서도 곧잘 보여집니다. 그것은 Xerox PARC사에 의해서 지원되는 중요 ILU 언어중의 하나입니다. (언어-간 통일(Inter-Language Unification); CORBA 호환 분산 객체 시스템(compatible distributed object system)), 그리고 많은 분산 어플리케이션들은 ILU를 사용한 파이썬으로 구축되었습니다. 파이썬은 또한 오스트레일리아의, 퀸스랜드(Queensland) 대학에서 Hector 프로젝트에 사용되고 있습니다.

마지막으로, 파이썬은 윈도우 플랫폼에 매우 잘 통합되어 있습니다. 파이썬 프로그램은 COM 그리고 DCOM 서비스와 상호작동할 수 있으며, 심지어는 새로운 COM 그리고 DCOM 서비스를 구현할 수 있습니다 (비주얼 베이직을 사용해서는 불가능합니다!). 파이썬은 또한 마이크로 소프트사의 ASP(Active Scripting architecture) 스크립트 엔진으로 사용될 수도 있습니다.

통합언어로서 파이썬을 사용하기

이 워크샵의 주제와 적절하게, 파이썬은 많은 부분에서 통합 언어로 사용되며, 현존하는 컴포넌트들을 모두 접착("조종")하는데 사용됩니다. 여기에서 그 전략은 (C/C++으로 작성된) 파이썬 확장 모듈을 만들어서 C/C++으로 작성된 거대한 컴포넌트의 성능을 파이썬 프로그래머가 사용할 수 있도록 하는 것입니다. 확장 ("접착(glue)") 모듈은 파이썬이 직접적으로 C/C++ 함수를 호출할 수 없기 때문에 필수적입니다; 그 접착 확장은 파이썬의 데이타 형과 C/C++의 데이타 형 사이의 변환을 처리하고, 에러 점검, 변환 에러는 파이썬의 예외에 값들을 반환합니다.

접착 확장을 생성하는 것은 SWIG이 있어서 더 간단해졌는데, 함수와 메쏘드 원형을 담고 있는 머리부 파일을 읽어서 자동적으로, 필요한 형 변환 그리고 에러 점검 코드를 만들어 냅니다. 하위의 코드(보통은 C코드)가 객체-지향 모델을 사용하지 않은 경우에는, 그 접착 확장은 이번에는 적절한 클래스 계층도를 정의하는 파이썬 모듈로 포장될 수 있습니다, 반면에 수행속도가 중요한 연산은 C 코드에 위임됩니다.

파이썬을 사용하면, 더 쉽게 어플리케이션을 개발할 수 있는데 서로 다른 종류의 프로그래머들이 함께 한 프로젝트에서 작업할 수 있기 때문입니다. 예를 들어, 과학에 관한 어플리케이션을 구축할 때에, C/C++ 프로그래머들은 효율적인 수리적 알고리즘을 구현할 수 있으며, 반면에 같은 프로젝트에 있는 과학자들은 그들의 알고리즘을 사용하고 테스트할 수 있는 파이썬 프로그램을 작성할 수 있습니다. 과학자들은 저-수준의 프로그래밍 언어를 배울 필요가 없습니다, 그리고 C/C++ 프로그래머들은 관련된 과학에 대하여 이해할 필요가 없습니다.

파이썬이 아니라면, 때로는 방대한 양의 C/C++ 코드가 작성되어져서 충분히 유연한 입력 메카니즘을 제공해야지만이 과학자들은 (예를 들어) 실험적인 설정 작업 때문에 필요한 수 많은 변화들에 대하여, 프로그램에 데이타를 입력할 수 있습니다. 파이썬을 사용하면, 파이썬은 더욱 더 유연한 입력 메카니즘을 훨씬 짧은 기간에 작성하는데 사용될 수 있으며, 또는 파이썬 그 자체가 극도로 유연한 입력 메카니즘이 될 수 있습니다. 극단적인 예로서, Lawrence Livermore 국립 연구소는 파이썬을 사용하여 자체적으로 같은 목적을 가지고 개발한 스크립트 언어(BASIS)를 궁극적으로 대체하려 하고 있습니다; BASIS는 포트란 프로그램을 위한 간단한 입력 메카니즘으로 시작하였으나, 점차적으로 스크립트 언어의 많은 사양 (변수, 조건, 회돌이, 절차 등등)이 필요하게 됨에 따라서 점점 더 어색해졌습니다.

파이썬은 완전히 다른 어플리케이션 영역에 있는 많은 다른 컴포넌트들에 대하여 인터페이스가 실제로 존재하기 때문에, 파이썬은 복잡한 통합 작업에 이상적입니다. 파이썬은 상업적인 데이타 베이스를 수치계산-전문 코드에 연결할 수 있습니다; 그래픽 사용자 인터페이스를 네트워크 관리 도구에 추가할 수 있습니다; 가장 실제 어플리케이션으로부터 전자우편을 보낼 수도 있습니다.

결론

파이썬은 장기간의 수명을 가지는 거대한 어플리케이션을 디자인하는데 중요한 통합 임무를 수행할 수 있습니다. 파이썬은 사용자의 요구에 따른 변화에 신속하게 반응할 수 있도록 하여 줍니다. 사용자의 요구는 기초적인 하부의 컴포넌트를 변경하라는 것이 아니라 고-수준의 어플리케이션 논리에 적응하도록 요구합니다. 또한 파이썬은 어플리케이션으로 하여금 하부의 컴포넌트들에 대한 변경에 신속하게 적응하도록 하여 줍니다.


후기: 파이썬과 자바 통합

일명 JPython이라고 불리는, 완전히 100% 자바로 작성되어 구현된 새로운 파이썬이, 지금 개발중입니다; 알파 배포본이 평가판으로 사용가능합니다. JPython은 자바를 위한 하자없는 스크립트를 제공합니다. 그것은 파이썬 언어와 라이브러리의 완전한 구현이며, 자바 클래스 우주로의 직접적인 접근이 추가 되었습니다. 자바 코드 역시 파이썬 클래스를 사용할 수 있습니다 -- 예를 들어, 이것은 역호출에 대하여 중요합니다.

JPython의 가장 큰 자랑은 파이썬이 이미 C와 C++에 대하여 하고 있는 것을 자바에 대하여 하고 있다는 것입니다: 더욱 동적인, 더욱 표현적인 대안을 제공함으로써, 실행시간과 개발시간 사이의 교환관계에서 프로그래머들에게 더욱 많은 선택을 할 수 있도록 하여 주고 있습니다. 자바와 JPython의 통합은 C/C++과 파이썬의 통합보다 더 훌륭합니다: 자바의 Reflection API 덕분으로, JPython는 임의의 자바 클래스를 SWIG과 같은 포장 생성자의 도움없이 사용할 수 있습니다. (C/C++ 코드는 먼저 자바 고유의 코드 인터페이스를 통하여 자바에 사용가능해져야만 합니다; 자바에서 호출할 수 있다면 파이썬에서도 호출가능합니다.)

2001.11.06 한글판 johnsonj

출처 : http://coreapython.hosting.paran.com/etc/Glue%20It%20All%20Together%20With%20Python.htm

'Python > Python 문서고' 카테고리의 다른 글

첫 언어로서의 파이썬  (0) 2012.04.23

댓글