by Stephen Figgins, 역 한빛리포터 2기 김영환
나는 그 어떤 그래픽 인터페이스 보다도 커맨드라인을 더 좋아하며 화면상으로 그림을 움직이는 것 보다 명령어를 직접 타이핑하는 것을 원한다. 나에게 있어서는 키보드를 치는 작업이 오히려 클릭을 통한 작업보다 더 빠르며, 더욱 구체적으로 느껴진다. 윈도우의 아이콘을 클릭하는 것 보다 키보드를 통한 작업이 더 실질적으로 느껴지는 이유가 무엇인지는 모르겠다. 이들은 단지 비트와 바이트로 통하는 상호작용이 서로 다른 방식으로 표현되는 두 개의 추상화이다. 내가 키보드를 더 좋아하는건 아마도 내가 초창기에 심취했던 유닉스가 습관화 된 것인지도 모르겠다.
펄대신 파이썬을 사용함에 있어, 파이썬의 상호작용은 즉시 나의 관심을 사로잡았다. 내가 동료에게 파이썬을 시연해 보였을 때, 나는 한 줄 한 줄로 실행되어지는 Tk 애플리케이션으로 인하여 경탄을 머금었다. 그것은 GUI 환경에 버금가는 명령행상의 시연이었다. 물론 비주얼 툴을 가지고 인터페이스를 설계하는 것이 훨씬 더 쉬운 것은 사실이다. 단지 하나의 그림을 끌어 옮기는 것으로 수천 단어를 적어야 하는 수고를 대신할 수 있다. 아마도 어떤 표현에 대해 더욱 효과적으로 보이게 하는 탁월함은 우리가 커맨드라인에 대해 느끼는 공통된 관점이었다. 초보 프로그래머로써 우리는 우리가 행하는 것들에 대해서 좀 더 명확하게 보기를 원했다.
명령행(프롬프트)은 파이썬을 배우는데 있어서 매우 유용하다. 명령어를 입력하면 즉시 결과를 얻을 수 있다. 나는 모든 것을 한번에 타이핑 하는 것 보다 그것이 실행되는 것을 보면서 실행이 되지 않을 때에는 그 이유를 해결하기 위해 노력할 수 있기 때문에 명령행을 좋아한다. 여러분은 그저 하고 싶은 대로 명령행(프롬프트)을 사용한다. 내가 처음 파이썬을 배울 때, 나는 셸 프롬프트로써 명령행의 사용을 고려했었다. 그렇지만 결국 타이핑을 여러번 해야 한다는 것을 알았을 때, 나는 그 생각을 포기해 버렸다. 그렇다고 내가 위축되거나 게으른 것은 아니다. 나에게는 Nathan Gray라는 친구가 있었다.
Gray는 대화식의 명령라인을 더욱 편리하게 하는 툴인
LazyPython and deep_reload를 개발했다. LazyPython은 자동 인용·삽입·셸 빠져나가기를 제공한다. 인용은 다음과 같은 함수 또는 메소드 call을 제공한다.:
이는 다음과 같이 된다.
>>> func("arg1", "arg2", "arg3")
|
명령행에서 첫번째 캐릭터인 작은 콤마는 파이썬이 다음에 함수가 올 것인지 참조가 올 것인지 알 수 있게 하는 역할을 한다. 그것은 인용 부호와 괄호를 제공한다.
비슷하게, 여러분은 "/"사용하여 인용 없이 괄호들을 추가할 수 있다.
이는 다음과 같이 된다.
>>> func(arg1, arg2, arg3)
|
또는 간단하게,
이는 다음과 같이 됨을 나타낸다.
cd,
ls,
rm 그리고
cp와 같은 일반적인 함수는 자동적으로 인용되므로 ","을 타이핑 할 필요가 없으며, 자주 사용하는 함수들을 리스트로 만들어 놓을 수도 있다. Lazy Python은 시스템 명령어 호출을 더욱 쉽게 해준다. 단순히 "!"을 커맨드라인에 명령하는 것으로 여러분은 빠져나가기를 실행한다.
LazyPython와 비슷하게, deep_reload module은 재실행 명령을 위해 재귀적으로 삽입된 대체어이다. 그것은 주어진 모듈을 다시 로드한다. 이것은 여러분이 한번에 하나의 모듈을 다시 로드하는 것보다 전체 프로젝트를 다시 로드 할 때 더욱 유용하다.
파이썬 프롬프트를 향상시키는 것은 더 이상 새로울 것이 없다. Janko Hauser는 향상된 대화식 파이썬 프롬프트를
IPP라 명명했다. LazyPython과 같이 IPP는 "!"로 호출되는 빠져나가기 셸을 가지고 있다. IPP는 ctrl-r을 이용하여 점증적으로 찾을 수 있는 프롬프트 기록을 다루고 있다. 그저 찾고자 하는 문자를 타이핑하면 ipp가 prompt history를 검색한다. 그것은 tab completion을 가지고 있으며 커맨드 중간에 tabbing을 하는 것으로 가능한 리스트를 불러온다. 또한 IPP는 Jim Eggleston"s
docreader program의 탑에 도움말 시스템을 추가한다. 여러분은 "?"로 그것을 호출할 수 있다. 도움말 시스템은 모듈에 들어가 있는 문자열뿐만 아니라 외부 참조문서도 전체적으로 검색한다. 그것은 파이썬의 도움말 방법과 비슷하다.
IPP와 비슷하지만 더 간단하게 Robin Friedrich"s
interactive.py는 tab completion, help system 그리고 일반적인 셸 나가기에 있어 편리한 함수를 제공한다. 그 프로그램은 파이썬의 시작 프로그램으로써 사용됨을 의미한다. 파이썬이 자신의 대화식 프롬프트를 로드하면 그것은
PYTHONSTARTUP 환경변수를 찾는다. 그것은 여러분이 프롬프트상에 떨어뜨리기 전에 작성된 어떤 파일을 실행하거나 로드 할 것이다.
Gray는 지연방법(lazy way)을 따르고 있는데 그는 로빈 프리드리히의 작업을 계승하고 있다. 그는 그것에 LazyPython와 deep_reload를 추가함으로써 발전시켰고, 프리드리히의 도움말 기능을 변화하여
pydoc을 사용한다. 만약 여러분이 LazyPython 이나 deep_reload가 없다면, 시작파일은 아직 동작중이지만, 그것이 모두 다 함께 동작하도록 해야한다.
파이썬의 상호작용을 더욱 증가시키기 위해 Gray는
gracePlot(2D 플로팅 툴인
Grace를 위한 대화식 인터페이스)을 작성했다. Gray는 숫자상의 파이썬으로 gracePlot을 통합해왔고, C 플로팅 패키지를 과학적 탐구의 훌륭한 툴로 바꾸어왔다. 여러분은 공간적인 지점으로 바꿀 수 있으며, 또한 데이터들이 도착할 것을 도면화 할 수 있다.
위 모든 것들이 키보드상에서 조작되는 파이썬의 파워에 힘을 실어준다. 나는 아직도 배시 셸을 사용하고 있으며, 이러한 툴들이 대화식의 파이썬을 더욱 재미있게 해줬고, 심지어는 그래픽 어플리케이션을 다루는 것도 재미있게 해주었다. gracePlot의 대화식 향상 덕분에, Grace는 교육적이며 과학적인 프로그램을 지닌 비주얼 툴이 되었다. 이 훌륭한 툴들은 동료의 입에서 "끝내주는데~"라는 감탄사를 나오게 하는데 일조를 해왔다.
Stephen Figgins는 오라일리 네트워크의 편집자이자
파이썬 데브센타의 편집장이다.
이 기사를 번역해 주신 한빛리포터 2기 김영환님은 현재 명문 충남대학교에서 컴퓨터과학을 전공으로 하고 있는 공학도입니다.