메뉴 바로가기 검색 및 카테고리 바로가기

한빛미디어

컬럼/인터뷰

파이썬 창시자 귀도 반 로섬과의 인터뷰

파이썬 프로그래밍 언어의 특징과 전망

윌슨: 과거와 비교해 봤을 때, 지금 파이썬에서 흥미 있고 새로운 분야가 애플리케이션 쪽이라고 생각하십니까?

반 로섬: 네. 사람들이 나에게 어떤 분야에 대해 묻는지를 보면 알 수 있습니다. 사람들은 아직도 파이썬 내부에서 일어나는 일이나 표준 라이브러리의 변화를 궁금해하죠. 하지만 막새로운 애플리케이션을 개발하기 시작한 사람들도 많습니다. 현재로선 오픈소스 애플리케이션 서버인 조프(Zope)가 가장 좋은 예입니다.

윌슨: 정확히 말해서 차세대 분야가 애플리케이션은 아닙니다. 현재 파이썬에서 가장 관심이 많고 활동이 많은 분야는 JPython과 Win32 파이썬입니다. 다른 분야보다 플랫폼에서 얼마만큼의 파이썬 관련 활동이 벌어지고 있는지 말씀해 주십시오.

반 로섬: 윈도즈 플랫폼이 특히 주의를 끌고 있습니다. 아주 전문적인 사람들도 윈도즈 플랫폼에 관심이 있죠. 윌슨씨가 마크 해몬드씨와 함께 일한다고 들었는데요.

윌슨: 네, 책을 곧 출판하려고 합니다. 아직 3개월 정도 남았죠. 제목은 Python Programming on Win32(Win32에서 파이썬 프로그램하기)이고 마크 해몬드와 앤디 로빈슨이 공동 집필했습니다.
최근에는 JPython에서 무슨 일이 일어나고 있는지 잘 모르겠습니다. 어떤 진전이 있습니까?

반 로섬: 네. 약간요. 배리 와소(Barry Warsaw, 현재 개발 리더)가 아직도 JPython 1.1. 최종판을 배포하려고 준비중인 것 같던데요. 그는 수많은 베타버전을 배포했고, 이번 최종판도 거의 마무리 단계에 있는 것 같았습니다. 물론 짐 휴기닌(Jim Huginin: JPython의 원 개발자)이 CNRI(귀도가 일하는 곳이며 파이썬 발전의 주요 후원사)를 떠나버린 안좋은 일도 있었습니다.

윌슨: 짐의 입장에서 보면 야비한 계략(dirty trick)이었습니다.

반 로섬: 글쎄요. 짐은 새 직장에서 정말 바빠 보이던데요.

윌슨: 그는 일에 집중하는 사람이죠. 확실히 그는 모든 것을 일에 바치지 않으면 일을 하지못하는 사람입니다.
파이썬을 Win32 플랫폼과 자바 플랫폼 모두에서 잘 운영할 수 있는 이유는 파이썬이 객체지향 언어이고, 사물을 추상화 할 수 있기 때문이라고 생각하는데요, 제 말이 맞습니까?

반 로섬: 파이썬에 교차 플랫폼이라는 뛰어난 특성이 있는 것은 확실합니다. 저는 파이썬을플랫폼에 의존하지 않는 언어로 만드는데 객체 지향 기술을 이용했습니다. 파이썬이 초창기부터 유닉스와 크게 연관이 없었다는 사실을 옳다고 인정하는 것처럼, 플랫폼에 독립적이라는 사실도 인정해야합니다. 파이썬은 실제로 초창기에는 매킨토시에서 발전했고, 그때 목표로 삼은 플랫폼 한가지는 아메바(OS 배포판)인데, 유닉스와 아주 다른 플랫폼입니다. 1980년대부터 이식성이 좋은 소프트웨어를 개발하고자 하는 제 개인적인 열망까지 더해져서, 유닉스 플랫폼에서만 사용할 수 있는 다른 스크립트 언어와 달리, 파이썬이 다중 플랫폼에서운영되도록 만드는데 중점을 두었습니다. 다른 스크립트 언어 개발자는 이렇게 말합니다."이 언어를 다른 플랫폼으로 이식할 일 따윈 없을 것입니다." 그 뒤 실제로 다른 플랫폼에이식할 수 있는 방법이 나타나자, 사용자들은 모두 이를 사용하려고 야단이었습니다. 파이썬은 원래 윈도즈로 이식 가능하도록 프로그램되었으며, 이러한 특성으로 인해 주목을 받았습니다.

