현자의 코드(Philosopher's Code)

picknic12의 이미지

현자의 코드(Philosopher's Code)

picknic12@naver.com

프로그래머가 고수가 되기 위해서는 그리고 실용주의적인 프로그래머가 되기 위해서는 프로그래밍의 각종 엘리먼트(element:요소)들을 조화롭게 통합시켜 하나의 작품을 만들어내는 능력이 필요하다. 이는 고대의 현자들이 이룩한 내면의 연금술, 즉 깨달음의 연금술과 비슷하다. 고대의 현자들이 수행을 통해 내면의 빛을 얻었다면 프로그래머는 코딩을 통해서 의식의 각성(Awakening)과 내면의 각성을 얻으며 그로 인해 얻어진 결과물이 바로 현자의 코드(Philosopher's Code)라고 말하고 싶다. 이 글은 비록 부족한 필자지만 프로그래머가 현자의 코드(Philosopher's Code)를 작성하는 길을 제시하기 위한 글임을 밝힌다.

머리말

본 글은 필자가 전산분야에 발을 들여 놓은 이후 지금까지 17년간 배우고 익힌 지식들을 토대로 작성한 글이다. 우리 프로그래머 모두는 일반적으로 작성되는 프로그래머의 코드(Programmer's Code)라고 하는 통상적인 코드는 작성할 수 있다. 하지만 우리는 더 좋은 코드를 작성하기 위해서 노력한다. 물론 상황에 따라 생산성에 의해 그러한 좋은 코드를 작성할 시간을 갖지 못하는 경우도 있다. 하지만, 어떠한 상황에서도 고객의 요구사항과 설계에 정의된 제시사항에 따라 자신의 진실성을 반영하는 코드를 작성해야 한다. 이렇게 마음 깊은 곳에서 나오는 진실성에 토대를 둔 코드를 필자는 현자의 코드(Philosopher's Code)라고 이름 붙였다. 현자의 코드(Philosopher's Code)란 용어는 연금술의 대가, 헤르메스 신의 현자의 돌(Philosopher's Stone)이라는 글귀를 참고한 것이다. 단, 본 글은 신비주의적인 연금술을 소개하고자 하는 글이 아니라 진지한 프로그래머로서 자신을 성찰하고 자신의 진실된 마음을 반영하여 창조적인 코드를 작성하고자 하는 프로그래머들을 위한 안내 글이다. 또한 본 글은 프로그래머의 삶을 확장하여 코딩을 자아성찰을 위한 도구로서 활용하였으면 하는 뜻에서 집필한 글임을 밝힌다.

철학과 전산학의 조우(遭遇)

과연 진실로 철학과 전산학은 회통(會通:서로 교류하고 소통함)할 수 없는가? 이러한 의문은 몇 년 전 매트릭스 영화를 통해서 해소되었으며 영화에서 컴퓨터세계와 철학사상은 서로 교류하고 소통할 수 있음을 보여주었다. 전산학의 사상은 폰노이만, 알렌 튜닝, 도날드 누스, 알렌 펠리스, 에드가 다이즈크스트라, 죤 바쿠스, 로버트 플로이드, 찰스 안토니 리차드 호어, 데니스 리취, 켄 톰슨, 니쿨라우스 워스, 마빈 민스키, 죤 맥카시, E. F. 코드 등등 기라성 같은 석학들에 의해 구축되었고 기반이 마련되었다. 그리고 이러한 전산학의 사상에는 깊이 있는 사유, 즉 진지한 사색이 언제나 함께하였다. 그러한 진지한 사색은 철학자나 현자들의 사색과 다를 바가 없다고 보는 것이 필자의 견해이다.

필자가 알기에 실용주의적 관점에서 전산학의 요체는 깔끔하고 읽기 쉽고 실행 가능한 효과적이고 효율적인 코드를 작성하는데 있다고 본다. 하지만, “실용주의 프로그래머”에서 밝힌 바처럼 완벽한 코드는 존재하지 않다. 왜냐하면, 코드는 엔트로피의 증가와 함께 끊임없이 진화(Evolution)하는 경향이 있기 때문이다. 세계가 변화하고 고객의 마음이 바뀌고 기술이 향상되고 개발자 자신의 의식(Consciousness)과 능력이 발달하기 때문에 그에 종속된 코드는 변화하게 된다. 코드의 라인수가 증가하거나 코드의 섬세함이 고도화되어갈 수록 보다 성능은 개선되고 효율적인 코드로 재작성 되기도 한다. 물론 반대로 엔트로피의 증가로 인해 코드가 순수성의 의미를 잃고 퇴화(Involution)하여 복잡해지고 읽기 어렵게 된다고 할 수도 있다. 코드는 시간의 흐름에 따라 진화와 퇴화가 동시에 병존한다.

소프트웨어 개발에는 철학이 있다. 그것은 실무적으로 얼마나 적은 멤버를 통해서 생산성을 높여가면서 효율적인 프로그램을 개발해내는가이다. 물론 여타의 개발철학이 있고 숨겨진 사상이 존재할 수 있다. 이상적인 견지에서는 개발자들이 프로그램을 마음 편하게 그리고 쉽고 간결하게 완성하는데 모든 철학의 초점이 맞추어진다. 하드웨어의 성능 발달로 성능(Performance)의 문제는 많이 줄어들었다. 이제는 보다 더 개발자들 간에 읽기 쉬운 코드, 마음을 깨끗하게 하고 마음을 어지럽히지 않는 순수하고 정갈한 코드가 요구된다. 이러한 코드는 개발자의 마음의 반영이다. 또한 개발자의 이성과 정신에 의해 코드가 작성되기 때문에 얼마나 개발자가 이성적으로 논리적이며 진지한 사유를 했느냐에 따라 코드의 구조와 명료성 그리고 가독성 등이 결정된다.

코드의 가치를 결정짓는 많은 요인이 있다. 생산성, 효율성, 가독성, 재사용성, 실행가능성, 버그프리, 유지보수용이성, 변화수용성, 등등 말이다. 이러한 요인들은 코드의 품질을 좌우하며 프로그래머의 능력을 결정짓는다. 사실, 이러한 코드의 가치는 프로그래머의 전체적이고 종합적인 능력이다. 이렇게 전체적이고 종합적인 프로그래머의 능력은 그 근저에 고되고 든든한 실용주의적이고도 철학적인 사유가 담겨 있어야 한다. 건물을 짓기 위해서 고된 건축설계작업이 필요하고 터널을 뚫기 위해서 고된 토목설계작업이 필요한 것처럼 말이다. 우주구조가 홀론(Holon:그리스어로 hol은 전체, on은 부분을 뜻함)으로 되어 있다는 가설처럼 프로그램 코드 구조는 홀론의 구조와 유사하다. 즉, 부분이 고장 나면 전체가 고장 나고 전체가 온전하기 위해서는 부분이 온전해야 한다. 부분은 다시 더 작은 부분들의 모임이며 전체를 이룬다. 전체가 부분이고 부분이 전체인 것이다. 유사한 비유로서 예를 들어 함수 정의에서 또 다른 함수를 호출하는 것이나 클래스 내에서 또 다른 클래스를 정의하는 경우를 들 수 있다. 또한, 프로그래머에게 있어서 코드는 의식의 상징체계이며, 코드의 흐름은 의식의 흐름이다. 현자의 코드(Philosopher's Code)를 작성하기 위해서는 프로그래머의 정신세계의 반영인 코드에 대한 이와 같은 철학적이고 진지한 사유가 기반이 된다.

현자의 코드(Philosopher's Code)

1년, 아니 2년 더 나아가 3년, 4년, 계속해서 5년, 6년 끊임없이 코드를 작성한 사람은 무엇인가 내면에 강한 코드에 대한 사상체계가 녹아들게 된다. 필자는 6년간 프로그램 개발직에서 프로그래밍을 해봤는데 필자가 얻은 것은 프로그램 개발을 통해서 얻어지는 코드라는 것은 결국 회사의 자산인 동시에 자신의 내면을 반영해 주는 거울과 같은 존재라는 것이다. 도날드 누스 교수가 말한 바대로 프로그래밍은 아트(Art), 즉 기예(技藝)이다. 다시 말해서 기술이요 예술이라는 것이다. 코드는 정성과 심혼을 다해 프로그래머가 작성해 내는 산물이다. 고행을 하는 수도승이 내면에 빛을 만들어 내어 마음을 정화하는 것과 같이, 프로그래머는 코드를 통해서 이성의 논리와 사유를 완벽하게 만들어 나간다.

프로그래머의 의식이 담겨있고 잘 작성되어 있는 코드로서 프로그래머가 각고의 노력을 통해서 만들어낸 생명이 깃든 산물이 코드이다. 이렇게 프로그래머의 심혼과 혈기가 담겨있는 코드를 필자는 현자의 코드(Philosopher's Code)라고 말한다. 현자의 코드(Philosopher's Code)는 마음을 정화해 감으로써 얻어지는 코드를 의미한다. 코드를 많이 작성하고 오랜 숙련을 통해서 마스터(Master)의 경지에 이르고 구루(Guru)의 경지에 도달하게 되면 코드에는 프로그래머의 진실성과 모든 열정과 힘이 담긴다. 사실, 코드는 의식이요 힘이다. 코드는 하드웨어라는 물체를 움직이고 하드웨어를 컨트롤하며 하드웨어와 조화를 이루어 기능을 한다. 노련한 경륜과 노하우로 무장한 경력 프로그래머는 사색하는 철학자와 다를 바 없다. 철학자나 사상가들만이 사색하는 것이 아니라 프로그래머 역시 이들 못지않은 진지한 사색을 한다. 아니 사변적인 철학자가 아닌 진실된 실용주의적 사색을 하는 이가 바로 프로그래머다. 알고리즘적인 사유와 버그를 잡아내기 위한 집중적인 사유가 바로 그것이라 할 수 있다. 또한 이성의 논리와 추론 그리고 버그를 찾아내는데 유용하게 사용되는 직관적 사유 등은 철학자 못지않게 프로그래머의 의식을 각성시켜 주고 프로그래머를 진지하게 만든다. 필자는 많은 프로그래머들로부터 진지한 모습을 보아왔다. 마치 철학자가 자신의 존재와 우주에 대해서 의문을 품고 사색해 들어가는 것과 같이 프로그래머는 실세계의 문제를 사색해 들어감으로서 실세계의 정보를 처리하는 생명력이 깃든 코드를 작성해 낸다. 이렇게 생명력이 깃든 코드라고 언급한 것은 그 만큼 프로그래머가 실세계의 실재(Reality)에 대한 문제와 정보를 있는 그대로 처리할 수 있는 코드를 만들어 냈기 때문이기도 하며 노련하고 숙련된 기예의 발현이기 때문이기도 하다. 프로그래머는 화가나 작곡가처럼 작품을 완성하는 예술가이기도 하다. 그리고 더 나아가 진지한 사색이 반영되어야 하기 때문에 나이가 들고 경륜이 쌓일수록 현자에 다가선다. 현자라는 것은 이성적 논리와 직관적 통찰력이 현상계의 실재(Reality)를 꿰뚫어 볼 수 있을 정도로 세련되게 다듬어져 있는 상태의 의식을 지닌 사람을 말한다. 프로그래머는 실세계의 많은 문제들을 처리함으로써 실재의 모습을 추상화시켜 나가는 법과 그들을 구체화하는 법을 배우게 된다. 이러한 과정 속에서 얻어지는 코드는 깨달음이 반영된 코드이며 깨달음이 없는 코드는 현자의 코드(Philosopher's Code)가 아니라고 할 수 있다.

프로그래머의 가난

한편, 사상가나 철학가 그리고 현자에 다가갈수록 그는 물질적으로 가난해 지기도 한다. 하지만, 가난한 현자만이 존재하는 것은 아니다. 진실된 현자는 자신이 작성한 코드 하나하나에 애정을 갖고 깊은 정감을 가지며 깊은 즐거움과 만족을 누린다. 그렇기 때문에 그 어떤 물질적 풍요로움 못지않은 마음의 환희심을 얻는다. 또한 프로그래밍을 잘하게 되면 그 만큼 좋은 댓가를 받기 때문에 생활고에 어려움은 없을 것이다. 다만, 프로그래머로서 풍요로운 물질적인 삶을 살고자 하는 것은 아마 환상이 아닐까 생각해 본다. 험난한 육체적, 정신적 노동을 통해서 프로그래머의 삶은 정신적 풍요로움에 그 목적을 두어야 한다는 것을 이제 많은 프로그래머들이 알고 있기 때문이다.

프로그래머는 흔히 노가다이며 힘든 직업이며 비전(Vision)이 안보이며 돈의 댓가를 충분히 받지 못하는 직업이라고 말한다. 이는 마치 수도승이 어떠한 댓가도 없이 수행과 희생만을 통해서 마음의 정화와 의식의 진화를 이루어 나가는 모습과 비교해 볼 수 있다. 프로그래머는 고달프다. 하루하루가 힘들고 매우 괴로운 나날을 보낸다. 하지만, 조개가 괴로움 속에서 영롱한 진주를 잉태해 내듯이 프로그래머는 어려운 환경 속에서 심혈을 기울여서 코드를 만들어 낸다. 이러한 코드는 프로그래머의 경륜이 무르익어갈 수록 더욱 가치 있고 보람된 코드로 진화해 나간다. 화가 반 고흐가 얼마나 어려움 속에서 예술적 기질을 발휘했는가를 상기하자. 프로그래머의 가난, 그 속에서 순수한 내면의 꽃이 핀다는 것을 잊지 말자. 괴테가 눈물 젖은 빵을 먹어 본적이 없는 사람과는 말하지 말라고 하지 않았는가? 고독과 외로움, 절망과 고난 속에서 마음은 정화된다고 이야기 된다.

프로그래머의 목적이 무엇인가? 결국 즐거운 삶을 살기 위한 것이 아닌가? 하지만, 인생이라는 것이 음양의 조화로 이루어지듯 즐거운 삶만이 존재한다는 것은 인생의 절반만을 누리는 것에 불과하다. 우리는 프로그래머의 목적을 단순히 즐거운 삶을 살아가기 위한 태도에서 선회해야 한다. 즉, 가난과 힘든 역경을 통해서 내면의 진실성을 찾고 마음의 풍요로움을 얻는 것 말이다. 누구나 한 번쯤 고된 프로그래밍 노가다를 해 본 경험이 있을 것이다. 흔히, 고수 프로그래머라고 말하는 이들은 너무나 이를 잘 알고 있다. 컴퓨터 업계의 고수라고 할 수 있는 스티븐 잡스가 스탠포드 대학 강연에서 마지막으로 인용한 말로서“배고파라 바보가 되라”고 말하지 않았는가? 이 글은 선사(禪師:Zen Master)의 경지에 이르지 않고서는 가히 할 수 없는 이야기다.

컴퓨터 업계의 고수나 선사(禪師:Zen Master), 그 분들 모두는 일맥상통한다. 그들은 삶의 진리를 찾아 나서는 사람들이다. 현자의 코드(Philosopher's Code)를 작성하는 프로그래머들은 한편으로 코딩이라는 매개를 통해서 내면의 진리(Truth)를 찾아 나서는 사람들이라고 말할 수 있다. 그들은 고독과 싸우고 배고픔과 싸운다. 필자는 기라성 같은 고수들보다 못하지만 그들을 흉내 내려고 나름대로 배고파봤고 하루에도 수없이 요구사항이 변경되는, 즉 코드를 수없이 뒤 없는 힘든 노가다를 감내해야 했다. 따라서 필자는 필자보다 더 많은 고생을 했거나 고생을 하고 있는 프로그래머들을 존경하지 않을 수 없다. 하지만, 중요한 것은 마음이다. 얼마나 그러한 고생을 통해서 내면에 진실성을 얻었는가이다. 고생만 하고 아무것도 얻지 못한 프로그래머는 필히 필자의 글이 도움이 되길 바란다. 고생을 미덕으로 생각할 줄 알아야 한다. 현자의 코드(Philosopher's Code)란 수많은 고난과 고생을 통해서 정화된 순수한 마음이 반영된 코드이다. 그냥 단순한 생각으로 작성된 코드를 현자의 코드(Philosopher's Code)라고 말하고 싶지 않다. 현자의 코드(Philosopher's Code)는 땀과 눈물이 배어있는 가난한 프로그래머의 코드를 의미한다.

현자의 코드(Philosopher's Code)에 대한 형식적 요건

필자는 지금 프로그래머 삶을 살지는 않지만 약 10여만 라인 정도의 코드를 작성해 본 결과, 100여만 라인 정도의 코드를 작성한 사람이라면 그리고 그 과정 속에서 자신을 성찰하고 세상을 통찰해 나갔다면 충분히 현자의 코드(Philosopher's Code)를 작성해 낼 수 있다고 본다. 코드에 생명력이 깃들고 다른 누가 보아도 읽기 쉽고 하드웨어에서 효율적으로 실행 가능한 그러한 코드가 바로 현자의 코드(Philosopher's Code)이다. 물론, 100만 라인을 채워야 현자의 코드(Philosopher's Code)를 작성할 수 있다는 뜻은 아니라. 비록 1만 라인의 코드를 작성해도 지극한 성찰과 혹독한 어려움을 이겨내고 다양한 사색과 문제의식을 통해서 실세계의 이치를 고도의 지성으로 단순화시키는 방법을 연마했다면 가능할 것이다. 즉, 이러한 현자의 코드(Philosopher's Code)는 특정하고 특별한 사람이 작성하는 코드가 아니다. 초보자도 자신이 얼마나 심혈을 기울이고 심기를 바쳤느냐에 따라 예를 들어, 알파벳으로 보석모양의 그림을 그리는 알고리즘의 프로그램이라도 코드에 생명력이 있다면 그 코드는 현자의 코드(Philosopher's Code)라고 할 수 있다. 에디슨은 전구를 발명하기 위해서 1 만 번의 실험을 해봤다고 한다. 그리고 9,999번의 실패를 통해서 9,999 가지의 오류를 알게 되었다고 한다. 현자의 코드(Philosopher's Code)도 마찬가지다. 무수히 많은 실패와 시행착오를 통해서 얻어질 때 코드는 황금과 같은 빛을 발하는 법이기 때문이다.

코드에 생명력이 깃들어 있다는 것은 첫째, 읽기 쉬워야 하며, 둘째, 명료하고 깔끔하여 직관적이어야 하며, 셋째 무엇보다 버그가 없는 실행 가능한 코드여야 하며, 넷째, 효율적인 성능으로 실행되는 코드여야 한다. 물론 여타의 더 추가적인 특징을 지닐 수 있으나 이정도면 프로그래머의 진지한 사유를 반영한 코드라고 할 수 있다. 물론 보다 상세하게 현자의 코드(Philosopher's Code)에 대한 나름대로의 형식적 요건들을 정한다면 다음과 같이 열거할 수 있을 것 같다.

1. 버그의 수가 최소화되어야 한다.

2. 실행 가능한 코드여야 한다.

3. 읽기 쉽도록 가독성(Readability)이 좋은 직관적인 코드여야 한다.

4. 재사용성(Reusability)이 높아야 한다.

5. 프로그래머 자신의 에고(ego)가 반영된 트릭을 사용한 복잡한 코드가 아니라
단순한 코드여야 한다. 즉, 프로그래머의 진실성이 반영된 코드여야 한다.
코드가 단순하다는 것은 프로그래머의 사유가 정리되었다는 것이며 순수한 의식에서
나온 코드라는 것을 방증한다.

6. 코드패턴과 디자인 패턴 등을 잘 활용한 코드일수록 현자의 코드(Philosopher's Code)에 가깝다.
물론, 이는 어려운 코드가 현자의 코드(Philosopher's Code)라는 뜻이 아니다. 다만, 정리되고 체계화된
노련한 엔지니어에 의한 코드가 현자의 코드(Philosopher's Code)를 구성하는 하나의 요소라 할 수 있다.

7. 리팩토링을 통해 코드의 엔트로피를 최소화한 코드여야 한다.

8. 트릭이 아닌 지성적인 기술적 노하우가 담긴 코드여야 한다.
즉, 다양한 기법과 프로그래밍 언어의 엘리먼트가 다양하게 녹아들어 있어야 한다.

9. 요구사항의 변화나 기타 변화에 적응할 수 있는 코드여야 한다.

10. 들여쓰기와 띄어쓰기 그리고 코딩 스타일 등 코드의 구성이 미학적이어야 한다.

11. 코드 전체 구조에서 어느 한 곳을 떼어내거나 어느 한곳을 추가해도
코드의 안정성을 크게 위협해서는 안 된다.
즉, 코드의 부분과 코드의 전체가 조화를 이룬 코드여야 한다.
코드는 부분과 전체가 상호 유기적으로 연결되어 있으되
한편으로는 부분과 전체가 명료하게 분리되어 있어야 한다.

12. 모듈간의 커플링이 최소화되고 응집도가 높아야 한다.

13. 실제로 프로그램의 생산성을 높여주는 구조적이면서 함수나, 클래스 등으로
모듈화된 코드가 좋은 코드라 할 수 있다.

14. 프로그래머의 진지한 사유가 반영된 깔끔하고 정제된 코드여야 한다.
즉, 알고리즘이 순수해야 하며 군더더기가 없는 코드여야 한다.

15. 한 번에 완성된 코드가 아니라 여러 번의 수정과 보완을 거쳐
점진적으로(Incrementally) 개선된 코드일수록 현자의 코드(Philosopher's Code)가 될 가능성이 높다.

16. 코드를 읽는 이가 감명과 감동을 받을 수 있는 예술적인 코드이어야 한다.

17. 코드를 읽는 이의 의식을 각성시키고 새로운 교훈을 줄 수 있는 코드이어야 한다.
즉, 현자의 코드(Philosopher's Code)는 완벽함 자체에 있는 것이 아니라 온전함에 있는 것이다.

18. 정에 의해 얼음이 확실하게 쪼개지듯 명료한 주석이 코드와 함께해야 한다.
주석은 코드의 부속물이 아니라 코드와 완전한 조화를 이루는 코드의 벗이다.

19. 주관적인 코드가 아니라 객관화를 거친 코드일수록 훌륭하다.
짝 프로그래밍과 코드 공유가 대표적으로 좋은 예라고 할 수 있다. 짝 프로그래밍과 코드 공유를 통해서 코드는 좀 더 세련화 되고 다듬어진다.

20. 남이 알아주는 코드가 아니라 자신의 내면에서 우러나오는
진실된 이성적 논리가 반영된 코드여야 한다.

물론, 이러한 요건들은 형식적인 것에 지나지 않는다. 그리고 20가지 정의를 모두 지켜야만 반드시 현자의 코드(Philosopher's Code)가 완성되는 것은 아니다. 또한 이는 필자가 아는 바로서의 현자의 코드(Philosopher's Code)를 말한 것이며 수많은 프로그래머들마다 다양한 사유와 의식을 가지고 살아가기 때문에 어떤 정형화된 현자의 코드(Philosopher's Code)란 존재하지 않는다. 이를 위해서, 필자는 시중에서 베스트셀러로 인기를 누렸거나 누리고 있는 서적들을 참고하여 상기와 같이 현자의 코드(Philosopher's Code)가 구비해야할 조건들을 열거한 것이다. 다소 비슷한 사항을 포함하여 20가지로 정리해 봤는데, 이 외에도 현자의 코드(Philosopher's Code)를 이루기 위한 여러 가지 특성과 조건이 필요하리라 생각한다. 하지만, 어떤 코드가 현자의 코드(Philosopher's Code)라고 단언해서는 안 된다. 다만, 현자의 코드(Philosopher's Code)란 누가 보더라도 감명을 주는 코드이고 실행 가능한 버그 없는 코드라는 점에서는 동일하다. 그리고 현자의 코드(Philosopher's Code)는 단순히 외양적이고 외면적인 코드가 아니라 자신의 내면에서 우러나온 진실성이 반영된 코드여야 한다. Code Complete의 저자 스티브 맥코넬이 말한 바와 같이 완벽한 코드는 진실된 코드이다. 현자의 코드(Philosopher's Code)도 이와 다를 바가 없다. 또한 20가지 요건은 단순히 눈으로 보고 읽어서 되는 것이 아니라 프로그래머가 직접 실전에 적용해야 한다. 이를 적용하는 데는 프로그래머의 마음가짐이 중요하다. 심법은 현자의 코드(Philosopher's Code)를 정교하고 체계적으로 찍어내는 격률(格率)과 다를 바 없다. 현자의 코드(Philosopher's Code)는 순수한 마음으로만 알 수 있는 것이다.

프로그래머의 마음가짐(심법:心法:Mind Rule)

그렇다면 어떠한 마음가짐으로 코드를 작성해야 현자의 코드(Philosopher's Code)를 작성할 수 있는가? 그것은 이미 많은 서적들이 출간되어 우리들에게 알려주었고 지금도 알려주고 있다. 저 멋진 책, “실용주의 프로그래머”라는 서적이 있지 않은가? 물론 필자의 졸저 “프로그래머의 길”도 참고가 될 것이다. 그 외에 많은 서적들이 존재한다. 하지만 책이 모든 것을 해결해 주지 않는다. 즉, 책을 읽는 것만으로 현자의 코드(Philosopher's Code)를 작성할 수 있는 것이 아니다. 현자의 코드(Philosopher's Code)를 작성하기 위해서는 마스터 프로그래머, 즉 코드 구루의 도움이 필요하다. 스승이 필요한 것이다. 스승이 없이는 현자의 코드(Philosopher's Code)를 창조해 내기 어렵다. 물론 가능할 수는 있다. 하지만 누가 어려운 길로 돌아가려고 하겠는가? 우리는 쉽고 편안한 길을 선택할 필요가 있다. 그것은 바로 훌륭한 코드의 스승을 찾는 것이다. 물론, 훌륭한 코드의 대가(Master)를 찾는 것이 쉽지 않다. 훌륭한 코드 구루를 찾는 것이 하나의 훈련(Discipline)이라고 할 수 있다. 코드 스승은 직장 상사가 될 수 있고 학원 강사가 될 수 있고 친구가 될 수 있고 후배사원이 될 수도 있다. 전산업계가 활발히 움직이고 있는 사회에서는 어디에나 코드 스승이 존재한다. 하지만 진실된 코드의 스승은 자신의 마음과 행동이 진지하게 준비되었을 때 오게 된다고 현자들은 이야기 한다.

현자의 코드(Philosopher's Code)는 일반 프로그래머의 코드와 동일하게 보인다. 하지만, 필자는 간단히 말해서 별 생각 없이 작성하여 컴퓨터상에서 돌아가기만 하는 코드를 일반 프로그래머의 코드라고 말하며, 프로그래머의 심혼(心魂)과 정성이 담긴 코드를 현자의 코드(Philosopher's Code)라고 말한다. 그렇다면 프로그래머의 심혼이란 무엇인가? 그것은 바로 노동의 신성함과 자아성찰이 담긴 마음을 의미한다. 억지로 돈을 벌기 위해서 코딩하는 프로그래머에게는 자아성찰의 기회가 줄어든다. 또한 노동의 신성함은 어디에서 오는가? 그것은 바로 힘든 일이지만 일을 사랑하고 자신의 일을 천부적인 것으로 받아들일 때 얻어지는 것이다. 힘든 노동 속에서도 자신의 마음을 성찰해 나가면서, 즉 자신의 마음속에 있는 논리의 오류를 하나하나 수정해 나가고 이를 주도면밀하게 관찰하고 사색해 가면서 코딩하는 프로그래머의 코드와 단순히 억지로 코딩하는 일반 프로그래머의 코드는 차이가 있다. 즉, 노동의 신성함을 인식하고 인고의 노력을 통해서 창조되는 순수한 마음이 담긴 코드를 현자의 코드(Philosopher's Code)라고 할 수 있다. 그리고 왜 순수한 마음이어야 하는가? 그것은 바로 현자의 코드(Philosopher's Code)를 작성하기 위한 올바른 지성적 사유가 가능하기 위해서라고 할 수 있다.

현자의 코드(Philosopher's Code)는 신성한 것이요 다차원적인 것이다. 올바른 사유와 정직한 마음으로 자신의 두뇌와 마음에 존재하는 오류들을 조금씩 수정해 나가는 고된 노력과 과정을 통해서 한 줄 한 줄 작성하는 코드, 그것이 바로 프로그래머의 심법이 담겨있는 신성한 현자의 코드(Philosopher's Code)라고 할 수 있다. 현자의 코드(Philosopher's Code)는 굳이 누구에 의해서 정의되는 것이 아니라 자신을 포함하여 많은 다양한 의식의 차원을 지닌 프로그래머들의 순수한 마음에 의해 스스로 깨달아 아는 것이다. 그러한 깨달음은 코드를 보는 것뿐만 아니라 작성하는 순간순간에 코드 속에 녹아들고 자신의 마음과 의식 속에 빛으로 창조된다. 따라서 코드의 겉모양이 미학적이지 않아도 자신의 마음속의 논리적 오류를 올바르게 수정하고 자신의 순수한 열정을 올바르게 표현한 코드라면, 즉 심법(心法)이 반영된 코드라면 그 코드는 현자의 코드(Philosopher's Code)에 다가갈 수 있는 것이다. 그러나 아리스토텔레스가 물체는 형상과 질료로 구성되어 있다고 이야기한 바와 같이, 코드를 구성하는 의미를 뜻하는 내용 못지않게 표현을 뜻하는 외양도 중요함을 잊지 말아야 할 것이다. 더 나아가 자신이 작성한 코드를 통해서 마음을 정화(淨化)할 수 있다면 금상첨화일 것이다. 그러기 위해서는 깔끔하고 명료한 그리고 직관적인 코드를 많이 접해 보고 많이 모방해 봐야한다. 남들이 잘 작성해 놓은 현자의 코드(Philosopher's Code)를 읽는 것만으로도 마음의 명료함을 얻을 수 있다는 점을 잊지 말자. 좋은 코드, 현자의 코드(Philosopher's Code)를 항상 가까이 하도록 하자.

코드의 연금술

프로그램이라는 것은 코드의 체계이다. 즉, 코드의 단순한 모임이 아니라 유기적인 관계로 코드들 간에 상호교류하는 집합체라는 것이다. 그리고 그러한 코드 체계를 구성하는 요소들은 엘리먼트(element)라고 하여 for문에서부터 if문, 연산자, 배열, 구조체, 객체지향의 경우 클래스, 상속, 다형성, 템플릿 등 다양한 엘리먼트로 구성된다. 이러한 엘리먼트들은 프로그래머에게는 사상의 빌딩블록이며 코드의 연금술 재료가 된다.

고대로부터 인간의 몸은 지, 수, 화, 풍의 사대로 구성되어 있고 이 사대는 4가지 엘리먼트라고 이야기 되어왔다. 그리고 여기에 제 5의 원소로서 빛이 들어간다. 제 5의 원소는 엘릭서(Elixir)라고 하며 이 4가지 엘리먼트의 합성을 통해서 이루어진다고 고대로부터 이야기 한다. 물론 제 5 원소라는 영화도 나왔다. 여기서 중요한 것은 프로그램이라는 것도 조건문, 연산문, 함수문, 구조문, 배열문 등등 다양한 엘리먼트가 합성되어 하나의 완벽한 코드가 만들어 진다는 것이다. 얼마나 정교하고 노련하게 심혼을 기울여서 코드를 개발했느냐에 따라 코드는 마음을 정화시키고 이성적 논리의 오류를 제거해 주는 동시에 프로그래머의 진실성(Veracity)을 반영해 준다. 이렇게 작성된 코드를 이름 하여 현자의 코드(Philosopher's Code)라고 이야기 할 수 있다. 프로그래머라면 고통과 고생을 감내하고 인내하면서 지혜로움을 살려 현자의 코드(Philosopher's Code)를 만들어 나갈 때 프로그래머로서의 긍지와 자부심을 갖는다고 생각한다. 필자가 6년간 프로그래밍을 통해 얻은 나름대로의 가치관이라면 결국 얼마만큼 자신의 정신에 존재하는 오류(버그)들을 제대로 파악하고 그것을 제거하여 코드에 반영 하는가였다. 프로그래머의 의식이 진실하지 못하다면 코드는 버그를 갖게 될 것이며, 그러한 코드는 결코 좋은 코드가 될 수 없다. 하지만, 어려운 역경을 극복하고 코드를 구성하는 엘리먼트들을 정교하게 배합하여 지혜롭게 코드를 창조해 낼 때 그러한 코드는 프로그래머의 마음과 생명이 담긴 현자의 코드(Philosopher's Code)라고 말할 수 있을 것이다. 명료하고 실행가능하며 혼신의 힘이 깃들인 코드는 환희심을 가져다준다.

코드는 정신의 반영이며 실세계의 반영이여 조직 문화의 반영이다. 코드를 정갈하게 다듬고 세련화하는 과정 속에서 그리고 코드의 엘리먼트들을 적절히 배합하여 조화롭게 융화시켜 나갈 때 마음도 영향을 받는다. 즉, 코드의 온전성을 추구해 나가는 것은 자신의 내면을 밝히고 정화하는 길이다. 그리고 자신의 내면을 성찰하고 고요히 지켜보는 과정을 통해서도 말끔하고 깨끗하고 군더더기 없는 코드를 만들어 낼 수 있다. 많은 경험도 중요하지만 지적인 통찰력과 심오한 탐구 그리고 진지한 실험과 관찰이 궁극적으로 코드의 연금술을 완성시켜 나가는 과정이라고 할 수 있다. 또한 코드의 연금술을 통해 현자의 코드(Philosopher's Code)를 작성해 나감에 따라 의식은 진화하게 된다. 더 나아가 세월이 흘러 코드는 사라지고 코드에 대한 기억이 의식 저편으로 사라진다 해도 그러한 코드를 작성하려고 심혼을 기울이고 정성을 바쳐 얻어진 정신만은 영원히 인생의 흐름 속에서도 영속될 것이다.

맺음말

글을 쓰고 나니 필자의 글이 다분히 세속에서 초연해 보이는 고답(高踏)적인 분위기를 자아낸다. 하지만 명심해야할 점이 있다. 프로그래머에게 있어서 정신의 안정과 평온을 위해서는 돈이나 명예보다 일을 아끼고 소중히 여기는 마음자세가 필요하다는 점이다. 일 자체에 충실하고 그곳에 전념할 때 코드는 빛을 발하고 현자의 코드(Philosopher's Code)로 완성된다. 현자의 코드(Philosopher's Code)는 무를 베듯 명료하게 정의되는 것이 아니라 마음으로 느끼고 알 수 있는 그리고 마음과 마음으로 전해져서 알 수 있는 프로그래머의 정신세계의 상징적 반영이다. 또한 필자는 현자의 코드(Philosopher's Code)를 본 적은 있어도 작성해 봤다고 단언할 수는 없다. 그리고 현자의 코드(Philosopher's Code)를 작성했다고 현자가 되는 것은 아니다. 현자의 코드(Philosopher's Code)를 작성해 나감으로써 점진적으로 현자에 다가선다는 것을 깨닫게 될 것이다. 하지만 결코 현자의 코드(Philosopher's Code) 작성만으로 현자의 경지에 이르지는 않는다는 점을 강조해 두고 싶다. 독자제현님들께서 지혜의 눈으로 이 말에 숨겨진 뉘앙스를 읽을 수 있기를 바란다. 필자가 글을 작성한 후 느낀 점은 과연 필자가 전 세계 프로그래머들 중에서 어느 정도의 실력을 가지고 있는가에 대한 의문이었다. 필자보다 유능하고 마음이 넓은 고수 프로그래머에게 진심으로 죄송한 마음이 든다. 무명 고수라는 말이 있다. 진실된 고수는 세상에 나타나지 않고 숨어서 세상을 올바르게 인도한다고 말이다. 진실된 고수 프로그래머는 이름 없이 하루하루 조용히 기업 속에서 일하는 프로그래머일 것이다. 필자는 이름 있는 고수도 아니고 더욱이 무명고수도 아니다. 하지만, 필자를 스치고 지나간 수많은 인연을 통해서 고수들의 세계를 엿볼 수 있었다. 현자의 코드(Philosopher's Code), 바로 이것은 어느 누구도 가난한 프로그래머로부터 뺏을 수 없는 꿈이다. 그러나 Philosopher's Code 그것은 고대의 연금술처럼 단순히 이상(理想:Idea)으로 생각해서는 안 된다고 본다. 고수들의 심법을 통해서 분명 이룰 수 있고 보다 온전한 형태의 삶을 향해서 정진해 나가는 우리 프로그래머들의 자화상이 바로 현자의 코드(Philosopher's Code)이기 때문에 더욱 이를 구현하고 실체화하는데 노력을 게을리 해서는 안 될 것이다.

참고문헌
1. 프로그래머의 길, 신영호 저, 홍릉과학출판사
2. C 프로그래밍의 기초 및 학습론, 신영호 저, 홍릉과학출판사
3. 물질의 궁극원자 아누, 문성호 저, 아름드리미디어

부족한 글 읽어주셔서 감사합니다. 항상 평안하세요.

Forums: 
익명 사용자의 이미지

짧게 할수 있는 말을 현자의 코드니 뭐니 그럴싸하게 포장해서 터무니없이 길게 늘어놓는군요. 이러한 글이야말로 현자의 코드로부터 가장 거리가 먼 글이라 할 수 있겠습니다.

mirr의 이미지

음..스크롤의 압박이 대단하지만 문체에 비해 재밌는 내용이랍니다.
마치 미야모토무사시의 오륜서나 병법서등을 읽는듯한 느낌이였어요..
좋은글 감사합니다.

내 마음속의 악마가 자꾸만 나를 부추겨.
늘 해왔던 것에 만족하지 말고 뭔가 불가능해 보이는 것을 하라고 말야.

picknic12의 이미지

제가 말이 너무 많았나 봅니다. 간단하게 말해서 정직한 코드를 작성할 필요가 있다는 것이죠. 하지만 그 정직한 코드라는 것을 이해하기가 쉽지 않습니다. 그래서 그것을 풀어 썼구요. 물론 제 글이 반듯이 옳다고 생각하지도 않아요. 다만 제 글이 도움이 되는 분들이 있을까해서 올렸습니다.

감사합니다. 항상 평안하세요.

oldbell의 이미지

Anonymous wrote:
짧게 할수 있는 말을 현자의 코드니 뭐니 그럴싸하게 포장해서 터무니없이 길게 늘어놓는군요. 이러한 글이야말로 현자의 코드로부터 가장 거리가 먼 글이라 할 수 있겠습니다.

읽으시는 분들에 따라서
간단히 써주는게 좋은 분들도 있고,
풀어써 주는 것이 좋은 분들도 있겠죠..

개인적으로는 풀어써주신글이 읽기에 좋았습니다. :)

인생의 무게를 느껴라. 아는 만큼 보이는게다.

scari의 이미지

Anonymous wrote:
짧게 할수 있는 말을 현자의 코드니 뭐니 그럴싸하게 포장해서 터무니없이 길게 늘어놓는군요. 이러한 글이야말로 현자의 코드로부터 가장 거리가 먼 글이라 할 수 있겠습니다.

재미있게 잘 읽었습니다만, 손님의 말씀에는 100% 동감합니다. 엑기스만 추려서 짧고 굵게 글로 옮기는것 또한 쉬운일이 아니긴 하죠 :)

idlock의 이미지

Anonymous wrote:
짧게 할수 있는 말을 현자의 코드니 뭐니 그럴싸하게 포장해서 터무니없이 길게 늘어놓는군요. 이러한 글이야말로 현자의 코드로부터 가장 거리가 먼 글이라 할 수 있겠습니다.

푸헐 꼭 이런 말도 않되고 논리적 근거도 없는 비판을 하는 인간분들은 항상 손님이지..

용쟁호투의 이미지

앗...혹시 ObjectWorld 영호님 아니신가요? 여기서 뵙게되니 반갑습니다...영호님의 좋은글 잘 읽고읽습니다. 기억하실런지...광팬...^^;

항.상.행.복.하.세.요

eminency의 이미지

흠... 오픈 소스 소프트웨어중 현자의 코드로 추천할만한 것은 어떤 것이 있을까요 -_-;

노루가 사냥꾼의 손에서 벗어나는 것 같이, 새가 그물치는 자의 손에서 벗어나는 것 같이 스스로 구원하라 -잠언 6:5

불꽃오리의 이미지

근데 보기에 눈이 아프네요.
이런 장문의 글을 쓸 때엔
엔터키를 많이 쳐주셨으면 합니다. ㅠ.ㅠ;;;

세계 최고의 OS 개발자 - 오리
KLDP 가입시 해야 할 일
목표 : 세계정복
'X-MAS, 석탄일을 평일로 한글날과 오리의날을 국가공휴일로 만들자.'

picknic12의 이미지

용쟁호투님도 반갑구요. 다른 벗님들의 조언과 의견 진심으로 감사합니다.

프로그래머에게 있어서 미야모토 무사시의 오륜서나 노자의 도덕경처럼

간단 명료한 글이었으면 하고 작성했는데 제가 실력이 부족해서요.

읽으시는 분들의 너그러운 마음을 구합니다. ^^;

그리고 오픈소스에 대해서는 잘은 모르지만

제가 대학원 시절 리눅스 소스를 분석하려고 했을때 리눅스 소스를

보고서 많은 감명을 받았습니다. 물론, 그 당시 실력 부족으로

리눅스 소스를 이해하지는 못했지만, 지금 생각해 보니 그당시

오픈소스에 대해서 아는 한도에서는 리눅스 소스(특히 커널 소스)가

명실상부한 현자의 코드에 다가서는 코드가 아닌가 생각해 봅니다.

마음을 순화시키는 구조적이고 깔끔하고 명료한 코드였던 기억이 납니다.

물론 저의 생각입니다.

감사합니다. 항상 평안하세요.

picnic 올림

picknic12의 이미지

죄송하구요.

제가 올린 글들에 대해서 글체나 문단스타일이 좋지 않다는 말을 자주

듣습니다. 글을 올릴때 읽기 좋게 만들어 보도록 하겠습니다.

조언 감사합니다. 항상 평안하세요.

picnic 올림

익명 사용자의 이미지

Quote:
푸헐 꼭 이런 말도 않되고 논리적 근거도 없는 비판을 하는 인간분들은 항상 손님이지..

푸헐 위에 논리적 근거도 없는 비판을 하는 바로 그 인간입니다.

위 글의 핵심 내용은 '현자의 코드에 대한 형식적 요건'이란 글이고, 다른 부분은 껍데기에 지나지 않습니다. 어디 한번 그 형식적 요건들로 글을 비판해 볼까요?

Quote:
3. 읽기 쉽도록 가독성(Readability)이 좋은 직관적인 코드여야 한다.

위 글은 '좋은 코드를 작성하는 법'이 목적인 듯한데, 철학이니 뭐니 장황하게 갖다붙인게 많아서 가독성이 좋다고는 말할 수 없군요.

Quote:
5. 프로그래머 자신의 에고(ego)가 반영된 트릭을 사용한 복잡한 코드가 아니라 단순한 코드여야 한다. 즉, 프로그래머의 진실성이 반영된 코드여야 한다. 코드가 단순하다는 것은 프로그래머의 사유가 정리되었다는 것이며 순수한 의식에서 나온 코드라는 것을 방증한다.

글쓴이의 지적 허영심이나 자아성찰 욕구는 잘 알겠습니다만, 그것이 지나쳐 글을 복잡하고 장황하게 만들어서는 안되겠지요?

저는 서로 전혀 다른 분야의 개념들을 아무데나 갖다 붙이는걸 혐오합니다(이에 대해서 지적 사기라는 유명한 책이 있지요?). 프로그래머로서 자아성찰이 필요하다는둥, 진실된 마음이 반영되어야 한다는 둥... 꼭 무슨 서양인들의 동양문화에 대한 편견(모탈컴뱃, 라스트 사무라이 ㅋㅋㅋ)을 보는 듯 하군요. 거기다가 연금술 얘기까지 튀어나오면 정말 참을 수가 없습니다(웃겨서). 도에 대해 탐구하고 싶으면 도만 탐구하시고, 프로그래밍에 대해 고찰하고 싶으면 그에 대해서만 하십시오. 어설프게 엮지 마시고.

현학적인 태도도 좋지만 그 안에 담긴게 부풀린 외형에 비해 지나치게 없으면 간판만 요란한 상가마냥 우스꽝스럽기 그지 없습니다. 분량은 1/5로 팍 줄여버리시고, 쓸데없이 신비감을 조성하는 내용들도 모조리 빼십시오. 정신적 자위를 위해 읽는다면 모를까, 아니라면 전혀 도움이 되지 않는 내용들입니다.

picknic12의 이미지

너그러이 이해해 주세요.

제가 부족해서 그렇습니다. 아무쪼록 평안하시길 바랍니다.

따뜻한 조언 감사하구요.

picnic 올림

익명 사용자의 이미지

좀 지나친 감이 없진 않지만, 재미있는 비유를 들어 프로그래밍에 대한 또다른 각도의 견해를 피력하신 것으로 보입니다.

하지만 이런 류의 글들이 약간 유행이 지났다는 점이 좀 안타깝습니다. (케케 짖궂은 말이죠?)

그렇지만; 도는 어느 분야에서든 맞닿아 있다고 하지 않습니까? 자신의 업으로 삼고 있는 행위가 프로그래밍이라면 당연히 우리는 거기에 대한 철학과 혼을 가지고 있어야 하겠지요.

가끔 딱딱한 기술용어만 보다가 이런 글들을 가끔 봐줘야 머리에 시원한 냉수를 뿌리는 듯한 자극이 될수 있습니다. 앞으로도 좋은 글 부탁드립니다.

nainu의 이미지

흥분하신 것 같습니다.
모든 사람이 손님 님처럼 생각하는 건 아닐거예요.
공개된 여러 사람이 보는 게시판인데 말씀을 조금 듣기 좋게 해 주시면 좋겠네요.

아빠곰의 이미지

써주신 글 잘 보았습니다.

어려운 환경을 대비한 정갈한 코드를 만들어야 되겠다는 생각이 드는 글이네요. 비단 코드만이 아니라, 다른 복잡한 시스템 시스템에서도 통용될 수 있는, 좋은 원리 같습니다.

----
아발발다빠따반반나다발딸발발다빠따따맣밤밤따받따발발다따밝다발발다빠따따밤반다빠따다맣밥발
발다따밥다발발다따박다발발다빠따따밞밭밭다따다맣아희

익명 사용자의 이미지

intervision은 때때로 당면한 문제를 해결하는데 도움을 주기도 하죠.

익명 사용자의 이미지

매마르게만 느껴지던 프로그래밍을 철학과 연관시켜서 한편의 멋진 수필을 써주셨네요.

재미있게 잘 읽었습니다.

inbon의 이미지

picknic12 wrote:
죄송하구요.

제가 올린 글들에 대해서 글체나 문단스타일이 좋지 않다는 말을 자주

듣습니다. 글을 올릴때 읽기 좋게 만들어 보도록 하겠습니다.

조언 감사합니다. 항상 평안하세요.

picnic 올림

장문의 글일때 저는 picknic12님의 문단 스타일을 선호합니다.

우리나라에서 웹문서에 문단나누기가 무시되는게 저는 탐탁치 않더라구요. ^^~

====================
In-Bon Kuh
http://inbon.net

GNU OSLab.
http://race.gnu.kr
====================

khris의 이미지

좋은 글입니다. 제가 추구하는 길과도 통하고 있네요...

손님씨, 포장도 기법입니다. 포장은 겉을 감싸지만, 오히려 속으로 더 깊이 접근할 수 있게 해줍니다. 글써본적 있습니까?

───────────────────────
yaourt -S gothick elegant
khris'log

코퍼스의 이미지

저는 재미있기만 한데요..^^

요즘 세상사가 사람들을 좀 뾰족(!)하게 하기는 하나보군요..

좀, 현학적이고 신비적으로 글을 쓰면 어떻고.. 좀 젠체하는 기분이 들어가면 어떻습니까?
나름대로의 성찰과 유익함이 담겨있으면서, 다른 이를 비방하거나, 진실을 오도하지만 않는다면 좋다고 생각하는데요..

이 글은 이 글 나름대로의 가치와 유익함이 있다고 생각합니다.

A few Good Man

datamind의 이미지

프로그래밍에 대한 철학적인 접근, 아주 잘 읽었습니다.
하지만, 이것은 위분이 언급하신것처럼 수필 이상의 가치는 없다고 생각합니다.

완벽한(예쁜) 코드를 프로그래밍 하는 것은
프로그래머로서 추구해야 할 수단일뿐,
이것을 목표로 여기지는 말아주었으면 합니다.
코딩은 프로그램을 만들기 위한 도구일뿐입니다.

진정한 고수는
완벽한 프로그래밍을 했느냐에 있지 않고,
얼마나 좋은 프로그램을 만들었는가에 있습니다.

tristansong의 이미지

음, 글의 내용상은 여느 리눅스 문서 스타일을 많이 따르셨다고 보여집니다. 그리고 이 글의 목적이 남에게 본인의 생각을 전달하려는데 목적이 있으신건지 아님 다른이 들의 반응을 한번 떠 보시려 한 건지 좀 궁금합니다.

위에 손님이라는 분의 글 스타일을 보면 여기서 좀 활동하고 계시는 분 같은데(왠지 낮설지 않은 글체라) 그냥 본명을 쓰고 비판하세요 욕 먹을 줄 알면서 그랬다면 더 나쁜 사람이예요, 무슨 말인 줄 알겠죠!

moonzoo의 이미지

잘 읽었습니다.

스크롤의 압바과 퇴근시간의 압박이 있었지만

꾹 참고 한 호흡에 읽어내려갔는데

짧은 순간이었지만 저를 되돌아 보게 하는 느낌이 있는 글이었습니다.

좋은 글 감사~

picknic12의 이미지

저의 졸고 읽어주셔서 정말 감사합니다. ^^;

다음 링크를 찾아가시면

www.gosu.net/gosu/new

고수넷 아티클을 볼 수 있습니다. 비록 고수는 아니지만 저의 졸고도 포함되어

있으니 한 번 시간날 때 읽어보세요.

그럼 새해 복많이 받으시고 건강들하세요.

신영호(picnic) 올림

picknic12의 이미지

이곳 폰트와 글자크기로 글을 올리기도 하였으나

고수넷 주인장님께서 글꼴과 크기를 게시판의 규약에 맞게 조절해 주셔서

글꼴과 크기가 마음에 들지 않으신 분들께 정말 죄송합니다. 꾸벅~

제가 한 번 글을 올리면 고칠 수가 없어서요.

좀 귀찮더라도 워드나 한글로 Copy & Paste 해서 키워 보시면

어떨까요?

에구 죄송합니다.

picnic 올림

잔디인형의 이미지

처음 일부분만 읽었는데 아주 좋은 접근 방법이라 생각합니다.

글쎄요 내용 자체에 대해서 저의 견해와는 달리하는 부분이 있는지 좀 더 읽고 생각해봐야 하겠지만 우리가 하고 있는 프로그래밍이란 일이 창조적인 일이라는 것은 어느 누구도 반론을 제기하지 않으리라 생각합니다.

창조적인 일은 철학, 예술, 사상이 결집되어 자신의 견해를 표현하는 도구로 미술, 음악, 문학 등을 통해 나타낼 것이며, 프로그래밍도 그러한 표현 방식의 하나로 볼수 있겠지요.

조금 심하게 비약하면 프로그래밍이란 작업을 통해 우주의 원리에 접근하고 신의 영역을 조금 맛볼 수 있지 않나 생각합니다.

picknic12의 이미지

잔디인형님 말씀대로 우주의 이치를 이해하는데 컴퓨터 세계가 큰 도움이 된다고 정확하게 기억이 안나는데 마빈 민스키 박사께서 말씀하신 것으로 알고 있어요.

마빈 민스키 박사는 우주 모형을 컴퓨터 모형으로 가상하고 글을 쓰기도 하신 분으로 알고 있구요.

제 부족한 글을 읽고 의미를 잘 파악해 주신 점, 잔디인형님께 감사드립니다. ^^;

항상 평안하시고 건강하세요. 다른 회원님들도 행복하시구요.

picnic 올림

alee의 이미지

저는 프로그래밍에 대해 별로 아는 것도 없고 글을 꼼꼼히 읽어 보진 않았습니다만,
제목과 몇몇 답글을 보면 논란이 되는 이유는 대충 알 수 있을 것 같습니다.

현명한 사람은 그냥 “좋은 코드를 작성하는 방법” 이라고 하지 “현자의 코드”와 같은 거창한 말을 사용하지 않습니다. 자신이 현명해지기를 바라는 사람이나 현명해지기 위해 노력하는 사람이 “현자의 코드”와 같은 말을 사용하는 것도 아닙니다. 보통 “자신이 남에게 현명하게 보이기를 바라는 사람”이 그런 말을 사용합니다.

위 글이 그냥 보고 웃자고 쓰신 글이거나 수필이나 소설 같은 문학 작품을 쓰신 것이라면 “조우”, “격률”, “심혼”, “환희심”, “엘릭서”, “엔트로피” 같은 현학적인 단어를 쓰는 것이 나름대로 의미가 있었겠지만, 다른 사람에게 도움이 되고자 쓰신 글이라면 쓸데없는 현학적인 표현은 피하시는 것이 더 좋았을 것 같습니다.

익명 사용자의 이미지

일단 좋은 글 잘 읽었습니다. 프로그램을 철학과 사상으로 논하신 것도 색다르게 느껴지네요. 일부 내용은 동의를 합니다만 내용이 조금 추상적이네요.

개인적인 생각입니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.