Vulnerabilities
야후 웹메일 취약점
IE 6.0 DoS 취약점
[HL2003-124]Microsoft Messenger 서비스 버퍼오버플로우 취약점
[HL2003-122]HP HP-UX dtprintinfo DISPLAY 환경변수 버퍼오버플로우 취약점
[HL2003-121]Sun Solaris aspppls의 임시화일 생성오류
Section Stories
머피의 법칙 그 유래를 찾아서 4부작 2편
지구상에서 가장 빠른 사나이(2편) 우리가 이제껏 알고 있는 머피에 법칙에 관한 모든 것은 잘못된 것이다. ...
얼음렌즈로 불 붙이기
호수나 샘에서 깨끗한 물을 퍼 온다. 물 속 가스가 제거되도록 약 10 분 간 끓인다. 그런 뒤 은박지 호일을 접어 약 5cm 정도 깊이의 접시를 만들어 물을 담고 천천히 얼린다. 아니면, 판매하 ...
머피의 법칙, 그 유래를 찾아서 4부작 1편
"세상에 어떻게 이럴 수가... 나는 도대체 되는 일이 하나 없는지..." 머피의 법칙이 뭔지는 알면서도 막상 그 유래에 관해서는 여러가지 설이 분분합니다. 희귀한 연구 결과를 주로 싣는 핫에어 사이트에 "머피의 ...
[2003/06/19] The Tao of Programming


"위대한 도사 튜링은 어느날 자신이 기계가 된 꿈을 꾸었다. 잠에서 깨어난 튜링이 탄식하며 구라사대 : "내가 꿈에 기계가 된 것인지, 기계가 꿈에 내가 된 것인지 알지 못하노라!" - 본문 중에서

하이테크 유머의 진수인 이 책은 도에 관한 중국 고전의 패러디 버전이다. 예를 들어 위의 그랜드 마스터 튜링이 기계가 되는 꿈을 꾼 이야기는 장자가 나비가 되는 꿈을 꾸었다는 호접몽을 패러디한 것이다. 따라서 평소 고전을 많이 접해본 독자라면 이 책에 등장하는 문구들이 결코 낯설지 않을 것이다.

이 책은 9장으로 나뉘어 있다. 각 장은 디자인, 코딩, 유지, 관리 등등 프로그래밍의 각각 다른 분야로 나뉘고, 본문은 고전의 인용과 프로그래밍을 할 때 필요한 지혜를 마스터 프로그래머(번역문에서는 "도사", "스승" 등으로 표현)와 경험이 부족한 견습 프로그래머( 번역문에는 "초심자", "제자" 등으로 표현)의 선문답으로 이루어져 있다. 관리자는 (당연한 얘기지만) 우둔하고 멍청한 사람으로 묘사된다.

    도사 프로그래머 가라사대:
    "사장(社長)에게 컴퓨터 프로그램을 보여줄 수는 있다.
    그러나 그가 컴맹에서 벗어나게 할 수는 없다."

    도사(道士) 프로그래머 가라사대:
    "프로그래머는 많이 고용(雇傭)하고 관리자(管理者)의 수(數)는
    줄여라 -- 생산성(生産性)이 절로 향상될 것이다."


대형 프로젝트를 설계할 때 관리자와 심한 의견차를 보인 적이 있는지? 많은 인력을 프로그래밍 프로젝트에 투입한다고 해서 그 일이 빨리 끝나는 것은 아니라는 것은 프로그래머라면 누구나 알 고 있다. 거기에는 많은 이유가 있을 것이지만 2가지로 줄여 설명하자면, 첫째, 노련한 프로그래머는 경험과 지식이 있기 때문에 연구할 필요가 없다. 둘째, 프로그래머는 다른 사람과 협동해서 일하는데 익숙하지 못하다. 물론 토론하는 것은 좋아하지만...

    관리자가 도사 프로그래머를 만나
    새 어플리케이션의 요구사항을 담은 문서를 건네주었다.
    관리자가 묻기를:
    "다섯명의 프로그래머를
    투입한다면 시스템을 설계하는데 얼마나 걸리겠소?"

    "일년이 걸릴 것입니다."
    도사가 간단하게 대답하였다.

    "하지만 우리는 이 시스템이 지금 당장 필요하단 말이요!
    프로그래머를 열명 투입하면 어떻겠소?"

    도사는 인상을 지푸렸다.
    "그렇다면 이년이 걸릴 것입니다."

    "프로그래머를 백명 투입한다면 어떻겠소?"

    도사는 가볍게 한숨을 쉬며 답하였다.

    "그 경우에는 시스템이 결코 완성되지 않을 것입니다."