윌슨: 좀 다른 질문을 하고 싶은데, 자바를 좀 간단하게 만들수 있는 언어가 정말 필요하다는 겁니다. 일부에선 자바스크립트(JavaScript)가 간단한 언어라고 하지만, 최근 자바 스크립팅 언어에 대한 열기가 식은 것처럼 자바스크립트에 대한 열기도 식은 것 같습니다. 파이썬은 다중 플랫폼이라는 것 외에도 원래 자바에서 사용하도록 고안된 스크립팅 언어라는 특징또한 있습니다. 자바를 사용할 수 있는 곳엔, 파이썬도 사용할 수 있는 거죠. 저의 생각에 동의하십니까?

반 로섬: 맞습니다. 자바에 대해서 말하자면, 파이썬이 다른 언어보다 가장 적당하다고 할수 있습니다. 그런데 웃기는 것은 언어적 관점에서 볼 때, 자바스크립트를 파이썬보다 더 많이 사용하지만, 한계가 있는 서브셋(subset)이라는 것입니다. 그 당시 자바스크립트는 브라우저 내에서 처음에 목표로 정한 플랫폼에서만 사용할 수 있다는 단점이 있었는데, 사실 플랫폼에 한정될 이유는 없었습니다. 그래서 결국은 거기서 끝나고 말았습니다. 자바스크립트에서는 이러한 특성을 바꾸는 것을 발전 방향으로 삼았는데, 자바스크립트 자체를 완성시키자는 예언과도 같았습니다. 하지만 자바에 전혀 도움이 안되었습니다. 자바는 브라우저에서운영되는 언어로 발전하더라도, 자바의 진짜 응용 분야는 지니(Jini)나 서블렛(Servlet) 같은분야이기 때문입니다. 지니나 서블렛에서 자바스크립트는 별로 쓸모가 없습니다. 자바스크립트는 지니와 서블렛을 지원하긴 하지만, 실행할 수 없으므로 쓸모 없게 됩니다. 게다가 자바스크립트는 JPython이 제공하는 계층이나 유전과 같은 언어적 특성을 없애 버립니다.

윌슨: 마이크로소프트가 대상 모듈을 스크립팅 언어나 다른 언어가 개념적으로는 파이썬 패키지 등과 상호 작용하듯이, 마이크로소프트의 애플리케이션과도 상호 작용할 수 있도록 실행하고 있는 것 같습니다.

반 로섬: 마크 해먼드가 이러한 윈도즈 스크립팅 호스트(Windows Scripting Host)분야를연구하고 있는데, 윈도즈 스크립팅 호스트 분야에는 파이썬이 완벽하게 부합됩니다. 실제로자바와는 별 관계 없습니다.

윌슨: 자바 개발자와 윈도즈 개발자들은 마치 파이썬이 프로그래밍을 이해한다는 듯이 생각하는 것 같은데, 나중에 흥미로운 개발 분야가 될 것 같습니다.

반 로섬: 글쎄요. 파이썬은 프로그래밍을 심각하게 생각합니다. C나 자바, 혹은 C++처럼요..제가 파이썬을 사용해본 바로 파이썬은 진정한 프로그래밍 언어이며 빨리 쓰고 버리는 스크립트 도구가 아닙니다. 대개는요.
매일 파이썬 모듈과 패키지로 만든 방대하고 복잡한 분산 시스템으로 작업하고 있습니다.자바나 일반적인 프로그래밍 언어 시스템에서 무엇을 찾는가하는 것에 중심을 맞춰야 합니다. 이것은 Tcl이나 펄 같은 언어를 찾는 평범한 애플리케이션 도메인과는 다릅니다.

