오래간만에 Lisp
오래간만에 Lisp을 다시 써보려니 잘 기억이 나질 않는다. reserved word의 집합이 그다지 크지 않은 게 이 Lisp이라는 언어 군의 특징이지만, 방언(dialect)이 많다보니 조금씩 달라서, 기억력이 나쁜 나로서는 헷갈리지 않을 수가 없다. 특히나 대학 시절에 잠시 사용했던 Scheme과 Common Lisp의 문법을 구분하지 못하겠다.
오늘은 Emacs Lisp(이하 EL로 표기)을 가지고 끙끙대고 있다. 왜 EL이냐 하면, 내가 Emacs로 개발을 하기 때문이다. 회사의 개발환경은 SSH을 통해 계정 서버로 로그인하고 여기서 다시 해당 업무 별 서버로 Kerberos rlogin해야 하기 때문에 IDE를 사용하기는 상당히 까다로운 편이다. 어쩔 수 없이즐거이 vim이나 Emacs를 사용하는데, 단순 텍스트 편집이라면 당연히 vim을 사용하겠지만, 프로그래밍을 하려면 vim는 커서를 움직이기 위해서조차 입력 모드와 명령 모드를 계속 번갈아가며 바꿔줘야 하는 번거로움이 있어서 IDE처럼 일반적인 입력 모드를 제공하는 Emacs를 쓰고 있다. (세벌식이나 Emacs를 사용하면 얼마나 즐거운지 다른 개발자들에게 아무리 전도해봐야 받아들이기 어려울 것이다.)
이런 연유로 Emacs에서 여러가지 설정을 바꿔서 개발의 편의성을 극대화하고 싶은데, 걸림돌이 바로 Emacs의 모든 설정이나 확장이 EL로 되어 있다는 점이다. 나는 Emacs도 좀 알고 일반적인 Lisp 문법도 좀 알지만, 막상 간단하나마 설정을 좀 고치려 하면 레퍼런스를 찾아보고 그러는 게 상당히 번거롭다. EL을 속속들이 모르면 Emacs를 제대로 활용한다는 게 제한적이 될 수 밖에 없다. 아마 이 점이 일반 유닉스 개발자들이 Emacs를 받아들이지 못하는 진입장벽 노릇을 하는 듯 하다. 나도 적지않은 어려움을 겪고 있다. 학교에서, 또는 개인적으로 Lisp dialect를 익힌 개발자들도 있겠지만, 아무래도 국내 개발자들은 크게 C/C++, Java, PHP, Perl, Python을 주로 사용하다보니 Lisp으로 시스템을 개발하는 사례는 드물고 이러다보니 다시 Lisp에 능숙한 개발자는 더 부족해지는 것이다.
EL 문서를 GNU info로 읽으려고 info의 단축키까지 확인해가며 EL 문서를 좀 읽었는데 Lisp dialect들은 볼 때마다 참 신선한 느낌을 준다. 요즘 다시금 개발자들 사이에서 Lisp 언어에 대한 관심이 증가하고 있는데, 마침 MIT에서 나온 Structure and Interpretation of Computer Programs라는 교과서는 Scheme을 이용하여 컴퓨터 프로그램의 개념을 설명하고 있어서 참으로 반갑다. 이 책은 MIT 홈페이지에서 읽을 수 있으며 “컴퓨터 프로그램의 구조와 해석”이라는 이름의 번역본도 국내에서 많이 읽히는 것으로 알고 있다.
대학 시절에 EL을 공부하겠다고 프린트물을 가져다놓고 공부하던 친구는 그때 EL을 다 익혔을까? 10년도 더 지난 후에 그걸 들춰보고 있는 나는 과연 끝까지 다 읽을 수 있을까? 바쁜 일상에 쫓기는 중년 개발자는 시작하자마자 걱정이 앞장을 선다.