The Art of Programming.
요즘 프로그래밍을 예술의 경지로 끌어올리기 위해 부단히 노력하고
있습니다. "Is it possible to write bug-free code?"라는 질문을 스스로
던지고 이 문제를 해결하기 위해 여러가지 최신의 소프트웨어 공학적
방법(TDD, UP 등)들을 적용하고 있습니다.
그러다 문득 들은 생각...
과연 내가 개발하는 코드가 내가 만든 것이 맞는가. 혹시 원래 이 우주에
태초부터 존재하던 코드를 다시 쓰는 것에 지나지 않는 것은 아닌가.
모든 프로그램은 CPU에 의해 실행되려면 결국 0과 1로 구성된 machine code
로 바뀌어야 합니다. 어떠한 high-level language로 개발하였더라도 결국은
binary machine code로 바뀌어야 된다는 겁니다. 따라서 모든 코드는 0과 1로
이루어져 있습니다.
0과 1을 concatenation하여 만든 문자열의 무한 집합을 U라고 하면, 다음과
같이 표기할 수 있을 겁니다.
U = {ε, 0, 1, 00, 01, 10, 11, 000, 001, ...}
(입실론은 길이가 0인 스트링을 의미)
결국 모든 코드라는 건 이 U라는 무한집합에 포함된 원소일 겁니다.
그렇다면 이 U라는 집합은 우주의 탄생과 동시에 이미 수학적으로 존재하던
집합이고, 내가 하고 있는 일은 단지 이 집합 중에서 필요로 하는 코드를
다시 써내려가는 것 뿐입니다. 물론 high-level language과 컴파일러의
도움을 받아서 말이죠.
미켈란젤로가 다비드상을 만들고서 이런 얘기를 했다고 합니다.
"다비드 상이라는 것은 애초에 저 대리석 속에 존재했었다. 내가 한 일이라곤
불필요한 돌들을 치워 다비드상이 겉으로 나올 수 있게 한 것 뿐이다."
제가 만들고 있는 수많은 코드가 정말 제가 만든 게 맞는 걸까요? 아니면
이미 이 대우주의 질서 속에 내재되어 있던 코드를 다시 써내려간 것
뿐일까요?
--
TRUST NO ONE. EVERYTHING YOU KNOW IS WRONG.
다시써내려가기보다는 재조합한다고 하는게 맞지 않을까요?01과 10
다시써내려가기보다는 재조합한다고 하는게 맞지 않을까요?
01과 1001을 조합하고 또~ 조합을 반복하여 하나의 코드가 완성되는거니까요~
그 조합이 잘 안되면 버그가 있는 코드가 되는거겟죠?
그냥 그렇게 생각이 드네요~ㅋ
o ji ma! ji rm sin!
삽질의 추억~ㅋ
미켈란젤로가 다비드상을 만들면서 했다는 말과 거의 본질적으로 똑같은
미켈란젤로가 다비드상을 만들면서 했다는 말과
거의 본질적으로 똑같은 말씀을 하시는 것 같은데,
그런거야 "맞기도 하고 틀리기도 한" 문제의 전형 아닐까요.
그렇게 보자면 "조합은 창조가 아니다." 는 참이 되는 거지요.
하지만 조합도 창조로 보지 않습니까.
쉽게 문학 작품 같은거요~
무한대에서 가치있는 하나를 이끌어내는게 바로 창조 아니겠습니까.
그리고, 미켈란젤로가 저런 말을 해도 멋있게 들리는건
다비드상을 꺼낼 능력이 있었기 때문이겠죠~
겸손이자 오만이랄까.
우선은 능력이 필요한게 아닐지 :oops:
-------------------------
The universe is run by the complex interweaving of three elements: matter, energy, and enlightened self-interest.
- G'kar, Babylon 5
언어학에서도 가끔 비슷한 얘기가 나옵니다.인간은 자신이 알고 있는
언어학에서도 가끔 비슷한 얘기가 나옵니다.
인간은 자신이 알고 있는 유한한 수의 단어(엄밀히 말하면 단어가 아니라 형태소지만)를 조합하여 무한한 수의 문장을 생성해냅니다.
아무도 가르쳐준 적이 없는 문장도요.
-----
랜덤한 조합의 무한한 집합에는 모든 내용이 포함되어 있으므로, 큰 신경을 쓰지 않으셔도 될 것 같습니다. 무한한 수의 원숭이가 타자기를 두드리면 셰익스피어 전집도 나온다고 하잖아요.
정보가 인간정신의 창조물이냐 아니면 인간과 무관하게 원래부터 있던것이
정보가 인간정신의 창조물이냐 아니면 인간과 무관하게
원래부터 있던것이냐의 여부에 따라 답이 달라지겠죠.
수학에서도 비슷한 논쟁이 있습니다.
수학자가 어떤 정리를 유도해냈을 때 그 사람은 그것을
"발견"한건가..아니면 "발명"한건가?
논리주의를 따르는 사람들은 주로 "발견"했다고 주장하지만..
(원래부터 그것은 우주에 포함되어 있었다)
직관주의를 따르는 사람들은 수학을 인간 정신의
창조물로 여기므로 "발명"한걸로 생각합니다.
아직 이에 대한 명확한 해답이 없고... 논쟁중인 부분입니다.
이미 대부분의 사람들은 이런 논쟁이 무의미하다고 여기고
다른 분야를 연구하고 있지만요...
흠 그런데 저는 글타래 제목을 보고.. 순간 Knuth 를 떠올렸는데..
전혀 상관없는 내용이었네요...
Just for fun......이라고 한마디로 줄일수도 있겠지만
Just for fun...
...이라고 한마디로 줄일수도 있겠지만, 사실 저는 쓸데없이 이리저리 생각하는 타입이라...
자연속에서 법칙을 발견했다기보다는 프로그래머 스스로가 창조했다고 생각합니다.
어릴적부터 Maker보다는 Creator가 맞는 표현이라 생각해왔던지라... :)
좀 더 막나가자면 지금의 물리학 법칙도 '자연속에 존재' 했던것이 아니라 '발견' 한 순간부터 '자연속에 존재' 하게 된것이 아닐까요? (이건 좀 심했나?)
───────────────────────
yaourt -S gothick elegant
khris'log
창조와 조물은 다르지요.저책 오래전에 사두고 고이 모시고만 있는
창조와 조물은 다르지요.
저책 오래전에 사두고 고이 모시고만 있는 책중에 하나입니다. :-)
---------
간디가 말한 우리를 파괴시키는 7가지 요소
첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스
이익추구를 위해서라면..
다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치