프로그래머, 해커, Geek, 너드라 불리는 사람들에게는 다음과 같은 공통점이 있다. 첫째, 승진을 싫어한다. 관리자가 되면 좋아하는 컴퓨터와 놀 시간이 줄어들기 때문이다. 둘째, 아침에 출근하는 것을 싫어한다, 셋째, 외관이나 관습에 신경쓰지 않는다.

    6.3
    관리자가 해고(解雇)될 위기에 처했다. 하지만 그 밑에서 일하던 프로그래머가 새로운 소프트웨어를 개발하여 큰 성공(成功)을 거두었다. 결과적으로 관리자는 자리를 지킬 수 있었다.
    관리자는 보너스를 주려고 하였지만, 프로그래머는 거절(拒絶)하였다. 프로그래머 가로되. "나는 이 프로그램이 재미있다고 생각했기 때문에 시작했을 뿐입니다. 따라서 나는 아무런 보상도 바라지 않습니다."

    이 말을 들은 관리자가 말하기를, "이 프로그래머는, 비록 비천(卑賤)한 자리에 있으나, 종업원의 맡은 바 책무(責務)가 무엇인지 잘 알고 있다. 그를 보조 관리자로 승진시키도록 하자!"

    그러나 이 말을 들은 프로그래머는 다시 한 번 거절하였다. "나는 프로그램을 짤 수 있기 때문에 존재합니다. 만일 승진한다면 다른 사람의 시간을 갉아먹게 될 뿐입니다. 이제 가도 됩니까? 지금 짜고 있는 프로그램이 하나 있거든요."


    6.4
    관리자가 프로그래머들을 찾아가서 말하기를: "당신의 출근 시간을 조정하기로 했소. 이제부터 아침 9시에 나오고 5시에 퇴근하도록 하시오." 이 말을 들은 프로그래머들은 모두 분노(忿怒)하였고, 몇몇은 즉석에서 회사를 그만두었다.
    그래서 관리자가 말하기를: "좋아요. 그렇다면 작업 시간을 자유롭게 정하도록 하시오. 맡은 프로젝트를 스케쥴에 맞게 끝내기만 하면 상관하지 않겠소." 만족한 프로그래머들은 이제 정오에 출근하여 이른 새벽까지 일했다.


    아주 큰 컴퓨터 회사에서 온 프로그래머가 소프트웨어 전시회에
    다녀와 상사에게 이렇게 보고했다.
    "다른 회사에는 있는 프로그래머들은
    멋대로 행동하고 외관에는 신경쓰지 않습니다.
    그들의 머리는 길고 텁수룩하며,
    그들의 옷은 낡고 구겨졌습니다.
    그들은 숙소에서 만취해서 돌아다니며
    제가 발표할 동안에 야유를 해 댔습니다."

    상사가 가로되 :
    "너를 전시회에 보내지 말았어야 했다.
    그 프로그래머들은 세상사를 초월한 사람들이니라.
    그들은 삶을 어리석은 것으로 여기며,
    우연의 일치로 생각한다.
    그들은 아무런 거리낌없이 다닌다.
    그들은 아무 것에도 신경쓰지 않으니,
    그 것은 그들이 프로그램만을 위해 살기 때문이다.
    왜 그들이 사회적인 관습 따위에 신경을 쓰겠느냐?"

    "그들은 도 속에 살고 있느니라."



작가는 프로그래밍은 과학이라기 보다는 예술적인 측면이 더 많다는 것을 강조한다. 그리고 예술은 도를 통해 완성된다고 주장한다.


    제자가 스승에게 묻기를:
    "저 프로그래머는 설계도 않고, 문서 작성도 않으며
    자기 프로그램을 테스트해 보지도 않습니다.
    하지만 모두 그를 세계에서 가장 뛰어난
    프로그래머라고 칭송합니다.
    그 이유가 무엇입니까?"

    스승이 답하기를:
    "그 프로그래머는 도를 깨달았느니라.
    그는 더 이상 설계할 필요성을 느끼지 않는다.
    그는 시스템이 다운되어도 화내지 않으며
    그저 우주의 질서를 거리낌없이 받아들이기 때문이다.
    그는 더 이상 문서를 작성할 필요가 없다.
    그는 다른 사람이 자기가 짠 코드를
    이해하건 말건 신경쓰지 않기 때문이다.
    그는 테스팅할 필요가 없다.
    그가 작성한 프로그램은 모두 그 자체로 완벽하며,
    고요하고 또 우아하다.
    그의 프로그램은 모두 그 목적이 스스로 뚜렷하기 때문이다.
    아, 그는 진정으로 도를 깨달은 사람이니라."



이 책은 미국 네셔널 퍼블릭 라디오에서 특집 기사로 다루고, 컴퓨터샤퍼매거진에서 선정한 Top 10 Book에 포함되었고, 프렌티스홀북클럽이 선정한 최고의 책으로 뉴욕 타임즈에 리뷰가 실릴 정도로 많은 사랑을 받았다. 인터넷상에는 텍스트 버전이 아주 많다. 작가 Geoffrey James는 현재 프리랜서 작가로 일하고 있다. 아래는 한역판 전문:

================================

영역(英譯) 제프리 제임스(Geoffrey James)
필사(筆寫) 세쓰 로버트슨(Seth Robertson)
한역(韓譯) 윤태원


목차

제 1 권 : 무(無)
제 2 권 : 고대(古代)의 도사(道士)들
제 3 권 : 설계(Design)
제 4 권 : 코딩(Coding)
제 5 권 : 유지(Maintenance)
제 6 권 : 관리(Management)
제 7 권 : 운용의 묘
제 8 권 : 하드웨어와 소프트웨어
제 9 권 : 에필로그


무(無)
제 1 권

도사 프로그래머 가라사대 :

"숨겨진 에러 코드를 찾아내는 방법을 익혔다면 하산할 때가 온
것이니라."


1.1

