1. 2007.11.08 프로그래밍의 도 제 4권
  2. 2007.11.08 프로그래밍의 도 제 3권

프로그래밍의 도 제 4권

4 권 코딩

 

도사 프로그래머 가라사대: "잘 짠 프로그램은 그 자체로 천국이며, 못 짠 프로그램은 그 자체로 지옥이니라."

 

4.1

 

프 로그램은 작고 민첩해야하며, 그 서브루틴은 마치 진주 목걸이처럼 연결되어 있어야 한다. 프로그램의 내용과 정신은 일관적이어야 한다. 프로그램은 너무 작아도 너무 많아도 아니되며, 필요없는 루프나 필요없는 변수가 있어서는 아니되며, 구조가 없어도 아니되며 지나치게 경직되어도 아니된다.

 

프로그램은 '최소 경악의 법칙'을 따라야 한다. 이 법칙이 무엇이냐고? 프로그램은 사용자를 최소로 놀라게 하는 방향으로 반응해야 한다는 뜻이다.

 

프로그램은 아무리 복잡하더라도 하나의 객체처럼 동작해야 한다. 프로그램은 외관보다는 내부의 논리에 따라 작성되어야 한다.

 

프로그램이 이러한 요구를 따르지 못하면 무질서와 혼란이 발생한다. 이를 고치는 유일한 방법은 프로그램을 다시 작성하는 것 뿐이다.

 

4.2

 

제자가 스승에게 묻기를: "프로그램을 짰는데 때로는 작동하고 때로는 작동하지 않습니다. 프로그래밍 법칙을 모두 따랐는데 왜 이런 일이 생기는지 도무지 알 수가 없습니다. 이유가 무엇입니까?"

 

스 승이 답하기를: "너는 도를 깨닫지 못했기에 당황하는 것이니라. 사람들이 이성적으로 행동하리라 믿는 것은 오직 바보뿐이다. 너는 어찌하여 사람이 만든 기계로부터 이성적인 행동을 바라느뇨? 컴퓨터는 결정론을 흉내내는 것 뿐이다. 오직 도만이 완전하다.

 

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

 

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

 

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

 

4.3

 

스승이 도의 본질을 제자들 중 하나에게 설명하고 있었다. 스승이 가로되 : "도는 모든 소프트웨어 내에 - 그것이 아무리 사소하다 하더라도 - 존재한다."

 

스승이 말했다.

 

"휴대용 계산기에도 도는 존재합니까?" 제자가 물었다.

 

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

 

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

 

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

 

"퍼스널 컴퓨터의 도스에도 도는 존재합니까?"

 

스승은 불편한 듯 헛기침을 하더니 자세를 조금 바꾸었다.

 

"오늘의 수업은 여기까지다." 스승이 말했다.

 

4.4

 

Wang 왕자의 프로그래머가 소프트웨어를 짜고 있었다. 그의 손가락이 키보드 위에서 춤을 추었다. 로그램은 에러 메시지 하나 없이 컴파일되었고 마치 봄바람처럼 가볍게 실행되었다.

 

"기가 막히군! 당신의 기술은 완전무결하구려!" 왕자가 감탄하며 말했다.

 

" 기술이라구요?" 프로그래머가 터미널에서 몸을 돌리며 말하기 시작했다. "내가 따르는 것은 모든 기술을 넘어선 도입니다. 내가 처음 프로그램을 작성하기 시작했을 때는 프로그램 전체가 한 덩어리로 보였습니다. 삼년이 지나자 나는 더 이상 덩어리가 보이지 않았습니다. 그 때부터 나는 서브루틴을 사용하기 시작했지요. 하지만 이제는 내게는 아무 것도 보이지 않습니다. 내 존재는 형태없는 무 속에 존재합니다. 나는 아무런 감각도 느낄 수 없습니다. 내 정신은 아무런 계획도 세우지 않고 자유롭습니다. 그저 본능의 지시에만 따를 뿐. 간단히 말해 내 프로그램은 스스로 작성되는 것입니다. 가끔 어려운 문제가 발생하는 것은 사실입니다. 어려움이 다가오는 것을 다가오면 속도를 늦춥니다. 그리고 조용히 관찰합니다. 그리곤 코드에서 한줄만 바꾸면 어려움은 마치 연기처럼 사라지고 말지요. 그리고나선 프로그램을 컴파일합니다. 나는 조용히 앉아 일의 즐거움이 내 존재를 가득 채우는 것을 느끼며 즐깁니다. 나는 잠깐 눈을 감고 명상한 다음 터미널을 끕니다."

 

왕자가 가로되, "내가 고용한 모든 프로그래머들이 그대처럼 현명하기를!"

'IT 정보&지식' 카테고리의 다른 글

프로그래밍의 도 제 5권  (0) 2007.11.08
프로그래밍의 도 제 3권  (0) 2007.11.08
프로그래밍의 도 제 2권  (0) 2007.11.08

프로그래밍의 도 제 3권

3 권 설계(Design)

 

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

 

3.1

 

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

 

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

 

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

 

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

 

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

 

전시회가 끝나는 날, 경비원은 호기심을 도저히 억누를 수가 없었다. "나는 도저히 이해할 수 없소. 궁금증으로 인해 나는 밤잠을 이룰 수 없을 것 같군요. 제발 나를 깨우쳐 주시오. 당신이 훔친 것은 대체 무엇이요?"

 

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

 

3.2

 

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

 

3.3

 

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

 

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

 

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

 

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

 

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

 

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

 

3.4

 

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

 

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

 

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

 

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

 

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

 

도사는 가볍게 한숨을 쉬며 답하였다. "그렇다면 디자인이 결코 완성될 수 없을것이오."

'IT 정보&지식' 카테고리의 다른 글

프로그래밍의 도 제 4권  (0) 2007.11.08
프로그래밍의 도 제 2권  (0) 2007.11.08
프로그래밍의 도 제 1권  (0) 2007.11.08
Return top