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

한빛출판네트워크

한빛랩스 - 지식에 가능성을 머지하다 / 강의 콘텐츠 무료로 수강하시고 피드백을 남겨주세요. ▶︎

IT/모바일

펄 20주년, 그와 관련된 여러가지 추억들

한빛미디어

|

2008-01-23

|

by HANBIT

10,053

제공 : 한빛 네트워크
저자 : chromatic
역자 : 남현우
원문 : Memories of 20 Years of Perl

틀리다고 증명하기

1991년, C로 매우 편리한 프로그램을 하나 만든 적이 있는데 말하자면 여러 개의 파일을 입력받아 동일한 내용을 포함한 것들끼리 그룹화 해주는 툴이었다. 당시 이 툴을 사용하던 수 많은 시스템 관리자들은 나에게 고맙다는 편지를 쓸 정도여서 스스로는 매우 자만심에 부풀어 있었다. 그러나 바로 그 해에 Usenix사람들이 이 프로그램을 보고 "어라, 펄로 작성하지 그러셨어요"라는 둥의 말을 건넸다.

그럴 때 마다 꽤 짜증이 나서 나에게 했던 충고들이 틀렸다고 말해주고 싶었고, 낙타 책(최근 분홍색 표지로 바뀜)을 사서 펄을 공부했다. 그러나 결국 그들이 옳았다는 것을 깨달았다.

Mark Dominus는 Higher-Order Perl의 저자이다.



내 첫 CGI 프로그램

2000년도에 난 샌프란시스코에서 개발 일을 하고 있었다. 내가 맡은 일은 자동으로 감사메일을 보내주는 간단한 폼 핸들러를 작성하는 것이었다. 난 지난 수년간 C프로그래머였고 그 전에는 포트란을 조금 했는데 이번에는 처음으로 펄을 사용하게 됐다. 사용자에게 폼을 제공해 주고 정보를 입력 받아서 몇 가지 에러를 체크하고, 감사메일을 보내주는 평범한 게이트웨이 역할을 하는 CGI였다.

펄을 몇 시간 공부한 뒤 폼 핸들러를 만들 수 있었고, 회사 웹 사이트에 바로 적용했다. 언어를 이렇게나 빨리 익힐 수 있고 금방 결과물을 낼 수 있다는 사실에 기뻐했다. C 언어는 간혹 나를 힘들게 했기 때문에 C로 개발하는 것을 그다지 좋아하지 않았다. 펄은 그런 것이 없었다.

다음날 난 내가 작성한 프로그램이 잘 돌아가고 있나 확인해보았다. 그 때 내 첫 버그를 발견했는데 그 때문에 메일을 보내는 부분이 무한루프에 빠지게 된 것이다. 내 폼을 이용했던 몇몇 불쌍한 사람들은 800통의 감사 메일을 받기도 했다. 물론 버그는 신속히 수정했다.

내 첫 Perl 프로그램에 경의를 표하며, 그 800번의 감사를 펄 커뮤니티에게도 드리고 싶다. 난 그 때 이후로 계속 펄을 사용하고 있으며 애호한다.

Fred Moyer는 mod_perl 해커 중 한명이다.



펄과 대학생

사람들은 펄은 특히 대학생들에게 있어서 얼마나 유용한지 잘 모르는 것 같다. 난 때때로 일을 쉽게 하고 싶을 때나 과제를 검사할 때 펄을 유용하게 썼던 기억이 난다. 그 중에서 아직까지 생생하게 기억나는 것이 하나 있어서 소개한다.

“컴퓨터 네트워크 입문” 수업시간에 학생들은 여러 가지 네트워킹 프로토콜(Stop-and-Wait, Go-back-N, Selective-Repeat)에 대해서 배웠다. 학생들에게는 윈도우 상에서 C로 짜여진 시뮬레이션 프로그램이 주어졌는데, 시뮬레이션은 각종 매개변수를 입력함으로써 결과를 달리할 수 있었다. 출력은 결과값과 매개변수, 통계적으로 계산된 값들이 파일로 저장됐다.

프로그램을 여러 번 반복해서 실행해야 했고, 그 때마다 결과 파일이 생성됐다. 이렇게 만들어진 결과자료는 분석하고 처리해서 그래프로 나타내는 등 통계치를 측정할 수 있도록 엑셀로 집어넣는 과정이 필요했다. 그런데 표본들이 너무 많은 파일로 분산되어있어서 엑셀에 바로 집어넣을 수가 없는 상황이었다. (물론 Visual Basic 스크립트를 작성하면 되겠지만, 만만치 않은 작업이다)

