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

프로그래밍의 도 제 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
Return top