무(無)에서 이상스러운 기운이 생겨났도다.
그 기운은 홀로 외로이 움직이지 않았다.
그 기운은 움직이지 않았으나 동시에 끊임없이 움직이고 있었다.
그것이 바로 모든 프로그램의 소스이다.
나는 그 이름을 알지 못하느니,
그것을 '프로그램의 도(道)'라고 부르게 되었다.

도가 위대하다면 운영체제(OS)도 위대하다.
운영체제가 위대하다면 컴파일러도 위대하다.
컴파일러가 위대하다면면
애플리케이션도 위대하다.

사용자는 만족하고 그리하여 세상은 조화로 충만하도다.

프로그래밍의 도는 멀리까지 미치며 아침 바람과 함께 돌아온다.


1.2

도는 기계어를 낳았다. 기계어는 어셈블러를 낳았다.
어셈블러는 컴파일러를 낳았다. 그리하여 세상은 만가지도 넘는
언어로 가득하게 되었다.

모든 언어는 아무리 비천한 것일지라도 그 뜻한 바가 있다.
모든 언어는 소프트웨어의 음양(陰陽)을 나타낸다.
모든 언어는 도 안에 그 자리가 있는 법이다.
하지만 할 수만 있다면 COBOL로는 프로그래밍하지 말지어다.


1.3

처음에 도가 있었다. 도는 시간과 공간을 낳았다.
그리하여 시간과 공간은 프로그래밍의 음과 양을 이루게 되었다.

도를 깨닫지 못한 프로그래머는
언제나 프로그램을 짤 시간과 공간이 부족한 법이다.
도를 깨달은 프로그래머는 언제나 목적을 달성할 수 있는
충분한 시간과 공간이 있다.

세상의 모든 이치가 그러한 법이니......




1.4

현명한 프로그래머는 도를 듣고 따른다.
보통 프로그래머는 도를 듣고 찾아 나선다.
멍청한 프로그래머는 도를 듣고 웃어 넘긴다.
그 웃음이 없었더라면 도는 존재하지 않았을 것이다.

가장 높은 음이 가장 알아듣기 힘든 법.
앞으로 나아감은 바로 후퇴하는 법.

위대한 재능은 인생의 후반에야 나타나는 법.
가장 완벽한 프로그램에도 버그는 존재하는 법.



고대의 도사(道士)들
제 2 권

도사 프로그래머 가라사대 ;

"사흘간 프로그래밍을 하지 않으면,
삶에 아무런 의미도 없어지느니라."


2.1

고대의 프로그래머들은 신비롭고 심오했도다.
우리는 그들의 사상을 감히 측정할 수 없었도다.
그리하여 우리는 그들의 외양만을 묘사할 수 있었도다.

그들은 물을 건너는 여우처럼 빈틈이 없다.
전장에 나선 장군처럼 방심하지 않는다.
손님을 맞는 여주인처럼 친절하다.
조각하지 않은 나무토막처럼 단순하다.
어두운 동굴 속의 검은 연못처럼 불투명하다.

누가 감히 그들의 마음과 생각에 담긴 비밀을 알아낼 수 있으리요?
답은 오직 도 속에 있을 뿐이다.


2.2

위대한 도사 튜링은 어느날 그가 기계가 된 꿈을 꾸었다.
잠에서 깨어난 튜닝이 탄식하며 가라사대 :

"나는 기계가 된 꿈을 꾸는 튜링인지,
튜링이 된 꿈을 꾸는 기계인지 알 지 못하노라!"


2.3

아주 큰 컴퓨터 회사에서 온 프로그래머가 소프트웨어 전시회에
다녀와 상사에게 이렇게 보고했다.
"다른 회사에는 있는 프로그래머들은
멋대로 행동하고 외관에는 신경쓰지 않습니다.
그들의 머리는 길고 텁수룩하며,
그들의 옷은 낡고 구겨졌습니다.
그들은 숙소에서 만취해서 돌아다니며
제가 발표할 동안에 야유를 해 댔습니다."

상사가 가로되 :
"너를 전시회에 보내지 말았어야 했다.
그 프로그래머들은 세상사를 초월한 사람들이니라.
그들은 삶을 어리석은 것으로 여기며,
우연의 일치로 생각한다.
그들은 아무런 거리낌없이 다닌다.
그들은 아무 것에도 신경쓰지 않으니,
그 것은 그들이 프로그램만을 위해 살기 때문이다.
왜 그들이 사회적인 관습 따위에 신경을 쓰겠느냐?"

"그들은 도 속에 살고 있느니라."


2.4

제자가 스승에게 묻기를:
"저 프로그래머는 설계도 않고, 문서 작성도 않으며
자기 프로그램을 테스트해 보지도 않습니다.
하지만 모두 그를 세계에서 가장 뛰어난
프로그래머라고 칭송합니다.
그 이유가 무엇입니까?"

스승이 답하기를:
"그 프로그래머는 도를 깨달았느니라.
그는 더 이상 설계할 필요성을 느끼지 않는다.
그는 시스템이 다운되어도 화내지 않으며
그저 우주의 질서를 거리낌없이 받아들이기 때문이다.
그는 더 이상 문서를 작성할 필요가 없다.
그는 다른 사람이 자기가 짠 코드를
이해하건 말건 신경쓰지 않기 때문이다.
그는 테스팅할 필요가 없다.
그가 작성한 프로그램은 모두 그 자체로 완벽하며,
고요하고 또 우아하다.
그의 프로그램은 모두 그 목적이 스스로 뚜렷하기 때문이다.
아, 그는 진정으로 도를 깨달은 사람이니라."