이 문제에 대해 고심한 끝에 난 펄로 스크립트를 작성하기로 했다. 파일에서 값을 추출해서 탭으로 구분된 파일 하나로 합치면 엑셀에 바로 입력할 수 있다. 스크립트를 작성하는데 시간이 약간 걸렸기 때문에 같은 팀원이었던 친구는 자기가 손으로 직접 하겠다며 데이터를 하나하나 추출해 내기 시작했다. 스크립트 작성하는 일은 몇 분 걸리지 않았기 때문에, 친구가 수작업을 막 시작했을 때 내 일은 막 끝났다. 결과적으로 엑셀에 집어넣을 입력 데이터를 만들 수 있었고 과제도 성공적으로 끝냈다. 이때까지 대충 15분도 걸리지 않았다.

나중에 같은 수업을 듣는 친구들과 과제에 대해 이야기할 기회가 있었는데, 어떤 친구는 입력 데이터 합치는 데만 3시간이 걸렸다고 했다. (!) 다른 친구는 1시간이 걸렸다고 했지만, 15분에 비하면 쓸데없는 고생이다. 말할 필요도 없지만 다들 펄을 몰랐기 때문이다.

펄이 얼마나 좋은지는 이 일화만으로 충분할 것 같다.

(최초에 Israel.pm Perl Success Story에 실렸던 글이다.)

Shlomi Fish는 1996년부터 펄을 위해 일했다. 스스로를 펄의 애용가이며 개발자인 동시에 대변인이라고 생각하고 있으며 오픈소스 기술 개발 일을 하고 있다.



고수되기

1999년 초에 새 직장에서 시스템 관리자로 일했었다. 그전까지는 독학으로 Unix, Linux를 공부했고, 자바로 고객 서비스 관리 프로그램을 만드는 일을 했었다.

새 시스템관리자로서 전임자로부터 일더미를 인수인계 받았다. 그 중에는 전임자가 직접 다운받아 설치했거나 주석을 달아가며 수정한 펄 프로그램도 있었다. 그로부터 두 달 동안 낙타책과 펄 쿡북을 사서 충분히 독학을 했기 때문에, comp.lang.perl.moderated 뉴스그룹에 있는 글도 대충 이해할 수 있고 간단한 질문은 스스로 답변을 달아 줄 수 있는 수준이 되었다.

그 무렵에 Everything Engine 개발에 참여하여 아주 간단한 일을 시작했고 PerlMonks에도 가입했다.난 PerlMonks에 두 번째로 가입한 외부인이었는데, 그 당시에는 투표기능이나 경험치 기능도 없었고, 몇몇 사람들이 수많은 마일스톤을 달성하기 위해 노력하고 있는 상황이었다.

회사에서는 문제해결 일을 했지만 틈틈이 펄을 접했다. 간단한 프로그램을 만들거나 각종 튜토리얼이나 서적을 찾아 읽고 사이트에 올라오는 질문에 답변을 하면서 펄을 익혀나갔다.

예전에 CPAN에 들어갈 만한 아이디어를 정말 열심히 찾던 기억이 난다. 그러나 내가 생각할 수 있는 모든 아이디어는 이미 누군가가 이미 생각했거나 이미 구현된 상태였다. 내가 펄 5에 처음으로 한 패치가 기억나는데, 그 당시 내가 구현한 기능에 대한 테스트를 거치지 않은 사실을 깨닫고 각종 테스트 케이스를 통과하도록 개선했었다. 사람들은 테스트가 필요하다는 것을 말하고는 있었지만 실제로 수행하고 개선하고 있지는 않았었다.

내가 올린 포스팅을 보고 헤드헌팅이 오기 시작했고, 세계적으로 가장 뛰어난 펄 프로그래머들과의 미팅도 가질 수 있었다. 위에 얘기했듯이 남들이 하지 않은 일을 했기 때문에 가능했던 것이다.

이것이 바로 어떤 커뮤니티가 되었든 주축 멤버가 될 수 있는 비결인 것 같다. 누군가가 나서서 해야 할 일들을 찾아서 직접 해라. 누군가의 허락을 받을 필요는 없다. 약간의 결단력과 고집, 그리고 약간의 시간만 있으면 된다.

펄이 탄생하고 11년이 지나기까지 펄을 모르고 지냈다는 사실은 안타깝지만, 그 후 9년 동안 함께 지낼 수 있어서 행복하다.

chromatic은 생산적인 일들을 많이 해오고 있다.



영문학 전공자가 얻어준 크리스마스 휴일

1998년 크리스마스직전에 amazon.com에서 처음 일을 시작하던 시절의 얘기다. 난 30,000주의 주식을 가진 CS전공자가 아니라 고작 250주를 가진 영문학 전공의 고객 상담원 대표였다. 내가 29,750주나 적은 주식을 가지고 있다는 사실은 개발팀 직원 대표의 팩스를 보다가 알게 되었다. 난 이 사실에 좌절하지 않고 그 이유가 무엇인지 알아보기 시작했다. 그 후 Learning Perl 책을 사서 2주 동안 정말 힘들게 공부했다. chmod +x를 몰라서 Chapter 2로 넘어가지도 못할 정도였다.

