원문 : Lisp Hackers: Zach Beane


저는 제게 영감을 준 Lisper분들을 인터뷰하기로 결심했습니다. 저는 Lisp 커뮤니티에는 더 많은 인정과 명성을 받을만한 자격이 있는, 엄청난 프로그래머분들이 수 없이 많이 있다고 믿고있습니다. 다른 언어들과는 달리, lisp 사용자들은 여러 세대의 프로그래머들을 포괄하고 있습니다: 지금은 다른곳으로 자리를 옮기셨지만, 훌륭한 공헌을 하신 분들이 많습니다. 이러한 분들 역시, 이 시리즈에서 인터뷰하길 희망합니다.

제게 있어 첫번째로 인터뷰할 후보자는 너무 뻔했습니다. Zach Beane님은 커뮤니티 전체를 하나로 뭉쳐주었습니다. 이 분은 Quicklisp의 창시자이자 VectoZS3와 같은 수많은 유용한 오픈소스 라이브러리를 개발하셨으며, irc 채널 #lisp에서 항상 활동하시며 질문에 답변해주실 뿐만 아니라, 흥미로운 lisp관련 소식들을 공유하는 블로그를 운영하며, Planet Lisp 블로그 에그리게이터(aggregator)를 지원해주시고 계십니다. 이게 전부가 아닙니다..

저는, Maine에 살고 있으며 재미와 수입(profit)을 위해 Common Lisp 프로젝트를 해킹하는 것을 즐기고 있습니다.

저는 자그마한 핸드폰 & 인터넷 회사에서 일하고 있습니다.

현재 저희가 받은 벤더, 파트너의 제품 리포트에서 큰 데이터 파일을 분석하기 위해 Lisp를 사용하고 있습니다. 최근에는 Google earth를 시각화 하기 위한 내부 데이터로, KML 파일을 생성하기 위해 Lisp를 사용했습니다. 저는, 보고서를 작성시 다양한 시스템에서 데이터를 수집하기 위해 cl-ppcre, drakma, postmodern, cl-mssql, cxml와 같은 라이브러리를 이용합니다.

유용한 정보(stuff)를 매우 빠르게 생성할 수 있기에 Lisp는 기꺼이 받아들여졌습니다. 작은 회사의 작은 팀에 속했기에, 표준이 아닌 것을 사용한다고 해서 싸울 정도는 아닙니다. 제대로 동작해? 결과는 좋고? 그럼 문제가 없네.

몇몇 경우, 최종 결과물을 산출하기 위해서 lisp는 적절하지 않아, lisp로 제 생각을 프로토타이핑하여, C나 Perl과 같은 다른 언어로 최종 결과물을 작성합니다. 하지만, 저는 심지어 다른 언어의 데이터와 코드를 생성하기 위해 CL을 이용하기도 합니다. 결국엔 lisp가 섞이게 되어, 여전히 제 작업의 일부를 차지하게 됩니다.

Paul Graham님의 Beating the Averages는 매우 흥미롭고 엄청난 도구의 사용법을 설명했습니다. 이는 제가, “어떻게 하면 이와 같은 일을 할 수 있을까” 라는 호기심을 자극했습니다. 처음에는 CL이 오래되고 복잡하며 비대하다고 생각하여 Scheme으로 시작했지만, SBCL을 이용하고 나서부터는, 매우 훌륭하고 실용적인 도구라는걸 깨닫고, 이후에는 CL을 사용하는 것을 멈출 수 가 없었습니다.

여러 기능들(object system, first-class functions, fast compiled code, multiple implementations, a fantastic standard, 등등)이 훌륭하게 섞여있고, 제가 좋아하는 작업환경, Linux상의 Emacs에 잘 맞아 떴어졌기에 CL을 계속 이용하였습니다. 저는 제가 lisp를 잘 알게되어, 새로운 문제를 연구하거나 해결할때 어떻게 이를 활용해야할지를 재빨리 알 수 있게 된다면 좋겠습니다.

wigflip.com에서 lisp로 그래픽 작업을 할때입니다. visual toy를 제대로 동작하도록 가지고 노는건 언제나 즐겁습니다.

무언가를 빠르게 처리하는 것도 재미있습니다. 몇년 전에 저는 PDF 형식을 자동으로 체워주는 프로젝트를 맡았습니다. 이 프로젝트 초기 몇일간은 3rd-party 솔루션을 조사하기로 계획이 잡혔지만, 이 몇일간에 저는 CL-PDF와 CLSQL을 이용하여 프로토타입핑 작업을 하였습니다.

현재과 과거의 Common Lisp 사용자에 의해 증식된, Common Lisp에 대한 부정적인 인식이 많이 남아있습니다. 모든 사람에게 CL이 적합하다고 생각하진 않지만, 비판 중 몇몇은 현재 제대로 평가되지 못한 지난날의 결정에 관한 몇년전(혹은 몇십년전)의 불평과 흠집내기입니다. 만성적으로 CL을 불평하는 자들이 그들의 자리로 꺼져버려줘서, Common Lisp를 가지고 행복해하는 사람들을 그만 괴롭혔으면 합니다.