설계(Design)
제 3 권

도사 프로그래머 가라사대:

"프로그램을 테스트하고 있을 때는
설계를 변경하기엔 이미 늦은 다음이니라."


3.1

옛날에 컴퓨터 전시회에 참석한 사람이 있었다.
그는 매일 전시장에 들어가면서 문 앞에 선 경비원에게 이렇게 말했다.

"나는 상점을 터는 기술로 유명한 도둑이오.
미리 경고하지만 이 전시회도 내 손길을 벗어나진 못할 것이외다."

그의 말에 경비원은 무척 신경이 쓰였다.
전시회에 출품된 컴퓨터 장비의 가치들이 가히
수십억원에 이르렀기 때문이다.
경비원은 자칭 도둑의 일거수일투족을 감시하였다.
하지만 그는 휘파람을 불면서 전시장에서 전시장으로 돌아다닐 뿐이었다.

자칭 도둑이 전시회장을 나갈 때
경비원은 그를 옆으로 데려가
몸수색을 실시하였다.
하지만 몸에는 아무 것도 없었다.

다음날, 그는 다시 돌아와 경비원의 약을 올렸다.
"나는 어제 엄청난 수확을 올렸소.
오늘은 더 많은 것을 훔치고 말테요."
경비원은 그를 더욱 철저히 감시하였다.
하지만 아무런 소득도 없었다.

전시회가 끝나는 날,
경비원은 호기심을 도저히 억누를 수가 없었다.

"도선생, 나는 도저히 이해할 수 없소.
궁금증으로 인해 나는 밤잠을 이룰 수 없을 것 같군요.
제발 나를 깨우쳐 주시오.
당신이 훔친 것은 대체 무엇이요?"

도둑은 가볍게 미소를 지었다.
"나는 아이디어를 훔치고 있소."


3.2

옛날에 한 스승 프로그래머는 늘 구조화되지 않은 프로그램을 짰다.
한 제자가 그를 흉내내기 위하여 구조화되지 않은 프로그램을 짰다.
제자가 스승에게 자신의 성장을 평가해달라고 하자 스승은 프로그램이
구조화되지 않았다며 꾸짖었다.
"뱁새가 황새를 따라가면 가랭이가 찢어지는 법이다.
구조를 초월하기 전에 먼저 도를 깨달아야 하느니라."


3.3

위(魏)나라의 조정에 한 프로그래머가 있었다.
위후(魏候)가 프로그래머에게 묻기를:
"회계 프로그램과 운영체제 중에 설계하기 쉬운 것은 어느 쪽이요?"

"운영체제 이옵니다." 하고 프로그래머가 답했다.

위후는 믿을 수 없다는 표정으로 반문하였다.
"어찌 회계 프로그램처럼 하찮은 것이
운영체제의 복잡함을 능가한다는 말이요?"

"그렇지 않사옵니다.
회계 프로그램을 설계할 때는 프로그래머가
서로 다른 생각을 지닌 사람들을 조율해야만 하옵니다.
회계 프로그램이 어떻게 작동해야 하며,
보고서는 어떤 양식으로 출력되어야 하며,
세법에는 어느 정도로 충실해야 하는지
각양각색으로 떠들기 마련이옵니다.
반면에 운영체제의 외양에는 아무도 신경쓰지 않사옵니다.
운영체제를 설계할 때는 프로그래머는 기계와 아이디어의
가장 단순한 조화만 추구하면 되옵나이다.
이것이 운영체제가 설계하기 쉬운 까닭이옵니다.
옛말에는 이를 일컬어 사공이 많으면
배가 산으로 간다고 하옵니다."

크게 감탄한 위후가 미소를 지으며 다른 질문을 던졌다.
"그렇구려,그런데 어느 쪽이 더 디버깅하기 쉽소?"

프로그래머는 아무런 답도 하지 못했다.


3.4

관리자가 도사 프로그래머를 만나
새 어플리케이션의 요구사항을 담은 문서를 건네주었다.
관리자가 묻기를:
"다섯명의 프로그래머를
투입한다면 시스템을 설계하는데 얼마나 걸리겠소?"

"일년이 걸릴 것입니다."
도사가 간단하게 대답하였다.

"하지만 우리는 이 시스템이 지금 당장 필요하단 말이요!
프로그래머를 열명 투입하면 어떻겠소?"

도사는 인상을 지푸렸다.
"그렇다면 이년이 걸릴 것입니다."

"프로그래머를 백명 투입한다면 어떻겠소?"

도사는 가볍게 한숨을 쉬며 답하였다.

"그 경우에는 시스템이 결코 완성되지 않을 것입니다."


코딩
권(卷) 4

도사(道士) 프로그래머 가라사대:
"잘 짠 프로그램은 그 자체(自體)로 천국(天國)이며;
못 짠 프로그램은 그 자체(自體)로 지옥(地獄)이니라."


4.1
프로그램은 작고 민첩(敏捷)해야 하며, 그 서브루틴은 마치 진주(眞珠) 목걸이처럼 연결(連結)되어 있어야 한다. 프로그램의 내용(內容)과 정신(精神)은 일관적(一貫的)이어야 한다. 프로그램은 너무 작아도 너무 많아도 아니되며, 필요없는 루프나 필요없는 변수(變數)가 있어서는 아니되며, 구조(構造)가 없어도 아니되며 지나치게 경직(勁直)되어도 아니된다.