결국 난 이틀 동안 ‘세금+배송’가격을 계산기를 만들어서 그 주에 런칭되는 서비스에 들어갈 프로그램을 만들 수 있었다. 사실 웬만한 펄 프로그래머라면 30분만에 만들 수 있었을 만한 것이었지만. 이 프로그램으로 인해, 예전에는 미술 평론가였던 사람이 수백 명의 고객상담원과 수만 명의 고객들의 많은 시간을 절약해주고 짜증을 덜어줄 수 있었다. 난 회사에서 공로상을 수상했다. 만약 내가 Perl이 아닌 C나 Java로 이 같은 일을 하려 했더라면 결코 불가능했을 일이다.

당시 펄이 아닌 다른 언어를 접했더라면(어릴 때 BASIC이나 Assembly를 재미로 해 본 적은 있지만), 다시는 코딩에 손도 대지 않게 되었을 테고 지금처럼 개발자로 있지 못했을 것이다.

Ashley Pond V는 한때 작가였으나 현재 Seattlite에서 보조 애플리케이션 개발자로 일하고 있다. 그는 펄이 아니었으면 지금쯤 마케팅 일을 하고 있을지도 모른다고 생각하고 있다.



비에 젖은 낙타

내 대학시절 (1993말이나 1994초쯤) 할머니가 급하게 눈 수술을 하던 날이 유난히 기억에 남는다. 원래 할머니는 정기검진만 받기로 되어있었고, 어머니가 직장에 가는 길에 할머니를 병원에 데려다 드리기로 되어있었다. 그리고 할머니를 다시 모시고 오는 일은 내가 하기로 되어있었다. 병원이 내가 다니던 학교 근처였기 때문에 할머니 진료가 끝나고 내 첫 수업이 끝나는 시점에 내가 모시러 가기로 한 것이다. 그 날은 비가 무척이나 많이 내리던 날이었고 날씨는 점점 더 짓궂어지고 있었다.

그러나 내가 의사의 진료소로 갔을 때 계획했던 일들이 모두 틀어졌다. 의사는 할머니가 위급한 상황이기 때문에 즉각적인 치료가 필요하다고 말했다. 할머니는 전문의의 치료를 받아야 했고, 난 아무 갑작스럽게 그 상황을 대처해야 했다. 눈 검사는 여러 번 나뉘어 진행되는데, 각각의 검사는 시간이 꽤 걸렸다. 게다가 할머니는 응급환자로서 안과전문의사의 스케줄에 갑자기 끼어는 것이라 더 오랜 시간이 걸렸다. 그래서 난 할머니를 다음 예약 시간에 데려다 드려서 얼마나 걸릴지 모르지만 그곳에서 기다릴 수 있게 해 드렸다. 그 사이에 나는 다음 수업을 갔다가 점심을 먹고 다시 할머니를 데리러 갔다.

당시 컴퓨터과학 과목을 수강하고 있어서 오가는 길에 오라일리에서 출간된 펄 서적을 들고 다녔다. 틈틈이 책을 보면 수업 과제를 할 때 유용할 것이라고 생각했다. 과제는 펄로 이메일 처리 프로그램을 만드는 것이어서, 펄을 배우기 위해 당시 나에게 매우 비싸게 느껴지던 책을 샀다. 차로 돌아가는 길은 매우 험난했다. 날씨는 매우 춥고 비가 많이 내렸다. 할머니를 도와드려야 하는 상황에서 우산, 차 열쇠 등등을 손에 든 채 차 문까지 열어야 했다. 난 결국 새 책을 떨어뜨리고 말았다. 신기하게도 책은 모서리로 떨어졌는데, 순식간에 2~3cm 가량 물에 젖어버렸다. 내 새책! 아쉬운 마음을 표현할 시간도 없이 다음 진료를 갔다가 다시 학교로 돌아왔다. 난 오전 8시 이후에 주차된 차를 움직이면 하루 종일 건물 근처에는 주차할 곳이 없다는 사실을 잘 알고 있었다. 나머지 주차할 곳은 비 때문에 물에 잠겨 있었고, 내가 강의실에서 먼 곳이었다. 도로변에도 차 댈 곳이 없어서, 결국 빗속에서 진흙탕 속을 터벅터벅 걸어 다음 수업에 갔다. 긴 걸음을 하는 와중에 젖어버린 책과 할머니에 대한 생각을 많이 했었다.

난 공중전화를 찾아서 어머니께 이런 일이 있었다고 말씀 드렸다. 당시에는 핸드폰이 없던 시절이라 전화도 찾아야 했다. 할머니께서는 마침내 병원에 안착하셨고, 눈 수술을 무사히 마쳤다. 그 이후 난 흙탕물이 스며들어 갈색이 된 책에 필기를 꼬박꼬박 해가며 수업을 열심히 들었고, 학기를 잘 끝마칠 수 있었다.