윌슨: 요즘에 새로운 스크립팅 언어를 아주 고상한 것으로, 고상하면서도 강력하다고 설명하는 책이 많이 나왔습니다. 제게 있어 고상하면서도 강력하다는 것은 항상 아놀드 슈왈제네거와 프레드 아스테어를 합쳐 놓은 듯한 이미지가 떠오릅니다. 파이크(Pike)가 그 한 예일것 같은데요.

반 로섬: 루아(Lua)도 그렇죠.

윌슨: 네. MEL과 디즈니에서 만든 스퀴크(Squeak)라고 부르는 것도요.

반 로섬: 스퀴크는 스몰토크(Smalltalk)에서 생겨난 것 아닙니까?

윌슨: 네, 맞습니다. MEL처럼 영화 제작이나 3D 그래픽에 스퀴크를 사용합니다. 규모가 작고 한가지 목적을 위한 언어가 폭발적으로 생겨 나는 것 같습니다.
그런데 그런 작은 언어에 어떤 장점이 있느냐 혹은 파이썬처럼 좀더 일반적이고 상대적으로심각한 프로그래밍 언어를 더 좋아하는 사람이 있느냐 하는 것이 궁금합니다.

반 로섬: 글쎄요. 윌슨씨가 영화 제작을 언급한 것은 흥미롭습니다. ILM(Industrial Light &Magic)이 MEL이나 스퀴크가 사용되던 분야에 파이썬을 표준 언어로 제정했기 때문입니다.그러니까 영화 제작에도 범용 스크립팅 언어를 사용할 여지가 분명 있는 것입니다.

작고 특수한 목적을 위해 언어를 만들 것인가, 아니면 지금 있는 범용 언어를 사용할 것인가 하는 문제는 새로운 언어를 만들어야 한다고 생각하는 사람이라면 누구나 접하게 되는,결정하기 아주 어려운 문제입니다. 새로운 언어를 만드는 것과 지금 있는 언어를 쓰는 것둘 다 나름대로의 장점이 있습니다.

만약 자신에게 맞는 언어를 만들려고 생각했다면, 아마추어 언어 디자이너에겐 수많은 어려움이 있다는 것을 알아야 합니다. 진일보한 특징을 넣을 필요는 없다고 생각할 겁니다. "이언어의 이름은 계속 바뀔 테니까 한 글자로도 충분할 거다. 자주 사용하지 않을 거니까."라고 생각할 것입니다. 어쩌면 이름 앞에 1달러 짜리라고 쓸지도 모르지요. 그렇게 하면 인용부호 없이도 abcde... 와 같은 규칙적인 단어도 쓸 수 있게 됩니다.

어쩌면 "됐어. 우린 그저 간단한 기능을 실행시킬 거니까 그냥 한 줄이면 충분해. 단 한줄." 이라고 생각할 수도 있습니다. "우리는 배열을 실행시킬 지도 모르겠지만, 실행시키는데 제한을 둘 거니까 배열의 의미론에도 제한을 둘 수 있다. 왜냐하면 실행시키는데 모든시간을 할애하고 싶지 않기 때문이다." 아니면, "됐어, 배열할 필요도 없어."라고 말할지도모릅니다.

이렇게 해서 작은 언어의 버전 1.0은 아주 단순한 실행 기능을 하며, 단순한 의미론과 단순한 구문과 부합합니다. 그리고 변하지 않는 것은, 만약 이 언어가 좋다면 사용자들은 당신이생각지도 못했던 분야에 이 언어를 사용할 것이라는 사실입니다.

그러면 버전 2.0에는 새로운 특징이 추가되고, 작은 언어는 성숙하게 되어 결국에는 아주 커지게 됩니다. 로렌스 리버모어 국립연구소(Lawrence Livermore National Labs)에서 몇 년전에 이러한 과정을 거쳤는데, 아주 큰 숫자 계산을 스크립트하고 통제하는 프로젝트를 진행했지요. 배열의 종류가 많은 아주 포괄적인 소프트웨가 있어서 큰 애플리케이션을 운영하고, 알맞은 데이터 셋으로 인도하기 위해, 그리고 반복되는 회수를 통제하기 위해 새로운 스크립트가 필요했습니다.