프로그램은 `최소(最少) 경악(驚愕)의 법칙(法則)'을 따라야 한다. 이 법칙이 무엇이냐고? 프로그램은 사용자를 최소로 놀라게 하는 방향(方向)으로 반응(反應)해야 한다는 뜻이다.

프로그램은 아무리 복잡(複雜)하더라도 하나의 개체(個體)처럼 동작해야 한다. 프로그램은 외관(外觀)보다는 내부의 논리(論理)에 따라 작성되어야 한다.

프로그램이 이러한 요구조건(要求條件)을 따르지 못하면 무질서(無秩序)와 혼란(混亂)이 발생한다. 이를 고치는 유일(唯一)한 방법은 프로그램을 다시 작성하는 것 뿐이다.


4.2
제자(弟子)가 스승에게 묻기를: "프로그램을 짰는데 때로는 작동하고 때로는 죽습니다. 프로그래밍의 법칙을 모두 따랐는데 왜 이런 일이 생기는지 도무지 알 수가 없습니다. 이유가 무엇입니까?"
스승이 답하기를: "너는 도를 깨닫지 못했기에 당황(唐慌)하는 것이니라. 사람들이 이성적(理性的)으로 행동하리라 믿는 것은 오직 바보뿐이다. 너는 어찌하여 사람이 만든 기계(機械)로부터 이성적인 행동을 바라느뇨? 컴퓨터는 결정성(決定性)을 흉내내는 것 뿐이다; 오직 도(道)만이 완전(完全)하다.

프로그래밍의 법칙은 일시적(一時的)이며, 오직 도(道)만이 영원(永遠)하다. 따라서 너는 깨달음을 얻기 위해 도를 명상(瞑想)해야 할 것이니라."

"하지만 제가 깨달음을 얻었는지 어떻게 알 수 있습니까?" 제자가 물었다.

"그때가 되면 프로그램이 제대로 돌아갈 것이다." 스승이 답했다.


4.3 스승이 도(道)의 본질(本質)을 제자에게 설명하고 있었다. "도(道)는 모든 소프트웨어--그것이 아무리 사소(些少)한 것일지라도--내(內)에 존재(存在)한다." 스승이 말했다.
"휴대용 계산기에도 도(道)는 존재합니까?" 제자가 물었다.

"그러느니라." 스승의 대답이었다.

"비디오 게임에도 도(道)는 존재합니까?" 계속 제자가 물었다.

"비디오 게임에도 도(道)는 존재하느니라." 스승이 말했다.

"개인용 컴퓨터의 도스에도 도(道)는 존재합니까?"

스승은 불편한 듯 헛기침을 하더니 자세를 조금 바꾸었다. "오늘의 수업(修業)은 여기까지다." 스승이 말했다.


4.4
프라이스 왕의 프로그래머가 소프트웨어를 짜고 있었다. 그의 손가락이 키보드 위에서 춤을 추었다. 프로그램은 에러 메시지 하나 없이 컴파일되었고 마치 봄바람처럼 가볍게 실행(實行)되었다.
"기가 막히군!" 프라이스가 감탄하며 말했다. "당신의 기술(技術)은 완전무결(完全無缺)하구려!"

"기술이라구요?" 프로그래머가 터미널에서 몸을 돌리며 말했다. "내가 따르는 것은 모든 기술을 넘어선 도(道)입니다. 내가 처음 프로그램을 작성하기 시작했을 때는 프로그램 전체(全體)가 한 덩어리로 보였습니다. 삼년(三年)이 지나자 더 이상 덩어리로 보이지 않았습니다. 대신 그 때부터 나는 서브루틴을 사용하기 시작했지요. 하지만 이제 내게는 아무 것도 보이지 않습니다. 내 존재(存在)는 형태(形態)없는 무(無) 속에 존재합니다. 나는 아무런 감각(感覺)도 느낄 수 없습니다. 내 정신(精神)은 아무런 계획(計劃)도 세우지 않고 자유(自由)롭습니다. 그저 본능(本能)의 지시(指示)에만 따를 뿐. 간단히 말해 내 프로그램은 스스로 작성되는 것입니다. 가끔 어려운 문제(問題)가 발생하는 것은 사실입니다. 어려움이 다가오는 것을 봅니다. 다가오면 속도(速度)를 늦춥니다. 그리고 조용히 관찰(觀察)합니다. 그리곤 코드에서 한 줄만 바꾸면 어려움은 마치 연기(煙氣)처럼 사라지고 말지요. 그리고나선 프로그램을 컴파일합니다. 나는 조용히 앉아 작업(作業)의 즐거움이 내 존재(存在)를 가득 채우도록 버려둡니다. 나는 잠깐 눈을 감고 명상(瞑想)한 다음 터미널을 끕니다."

프라이스 왕이 가로되, "내가 고용(雇傭)한 모든 프로그래머들이 그대처럼 현명(賢明)하기를!"


유지(維持)
권(卷) 5


도사(道士) 프로그래머 가라사대:
"프로그램의 길이가 세 줄 밖에 안되더라도,
언젠가는 손 볼 필요가 생기느니라."

5.1
조심스레 사용한 문의 경첩에는 기름을 칠 필요가 없다.
흐르는 물에는 이끼가 끼지 않는다.
소리도 생각도 진공(眞空)을 지나갈 수는 없다.
사용하지 않은 소프트웨어는 부패한다.
이 모두가 위대(偉大)한 미스테리다.

5.2
관리자가 어느날 프로그래머를 불러서 지금 짜고 있는 프로그램이 언제 끝날 것 같은지 물었다. "내일까지 끝내지요." 프로그래머가 즉시 답했다.
"좀 비현실적(非現實的)인 얘기같군요." 관리자가 다시 물었다. "정말로 언제까지 끝낼 수 있습니까?"

프로그래머는 잠깐 생각을 하더니 말했다. "사실은 약간 추가(追加)하고 싶은 기능이 있습니다. 그걸 다 하려면 적어도 두 주(週)는 걸리겠는데요."

"그것도 사실 기대하기 힘든 것 같군요." 관리자가 툴툴대며 말했다. "그냥 프로그램이 완성되면 알려주시오."

프로그래머는 그러마고 답했다.

많은 해가 지나 관리자는 은퇴(隱退)하게 되었다. 은퇴식장에 가던 도중 그는 프로그래머가 터미날 앞에서 잠들어 있는 것을 보게 되었다. 그는 어제 밤을 새가며 프로그래밍을 했던 것이다.

5.3
어느날 제자 프로그래머가 간단한 재무(財務) 프로그램을 짜라는 지시를 받았다.
제자는 많은 날을 열심히 일했다. 스승이 그의 프로그램을 점검해보니 스크린 에디터와 범용(汎用) 그래픽 처리 루틴 몇 가지와 인공지능(人工知能)을 응용한 인터페이스가 구현되어 있었다. 하지만 어디에도 재무와 관련된 기능은 없었다.

스승이 이에 대해 묻자, 제자가 시큰둥하게 대답했다. "그렇게 급하게 재촉하지 마세요. 언젠가는 재무에 관련된 기능을 넣을테니까요."

5.4
훌륭한 농부(農夫)가 자신이 심은 쌀 한 톨을 소홀히 하는 것을 보았는가?
훌륭한 선생(先生)이 반(班)에서 가장 어리석은 학생이라고 무시하는 것을 보았는가?
훌륭한 아버지가 아이를 굶주리게 하는 것을 보았는가?
훌륭한 프로그래머가 코드의 유지보수(維持補修)를 거부하는 것을 보았는가?


관리(管理)
권(卷) 6


도사(道士) 프로그래머 가라사대:
"프로그래머는 많이 고용(雇傭)하고 관리자(管理者)의 수(數)는
줄여라 -- 생산성(生産性)이 절로 향상될 것이다."

6.1
관리자가 끝도 없는 회의(會議)를 하면 프로그래머는 게임을 짠다. 회계사가 사분기(四分期) 이익에 대해 떠들면 개발 예산은 삭감될 위기에 처한다. 수석 과학자가 푸른 하늘을 논하면 구름이 몰려든다.
아, 이것은 진정한 프로그래밍의 도(道)가 아니다.

관리자가 결론(結論)을 내면, 게임 프로그램은 잊혀진다. 회계사가 장기(長期) 계획을 세우면 조화(調和)와 질서(秩序)가 회복된다. 수석 과학자가 당면(當面) 문제에 신경쓰기 시작하면 그것은 곧 해결된다.

아, 이것이 진정한 프로그래밍의 도(道)이다.

6.2
프로그래머는 왜 생산성(生産性)이 낮은가?
그들의 시간이 회의로 낭비(浪費)되기 때문이다.
프로그래머가 왜 툴툴거리는가?
관리자가 지나치게 참견하기 때문이다.

프로그래머가 왜 하나씩 회사를 떠나는가?
지쳤기 때문이다.

무능력(無能力)한 관리자 밑에서 일하는 프로그래머는 자신의 직업(職業)을 소중히 여기지 않는다.

6.3
관리자가 해고(解雇)될 위기에 처했다. 하지만 그 밑에서 일하던 프로그래머가 새로운 소프트웨어를 개발하여 큰 성공(成功)을 거두었다. 결과적으로 관리자는 자리를 지킬 수 있었다.
관리자는 보너스를 주려고 하였지만, 프로그래머는 거절(拒絶)하였다. 프로그래머 가로되. "나는 이 프로그램이 재미있다고 생각했기 때문에 시작했을 뿐입니다. 따라서 나는 아무런 보상도 바라지 않습니다."

이 말을 들은 관리자가 말하기를, "이 프로그래머는, 비록 비천(卑賤)한 자리에 있으나, 종업원의 맡은 바 책무(責務)가 무엇인지 잘 알고 있다. 그를 보조 관리자로 승진시키도록 하자!"

그러나 이 말을 들은 프로그래머는 다시 한 번 거절하였다. "나는 프로그램을 짤 수 있기 때문에 존재합니다. 만일 승진한다면 다른 사람의 시간을 갉아먹게 될 뿐입니다. 이제 가도 됩니까? 지금 짜고 있는 프로그램이 하나 있거든요."

6.4
관리자가 프로그래머들을 찾아가서 말하기를: "당신의 출근 시간을 조정하기로 했소. 이제부터 아침 9시에 나오고 5시에 퇴근하도록 하시오." 이 말을 들은 프로그래머들은 모두 분노(忿怒)하였고, 몇몇은 즉석에서 회사를 그만두었다.
그래서 관리자가 말하기를: "좋아요. 그렇다면 작업 시간을 자유롭게 정하도록 하시오. 맡은 프로젝트를 스케쥴에 맞게 끝내기만 하면 상관하지 않겠소." 만족한 프로그래머들은 이제 정오에 출근하여 이른 새벽까지 일했다.

운용(運用)의 묘(妙)
권(卷) 7

명인(名人) 프로그래머 가라사대:
"사장(社長)에게 컴퓨터 프로그램을 보여줄 수는 있다.
그러나 그가 컴맹에서 벗어나게 할 수는 없다."

7.1
제자가 스승에게 묻기를: "동방(東方)에는 `본사(本社)'라고 부르는 거대(巨大)한 트리 구조가 있습니다. 그것은 부사장과 관리자들로 지나치게 비대(肥大)해졌습니다. 그것은 `이리 가라' 또는 `저리 가라'는 메모를 무수히 내려 보냅니다. 하지만 아무도 그 메모의 진정한 뜻이 무엇인지는 이해하지 못합니다. 그 가지에는 매년(每年) 새로운 이름들이 나붙지만 결국엔 아무런 소용도 없지요. 어떻게 이렇게 부자연스러운 존재가 있을 수 있습니까?"
스승이 답하여 가로되: "너는 이 방대(尨大)한 구조의 존재를 깨달고, 거기에 아무런 이성적(理性的)인 목적(目的)도 없다는 사실에 당황하고 있는 것이다. 본사의 그 끊임없는 방향 전환에서 아무런 즐거움도 느끼지 못하겠느냐? 우리를 보호하는 가지 아래서 아무런 방해도 받지않고 프로그래밍할 수 있는 즐거움을 깨닫지 못했느냐? 왜 본사의 존재가 무가치하다는 데 신경을 쓰는 것이냐?"

7.2
동방(東方)에는 어떤 물고기보다도 더 큰 상어가 있다. 이 상어는 대붕(大鵬)이라는 이름의 새로 변한다. 이 새가 일으키는 바람은 하늘을 가득 채우는 구름과도 같다. 대붕이 땅을 가로지르면 본사(本社)에서 보내는 메시지를 가져 온다. 이 메시지는 갈매기가 해변에 떨어뜨리는 똥처럼 프로그래머의 수중에 떨어진다. 그 후 대붕은 바람을 타고 푸른 하늘을 등에 업은 채 집으로 돌아간다.

초보(初步) 프로그래머는 놀란 눈으로 대붕을 바라본다. 이해(理解)할 수 없기 때문이다. 보통(普通) 프로그래머는 대붕을 두려워한다. 대붕이 가져오는 메시지가 무섭기 때문이다. 도사(道士) 프로그래머는 터미날 앞에 앉아 일을 계속한다. 대붕이 다녀간 것을 알아차리지 못하기 때문이다.


7.3
상아탑(象牙塔)에 사는 위대한 마법사(魔法士)가 새로운 발명품을 스승 프로그래머에게 가져왔다. 마법사는 거대한 검은 상자를 밀며 스승의 사무실로 들어왔다. 스승은 조용히 그를 지켜볼 뿐이었다.
"이것은 통합적으로 분산된 범용(汎用) 워크스테이션이오." 마법사가 자랑스레 말하기 시작했다. "인간환경공학적으로 설계된 독점 운영체제와 제6세대 언어, 그리고 복수의 최신 사용자 인터페이스를 탑재하고 있지요. 이 워크스테이션을 제작하기 위해 수백명의 조수들이 몇 년이나 일해야 했소이다. 멋지지 않습니까?"

스승은 눈썹을 약간 치켜뜨며 대답했다. "정말 멋지군요."

마술사는 계속 말한다. "본사에서는 모든 사람들이 이 워크스테이션을 이용해서 새로운 프로그램을 개발해야 한다고 지시했소이다. 그러시겠습니까?"

"물론이지요." 스승이 대답했다. "워크스테이션을 즉시 컴퓨터실로 옮겨두겠습니다!" 마법사는 만족하여 자신의 탑으로 돌아갔다.

며칠 후 제자가 스승 프로그래머의 사무실로 들어와서 물었다. "새로 짠 프로그램의 리스트가 어디있는지 모르겠어요. 혹시 어디 있는지 아세요?"

"그래." 스승이 대답했다. "컴퓨터실에 있는 검정색 상자 위에 있다."

7.4
도사 프로그래머는 프로그램에서 프로그램으로 아무런 두려움 없이 옮겨다닌다. 관리자가 어떻게 변해도 그의 위치는 변하지 않는다. 그는 프로젝트가 취소되더라도 해고되지 않는다. 왜 그럴까? 도사 프로그래머는 도(道)로 충만(充滿)하기 때문이다.


하드웨어와 소프트웨어
권(卷) 8


도사(道士) 프로그래머 가라사대:
"바람이 불지 않으면, 풀은 움직이지 않는다.
소프트웨어가 없으면 하드웨어는 쓸모가 없다."


8.1
제자가 스승에게 묻기를: "한 컴퓨터 회사는 다른 회사들에 비해 월등히 큽니다. 난장이들 사이에 선 거인(巨人)처럼 보입니다. 이 회사의 한 부서(部署)만으로도 산업(産業)을 일으킬 수 있을 정도입니다. 왜 그렇습니까?"
스승이 답하여 가로되, "왜 그런 어리석은 질문을 하는가? 그 회사는 크기 때문에 큰 것이니라. 만일 그 회사가 하드웨어만 만들었다면 아무도 사지 않았을 것이다. 그 회사가 시스템의 유지보수만 했다면, 사람들은 그 회사를 하인(下人)처럼 다루었을 것이다. 하지만 그 회사는 이 모든 일을 하기 때문에 사람들은 그 회사를 신(神)으로 여기는 것이다! 그들은 남들과 경쟁하려 들지 않기 때문에, 아무런 어려움없이 세상을 정복하는 것이다."

8.2
어느날 스승이 제자의 곁을 지나치고 있었다. 스승은 제자가 휴대용 게임기에 열중해 있음을 알았다. "미안하지만 내가 좀 볼 수 있을까?" 스승이 물었다.
제자는 깜짝 놀라 게임기를 스승에게 건네주었다. "이 게임은 기초(基礎), 보통(普通), 고난도(高難度) 등 세 단계로 이루어져 있구나." 스승이 말했다. "하지만 이런 게임기에는 모두 또다른 레벨이 하나 더 존재하고 있다. 이 레벨에서는 게임기가 사람을 정복하려 들지 않으며, 사람도 게임기를 정복할 수 없다."

"대단하십니다, 스승님." 제자가 탄성을 질렀다. "어떻게 게임기에 또 다른 숨겨진 레벨이 있다는 사실을 알아내셨나이까?"

스승은 게임기를 땅에 떨어뜨리더니 발로 밟아버렸다. 그러자 갑자기 제자는 깨달음을 얻었다.

8.3
개인용 컴퓨터로 작업을 하는 프로그래머가 있었다. 어느날 그는 자신의 작업실에 놀러온 메인프레임 프로그래머에게 자랑하기 시작했다. "나를 좀 보라구. 나 혼자만 쓸 수 있는 운영체제와 화일 저장장치도 있어. 컴퓨터 자원(資源)을 다른 사람과 나누어 쓸 필요도 없지. 소프트웨어는 성능이 우수할 뿐 아니라 쓰기도 편해. 왜 메인프레임처럼 불편한 환경에서 일을 하는 거지?"

그러자 메인프레임 프로그래머는 자신의 시스템을 친구에게 설명하기 시작했다. "메인프레임은 컴퓨터실에서 명상(瞑想)하는 고대(古代)의 현인(賢人)처럼 앉아 있다네. 그 디스크 드라이브는 마치 거대한 기게의 바다처럼 서로 연결되어 있지. 소프트웨어는 다이아몬드처럼 다양한 면(面)을 지니고 있으며, 원시림(原始林)처럼 서로 얽혀있네. 각각 독특한 프로그램들은 마치 거세게 흐르는 강물처럼 시스템으로 들어왔다 나가지. 그게 내가 메인프레임을 좋아하는 이유라네."

개인용 컴퓨터 프로그래머는 이 말을 듣고 할 말을 잃었다. 하지만 두 프로그래머는 죽을 때까지 친하게 지냈다.

8.4
갠지즈강으로 가던 하드웨어가 소프트웨어를 만났다. 소프트웨어 가로되, "너는 음(陰)이요 나는 양(陽)이로다. 우리가 함께 여행한다면 크게 유명해지고 많은 돈을 벌 수 있음에 틀림이 없도다." 그리하여 그들은 한쌍이 되어 세상을 정복할 야심을 품게 되었다.
그들은 찢어진 누더기를 입고 가시나무 지팡이를 집은 채 절름거리는 펌웨어를 만나게 되었다. 펌웨어가 그들에게 가로되, "도는 음과 양을 넘어 존재하느니라. 도는 호수(湖水)의 물처럼 조용하고 움직이지 않느니라. 도는 명성(名聲)을 구하지 않으며, 따라서 아무도 그 존재를 알지 못하느니라. 도는 부(富)를 구하지 않으니, 도는 그 자체(自體)로 완전(完全)하기 때문이니라. 도는 시간과 공간을 넘어 존재하느니라."

크게 부끄러워진 소프트웨어와 하드웨어는 집으로 돌아가고 말았다.

발문(跋文)
권(卷) 9

마침내 도사(道士) 프로그래머 가라사대:
"하산(下山)할 때가 되었다."


아마존
[18] [17] [16] [15] [14] [13] [12] [11] [10] [9] [8]
F.H.Z Server 접속자
2014/12/18 09:21 PM
DRILL 23명 / IRC 6명
Errata
BBUWOO


시작하는 모든 사람들을 위한 필독서 "질문은 어떻게 하는것이 좋은가"로 "시원한데 긁어줬다", 혹은 "너 잘났다"는 등의 극에서 극을 달리는 반응으로 리눅스계에 일대 센세이션을 일으켰던 장본인, OOPS.ORG를 통해 약 1만 8천...
Book Review
Spidering Hacks


[Anonymous님 曰] 서핑만으로는 부족하다고 느껴질 때가 있는 법이다. 좋아하는 책이 판매순위 몇위인가를 체크하는 것도 지겹고, 다운로드하...
Free Hacking Zone
Copyright © 1999-2003 by (주)해커스랩
개인정보 보호 정책