Scott McMahan은 1991년 이후로 줄곧 펄을 다뤄오고 있다.



“난 펄로 된 프로그램이 실행될 것 같지도 않았다”

1995년 경, 웹 서버에 설치되어있던 perl 4.036(아마도) 버전이 펄과의 첫 대면이었다. CGI스크립트를 작성할 일이 있어서 펄에 관련된 여러 자료를 찾아보던 중 펄 문법이 얼마나 자유로운(heuristic) 것인지 알게 되면서 펄에 점점 더 매료되었다. 당시 파스칼과 C를 다루던 나로서는 펄로 된 문장들은 실행 될 것 같지도 않았다.

다행스럽게도 펄은 내가 만들고자 하는 스크립트를 작성할 수 있는 유일한 선택이었다. 난 계속해서 펄을 사용했고 차츰 익혔다. 단순히 일하는 도구로만 여기지 않고 펄을 즐겼다. 대략 2주 정도 걸려서 지금의 php와 유사한 기능을 하는 CGI 스크립트를 만들어 냈다. HTML과 perl이 혼합된 좋지 않은 구조였지만 아무튼 잘 작동했다.

때때로 Java나 심지어 LotusScript 등을 사용하기도 했지만, 내 주력 언어는 항상 펄이었다. 2006년 말에는 펄에만 집중해서 여러 모듈도 배포하고, 펄 언어에 대해 모르던 것들을 적극적으로 공부해나갔다.

그 결과 2007년은 프로그래머인 나에게 가장 행복한 해였다. 2007년에는 양질의 코드를 잔뜩 작성했다. 난 처음으로 비엔나에서 열리는 YAPC에 처음으로 참석하기도 했고, 거기서 만난 친구들을 집에 초대하기도 했다. 또 새로운 코드를 작성하고픈 의욕도 넘쳤다.

나는 아직 모르는 것이 많다. 펄은 처음 접해서 다루기 쉬울지 몰라도 제대로 정복하려면 수 년이 걸린다. 당신이 스스로 얼마나 뛰어나다고 생각하고 있을지는 모르지만, 실력 향상의 길은 어디에나 있으므로 항상 게을리하지 말아야 한다.

난 다른 언어들도 취미 삼아 사용하고 있다. 당신이 뛰어난 개발자가 되고 싶다면 여러 가지 언어를 다룰 줄 알아야 한다. 펄만 아는 사람이 펄에 대해 무엇을 알겠는가? 펄도 나름대로 장단점을 가지고 있다. 비록 펄이 완벽하지는 않지만, 적어도 내 생각에는 충분히 매력적인 언어다.

펄 커뮤니티와 래리, 매력적인 언어들이 있다는 것에 감사하며.

Andy Armstrong은 영국 컴브리아에 살고 있는 심각한 펄 남용자다.



awk에서 perl로

1990년대 초에 통계자료로 사용하기 위해 방대한 량의 데이터를 이리저리 정리하고 형식화하는일을 했었다.

시작은 awk로 했지만, awk는 한번에 파일 하나만 처리할 수 있기 때문에 금새 한계가 드러났다. 그 때 대안으로 눈에 들어온 것은 유즈넷 comp.lang 그룹에서 방금 릴리즈 소식이 올라온 펄 3.0이었다.

소스코드를 구해서 설치를 해야 했는데 다행히도 컴파일은 깔끔하게 잘 끝나서 바로 사용할 수 있었고, 물론 잘 작동했다. 이미 awk로 작업한 분량이 꽤 되기 때문에 동일한 프로그램을 펄로 다시 작성하고 싶지 않았다. 그래서 a2p 프로그램을 통해 펄 버전을 생성해 냈는데, 실행해 보니 기존 프로그램과 완전히 동일하게 동작하였다. 난 그 즉시 펄에 매료되었다. 한참 펄에 빠져서 comp.lang.perl에 여러 가지 질문을 하곤 했는데 그 때 마다 답변들을 칼같이 올라와 주었다. 지금도 그렇지만, 그 당시에 오래되었지만 활발한 펄 커뮤니티가 몇 개 있었는데 정말 굉장한 사람들이 많이 있었다. 난 펄 코드를 리팩토링하는 작업을 꾸준히 했고, 분석에 사용될 방대한 자료를 만들어냈다. 난 그 때 이후로 계속 Perl을 사용하고 있다.

Roe McBurnett은 통신회사에서 시스템 엔지니어로 근무하고 있다. 그는 전화 기술과 관련된 프로젝트에서 개발자, 시스템 엔지니어, 테스터 역할을 겸임하고있다.
TAG :
댓글 입력
자료실

최근 본 상품0