해가 지날수록 복잡해져 결국엔 믿을 수 없을 정도로 복잡한 스크립팅 언어를 발명하게 되었습니다. 그때 파이썬 언어를 알게 되어 자체에서 만든 언어를 버리고 파이썬으로 바꾸고말았지요. (호환성이 떨어지기 때문에 지금도 자체에서 만든 언어를 버리고 있다.)

윌슨: 마지막 질문인데, 모든 사람이 프로젝트에서 사용하는 컴퓨터 프로그램을 사람들에게가르친다면 뭐가 좋겠습니까? 어떤 방식으로 가르칠 것이며, 사람들이 어떤 것을 알아야 됩니까?

반 로섬: 생각 좀 해봅시다. 현재 우리는 국방첨단연구사업소(DARPA)와 실제로 계약을 맺기에 앞서 막바지 협상 중입니다. 국방첨단연구사업소에서는 우리가 내년 전반기, 가능하다면 올해에 돈을 주고 우리를 고용할 것입니다.

이와 함께 5년으로 기간을 연장하자는 새로는 제안도 받았습니다. 우리는 돈을 더 올려 달라고 하고 있구요. 우리는 CMU의 앨리스 그룹(Alice Group)과 같은 여러 곳과 제휴하고 있습니다. 이 프로그램을 테스트할 고등학생 단체도 끌어들일 계획입니다.아주 흥미로운 새 파이썬 프로젝트를 시작하려고 하는데, 다른 두 가지 흐름을 따라잡기 위해서입니다. 하나는 교육적인 측면입니다. 파이썬에 관련해 자주 듣는 질문은 다음과 같습니다. "13살 짜리 애에게 어떻게 파이썬을 가르치면 될까요?", " 프로그래밍을 어떻게 배워야합니까? 소프트웨어라는 것을 다뤄본 적이 아예 없는데요." 러닝 파이썬(Learning Python)과 같은 좋은 책도 실제로 이에 답해 줄 수는 없습니다. 책에선 어느 정도 프로그래밍 할수 있는 사람을 대상으로 하기 때문입니다.

윌슨: 맞습니다. 이러한 책은 독자가 이미 프로그램할 수 있다고 생각하고 쓴 것이니까요.

반 로섬: 바로 그겁니다. 학생들에게 프로그래밍을 가르치면서 동시에 파이썬을 가르치는 것은 어렵습니다. 지금은 학생들에게 프로그래밍을 가르치거나 C나 C++, 혹은 자바를 동시에가르치는 것보다 파이썬이 훨씬 쉽다고 생각합니다. 왜냐하면 언어를 자세히 아는 것이 파이썬보다 훨씬 어렵기 때문이죠. 다른 스크립팅 언어는 거기서도 정말 잘 안돌아갑니다. 다른 언어들은 개별적인 특성과 세부 사항들이 많기 때문이지요.

윌슨: 그리고 다른 스크립팅 언어는 C나 쉘 프로그래밍 중 하나의 일부분같이 보입니다.

반 로섬: 예, 어쩌면 둘 다와 유사한지도 몰라요.

윌슨: 따라서 당신이 가르치고 있다는 개념은 완전한 개념은 아닙니다.

반 로섬: 그 말이 정말 맞습니다. 파이썬은 근본을 교육적인 언어에 두고 있고, C나 쉘 프로그래밍과 유사하지 않기 때문에, 그 점에서 기회가 많습니다.

이 프로젝트에서 나올 두 번째 흐름은 뉴비(newbie)가 필요했기 때문에 우리가 정말 다시초점을 맞추고 싶어했던, 프로그래밍 환경과 프로그래밍 툴입니다. 이러한 환경은 사용자가정말 사용하기 쉽게 만들어야 합니다. 또 한 편으로는, 우리는 그것을 전문가가 사용하기 쉽게 만들고 싶습니다. 그리고 우리는 지금 있는 프로그래밍 환경에 비해서, 컴퓨터를 다뤄본경험이 없더라도 쉽게 사용하기 시작할 수 있게 만들고 싶습니다.