CL을 괴롭히기 좋아하는 유별란 트롤들이 있습니다. 사람들은 보통 대수롭지 않게 받아들이지만, CL에 대해 불평하는 “내부자”들은 이를 천재적인 시각이라 여깁니다. 매우 짜증나는 일이 아닐 수 가 없습니다.

Quicklisp가 가장 보람찼습니다. CL을 좀더 쉽게 이용하게 되어 실제 도움을 받은 사람들의 많은 긍정적인 피드백이 있었습니다. 좀 더 일반적으로 말하자면, 전체 CL 환경이 재미있게 변했습니다. 저는, 새로운 라이브러리를 시도해보고, 피드백과 버그 리포트를 보내고, 이제 시작한 사람들을 도와주는 이 모든 것들을 즐깁니다. Common Lisp에는 지식을 공유하고자 하는 영리하고, 배려심많고, 친절한 사람들이 수 없이 많습니다. 이들로 부터 배울 수 있고, 저 역시 제가 아는 것을 공유할 수 있어 행운이라 생각합니다.

보통, 프로젝트에서 저는 REPL 작업공간에서 더 많은 도구를 제작한다고 느낍니다. 저는 명령 라인에서 호출해야 하는 스크립트는 작성하지 않고, REPL에서 호출할 수 있는 함수를 작성합니다. 그리고 slime과 Emacs환경을 이용하여 파일에서, 계산에서, 웹에서, 데이터베이스 등의 데이터를 만들고 통신합니다.

저는 추적하기 쉽고, 하나의 일을 처리하되 잘 처리하는, 작은 함수들에 집중하는 것이 도움이 된다는 것을 발견했습니다. 품질좋은 테스팅 세분화, 추적, 중간 값 등등은 간단한 함수들의 자그마한 core로부터 유용한 집합으로 서로를 묶을 수 있도록 도와줍니다.

생산성을 높일 수 있는 아이디어로는…

작업 환경에서 불필요한 부분을 제거합니다. 자동화 코드를 작성합니다. 반복되는 복잡하고 지루한 일을 쉽게 만듭니다. 예를들어, 저는 제 프로젝트의 새로운 릴리즈를 만드는 귀찮은 일을 염려하곤 했습니다. 하지만, 최근에 작성한 제 일을 대신하는 CL 프로그램은 문서와 함께 tarball의 PGP-성명을 웹사이트에 업로드합니다. 이제, 저는 하루만에 10개의 프로젝트를 릴리즈 한다 해도 문제없습니다. 단지 몇몇 함수를 호출하기만 하면 됩니다.

편리하게 여러분의 환경을 개선하십시요. hyperspec나 다른 문서 소스에서 정보를 쉽게 찾아볼 수 있도록 만드세요. 새로운 프로젝트를 제작하기 쉽게 만드세요. 저는 quickproject를 이용하며, 또한 제 파일에 자동으로 표준문안(boilerplate)을 집어넣는 몇몇 Emacs 템플릿을 가지고 있습니다. 여러분을 위한, 여러분의 작업을 대신할 프로그램을 만드시면 좋겠습니다.

저는 이제 무언가를 새로운 환경에서 매우 빠르게 준비하고 운영할 수 있게 되었습니다. Quicklisp이전에는, 편리하고 유용한 라이브러리를 만들곤 했습니다. 하지만, 이를 컴퓨터간에 옮기거나 갱신하는 작업은 귀찮은 일이였습니다. 지금의 저는 Quicklisp를 이용하고 있고 이러한 것에 대해 걱정하지 않습니다.

Quicklisp의 관리자로써는, 몇몇 분들이 Common Lisp를 사용하고자하는 사람들로 돌아오는 것을 볼 수 있어 좋았습니다. 이는 제가 생각했던 바와 완전히 달랐습니다. 저는 제가 사용하기 편한, 시스템을 기반으로한 문서나 튜토리얼와 Common Lisp 개발, REPL 작업 환경 스타일을 위한 공간이라고 생각했습니다.

저는 Quicklisp를 문서화하고 싶습니다. 특히, 자신만의 소프트웨어를 공개하는 방법이나, 내부 프로토콜을 통해 자기 입맛에 맞추는 방법을 말이죠.

또한 Quicklisp에서 불러올 수 있는 모든 프로젝트들에 대한 문서들을 모으고 공유하고 싶습니다. 그리하면, 이 프로젝트가 무엇인지 한 장소에서 배울 수 있으며, 관련된 모든 문서들에 접근할 수 있게될 것입니다.

그리고, 프로젝트의 경험에 대한 피드백을 공유하기 쉽게 만들어서, 여러분이 필요로 하는 것에 맞는지를 결정할 수 있도록 만들고 싶습니다. Amazon에 있는 상품들들의 피드백처럼, Lisp 라이브러리에 대해서도 말이죠.

Common Lisp는 깊게 공부할 가치가 있는 훌륭한 시스템입니다.

jfdi