프로그래밍 환경에는 전통적인 요소가 있으며, IBM이나 다른 업체에서 만든, 비주얼 베이직이든, 비주얼 C++이든, 자바 개발 환경에서든 간에, 애플리케이션을 시작하면, 2백만의 창과팝 업과 메뉴와 다이알로그와 선택자와 작은 아웃풋 장치가 있습니다. 이제 이 모든 것은어떤 점에서 하나의 목적을 향해 있습니다. 하지만 당신이 그것을 처음 본다면, 그것은 믿기지 않을 정도로 압도적으로 다가올 것입니다. 만약 그러한 환경과 친숙해져 있지 않다면, 그것은 전문가에게도 마찬가지입니다.

저는 윈도즈에서 파이썬을 개발할 때, 비주얼 C++을 사용했기 때문에 비주얼 C++에 익숙합니다. 그래도 비주얼 베이직 환경은 여전히 어렵습니다.

윌슨: 저도 그래요.

반 로섬: 그래서 우리는 파이썬에서 사용하는 것이긴 하지만, 결국엔 꼭 파이썬에 한정되지는 않는 툴을 만들고 싶습니다. 저는 JPython과, 나아가 자바에 완만하게 연결되게 만들고싶다는 꿈이 있습니다. 하지만 이 꿈은 지금 상황에서는 허황된 것일 뿐이고, 우리는 파이썬에만 집중할 생각입니다.

이러한 환경에서 결국엔 소프트웨어의 구조를 이해하도록 도와 주는 툴을 만들 수 있을 것입니다. 저는 뉴비(newbie)가 주위를 살펴보고, 변화를 꾀할 수 있다면, 뉴비(newbie)는 큰애플리케이션이 있는 상자를 열려고 노력할 것이라고 생각합니다. 우리는 그러한 실제적인가능성을 만들고 싶습니다.

여기에는 모질라(Mozilla)를 예로 들 수 있습니다. 모질라는 소스를 컴퓨터에 마음대로 다운받을 수 있는 오픈소스입니다. 그것은 디스크 공간의 몇 백 메가바이트에 해당하며, 컴파일하고 싶다면, 용량을 더욱 키울 수도 있습니다.

자신에게 적합한 넷스케이프 네비게이터(Netscape Navigator)를 만들 수도 있습니다. 그래서 이론상으로는, 아무 것도 당신이 메뉴바를 없애거나, GIF를 사용 불가능하게 만들거나,그 이외에 당신이 추가하고 싶은 어떤 것을 덧붙이기 위해 소스를 수정하는 것을 막을 수없습니다.

모질라는 코드의 큰덩어리로 되어 있기 때문에, 아무리 경험이 많은 소프트웨어 개발자라도모질라에 어떤 변화를 주기는 어렵습니다. 모질라에서 자기만의 요소를 덧붙이는 일은 아주어렵습니다. 제 개인적으로 파이썬에서 어떤 것을 수정하거나 덧붙이려 하면, 모질라에서 보다 훨씬 적은 노력으로도 큰 효과를 거둔다는 것을 알게 되었습니다.

더 나은 방법이 있기를 바랍니다. 소프트웨어의 구조를 더 명료하게 알 수 있도록 해주는높은 수준의 툴은 분명히 가치가 높을 것입니다.

윌슨: 그거 재미있군요. 현재 통용되는 윈도우 프로그래밍 모델을 말씀하는 것 같은데요. 객체 모델을 드러냄으로써, 적어도 윈도즈 플랫폼에서 그렇게 하는 흥미있는 방법을 제공해주면서 말이죠. 하지만 물론 소스 코드는 제공하지 않습니다. 구조만을 볼 수 있을 뿐입니다.

반 로섬: 예, 윈도즈 모델은 소스 코드를 숨기는 데에 기반하고 있습니다. 가끔 프로그래머들이 환경을 바꾸려 하지 않기 때문에, 소스 코드를 숨기는 데에는 충분한 이유가 있다고들었습니다.

윌슨: 그건 대단한 정보네요. 감사합니다. 인터뷰 즐거웠습니다.

반 로섬: 고맙습니다. 윌슨
다른 질문이 있으시면 언제든지 물어보세요!

TAG :
댓글 입력
자료실