돌에 글을 새기듯이 프로그래밍을 배우다...

voider의 이미지

도널드 크누스 에 관한 일화로 다음과 같은것이 있습니다.

Quote:

내(앨런 케이)가 스탠퍼드에서 AI 프로젝트를 맡고 있던 시절 (1960 년대 후반) 매년 추수감사절 때마다 가졌던 행사 가운데 하나는 그 샌프란시스코 만안 지방(Bay area)에서 연구 프로젝트에 종사하고 있는 사람들로 프로그래밍 컨테스트를 여는 것이었습니다. 상품은 칠면조였던 것으로 기억됩니다.

문제는 주로 매커시가 출제하였지요. 한 해는 크누스가 그 대회에 참가해서 가장 빠른 시간에 프로그래밍을 실행시킨 사람에게 주는 상과 알고리즘을 가장 빨리 실행하는 사람에게 주는 상을 모두 휩쓸었습니다. 그는 윌버(Wilbur) 시스템이라는 원격 일괄 시스템을 이용해 최악의 시스템에서 그것을 해 내었지요. 그는 간단하게 모든 참가자들을 바보로 만들어 버렸습니다.

사람들이 그에게 이렇게 물었지요. "어떻게 이런 일이 가능하죠?" 그의 대답은 이런 것이었습니다. "내가 프로그래밍을 배울 때는 하루에 기계와 5분을 보낼 수 있으면 꽤 운이 좋은 경우였죠. 프로그램이 작동하도록 만들고 싶으면 단지 프로그램을 제대로 작성해야 했습니다. 그래서 사람들은 돌에 글을 새기듯이 프로그래밍을 배웠습니다. 그냥 그것을 향해 조금씩 다가가기만 하면 됩니다. 난 그렇게 프로그래밍을 익혔습니다."


여기서 돌에 글을 새기듯이 프로그래밍을 배운다는것은 무엇을 말하는걸까요....
아... 감이 오지 않는군요.
jachin의 이미지

Statement 한 줄 한 줄을 곰씹고 그것이 맞는 것인지 틀린 것인지 생각하면서 프로그래밍을 했다는 얘기 아닐까요? 컴퓨터와 5분을 보낼 수 있으면 운이 좋았다는 얘기는 컴퓨터로 프로그래밍 하는 것보다 머리로 프로그래밍 하는 시간이 더 많았다고 생각됩니다.

voider의 이미지

아 생각하면 할수록 무엇인가 와 닫는군요.
지금 포스트잇에 "돌에 글을 새기듯이 그것을 향해 조금씩 다가가자"라구 큼지막하게 써놨습니다.

그러구 보면 WWW는 너무 화려하구 너무 빠져나갈 구멍도 그 가지도 끝이 없는것 같습니다.

돌다가 돌다가 다시 돌아 와야 하는데 못돌아 오는 무한 재귀처럼...

-- 아쉬운 하루 되세요 --

fibonacci의 이미지

하루에 5분 컴퓨터에 코드를 입력할 기회가 주어지는 환경이라면
실행하면서 디버그하는 따위는 꿈도 못꾸겠죠.
한번에 프로그램을 오류없이 완벽하게 만드는 것
이것이 마치 "돌에 새기듯" 프로그래밍을 하는 것이 아닐까요...

No Pain, No Gain.

jachin의 이미지

fibonacci wrote:
하루에 5분 컴퓨터에 코드를 입력할 기회가 주어지는 환경이라면
실행하면서 디버그하는 따위는 꿈도 못꾸겠죠.
한번에 프로그램을 오류없이 완벽하게 만드는 것
이것이 마치 "돌에 새기듯" 프로그래밍을 하는 것이 아닐까요...

저보다 문장력이 더 좋으시네요. ( _ _)=b
버려진의 이미지

저는 기억이 딱 떠올랐는데요.

돌에 새기면 잘 지워지지 않듯이..

한번 한것은 잊지 않도록..

impactbar의 이미지

선대의 프로그래머 어르신들이 익히면 면벽신공

프로그래밍에 컴퓨터는 도구일뿐이라는...쿨럭.

저런 글만 보면 무협지가 생각나는지. ^^;

검의 끝은 검을 버린다는...^^;

kis2kima의 이미지

2년전에 어떤 임베디드 장비에 어플리케이션을 포팅하는 작업을 하였었는데 네트워크환경이 갖추어지지 않아 그때까지 어플리케이션을 올려서 한 번 테스트하기 위해서 2시간정도가 필요했었습니다. 피가 마르는 일이었지요. 저는 저 말을 이해할 수 있을 듯 합니다. 띠방 ㅠ.ㅠ

p.s 띠방 어감이 안좋다고 하시면 지우도록 하겠습니다. :-p

뭐 그렇고 그런거죠.

codebank의 이미지

'돌에 글을 새기듯...'
아주 좋은 글이군요.
사실 저도 처음 컴퓨터를 배울때 5분은 아니지만 수업시간 1시간을 제외하곤 터미널을
점유할 수가 없었죠. 거기다 2인 1조로 하나의 터미널을 사용해야하니...
당시 XT가격이 150만원대였으며 일반가정에서는 감히엄두도 내지 못할 시기였죠.
애플도 70~80만원선이었고...
결국 학교에서 숙제라도 내주면 집에서 하루종일 흐름도 그리고 코드를 연습장에
일일이 적어놓고 혹시 철자가 틀린것이 없는지 교과서와 비교하면서 거의 대부분의
버그를 잡아서 학교에서 수업시간에 5분만에 숙제를 끝냈던 기억이 나는군요.
(입학전에 타자기로 자판을 외워서 남들보다 빠르게 입력이 가능했죠.)
디버깅은 많으면 2번정도(오타때문에...)면 끝났을겁니다.
그당시엔 아는 사람이 있어서 아무도 접근하지 못하는 전산실에 들어가서 2시간 정도는
마음대로 터미널을 접할 수 있는 시간이 가장 좋았죠.(그래봤자 일주일에 2번정도...)

마음속에 새겨 놓을만한 글이군요...
돌에 글을 새기듯이 프로그래밍을 배웠습니다. :D

------------------------------
좋은 하루 되세요.

bus710의 이미지

codebank wrote:
'돌에 글을 새기듯...'
아주 좋은 글이군요.
사실 저도 처음 컴퓨터를 배울때 5분은 아니지만 수업시간 1시간을 제외하곤 터미널을
점유할 수가 없었죠. 거기다 2인 1조로 하나의 터미널을 사용해야하니...
당시 XT가격이 150만원대였으며 일반가정에서는 감히엄두도 내지 못할 시기였죠.
애플도 70~80만원선이었고...
결국 학교에서 숙제라도 내주면 집에서 하루종일 흐름도 그리고 코드를 연습장에
일일이 적어놓고 혹시 철자가 틀린것이 없는지 교과서와 비교하면서 거의 대부분의
버그를 잡아서 학교에서 수업시간에 5분만에 숙제를 끝냈던 기억이 나는군요.
(입학전에 타자기로 자판을 외워서 남들보다 빠르게 입력이 가능했죠.)
디버깅은 많으면 2번정도(오타때문에...)면 끝났을겁니다.
그당시엔 아는 사람이 있어서 아무도 접근하지 못하는 전산실에 들어가서 2시간 정도는
마음대로 터미널을 접할 수 있는 시간이 가장 좋았죠.(그래봤자 일주일에 2번정도...)

마음속에 새겨 놓을만한 글이군요...
돌에 글을 새기듯이 프로그래밍을 배웠습니다. :D

....연세를 짐작할만한 멘트이십니다 :D ;;

life is only one time

버려진의 이미지

힘들게 공부했다는 뜻으로 해석할 여지도 있군요

(집착 으아아아)

쿨링팬의 이미지

일화의 출처가 궁금합니다.

읽어보고 싶군요. :wink:

voider의 이미지

impactbar wrote:
선대의 프로그래머 어르신들이 익히면 면벽신공

프로그래밍에 컴퓨터는 도구일뿐이라는...쿨럭.

저런 글만 보면 무협지가 생각나는지. ^^;

검의 끝은 검을 버린다는...^^;


저도 무협지가 생각 났다는... 하지만 주책일것 같아 ㅤㅆㅓㅅ다가 지웠지요 :D

쿨링팬//
출처는 이곳입니다
http://ko.wikipedia.org/wiki/%EB%8F%84%EB%84%90%EB%93%9C_%ED%81%AC%EB%88%84%EC%8A%A4

-- 아쉬운 하루 되세요 --

아무개의 이미지

쿨링팬 wrote:
일화의 출처가 궁금합니다.

읽어보고 싶군요. :wink:


  • 영어 원문 : 'So people just learned to program like it was carving stone.' 부분을 검색하면 찾을 수 있습니다.
  • 원문 출처(?) : Wikipedia의 한글번역본입니다. 자세히 확인은 못했습니다만 토씨하나까지 다르지 않은 것을 보면, 여기가 출처인 것 같습니다.
  • PDF로 만든 번역본 : 원래 이 내용은 컴퓨터를 만든 15인의 과학자라는 책에 나오는 내용입니다. 현재는 절판상태입니다만, 이 책에는 참 좋은 내용이 많죠. (비전공자가 번역했기 때문인지 중간에 이상한 내용이 상당히 있습니다만...) 이 PDF파일의 맨 끝 부분에 위 일화가 나옵니다. 이 PDF파일은 KTUG에서 LaTeX을 이용한 문서 작성의 예제로 만든 것입니다.
[/]
dgsquare의 이미지

기회가 된다면 같은 책에 열거된 사람 중, 고인이 되신 다익스트라(Edsger Wybe Dijkstra)교수의 내용도 읽어 보시기 바랍니다 . 직설적인 분이지만 컴퓨터분야에 대한 직관력만큼은 누구보다 뛰어났던 분이 아닌가 싶네요. :D
누스 교수님도 대단하지만 이분 역시 CS에 한 획을 그으신 분입니다.

http://en.wikiquote.org/wiki/Edsger_Dijkstra
(더 좋은 Link가 있었는데 생각이 안나네요-_-)

신승한의 이미지

dgsquare wrote:
기회가 된다면 같은 책에 열거된 사람 중, 고인이 되신 다익스트라(Edsger Wybe Dijkstra)교수의 내용도 읽어 보시기 바랍니다 . 직설적인 분이지만 컴퓨터분야에 대한 직관력만큼은 누구보다 뛰어났던 분이 아닌가 싶네요. :D
누스 교수님도 대단하지만 이분 역시 CS에 한 획을 그으신 분입니다.

http://en.wikiquote.org/wiki/Edsger_Dijkstra
(더 좋은 Link가 있었는데 생각이 안나네요-_-)

갑자기 Shortest path algorithm 이 떠오르는군요,

FrogLamb의 이미지

흐음... TDD는 꿈도못꾸겠군요 :twisted:

그런데 저런 방식이 지금도 필요한 방식일지는 의문이네요
물론 프로그래밍에 충분한 생각이 필요한것은 사실이지만 요즘엔 각 코드의 최적화보다는 빠른 개발 속도와 유지/보수 측면이 더 강조되고있지 않던가요?

----------------------------------------
Kwonjin Jeong

khris의 이미지

FrogLamb wrote:
흐음... TDD는 꿈도못꾸겠군요 :twisted:

그런데 저런 방식이 지금도 필요한 방식일지는 의문이네요
물론 프로그래밍에 충분한 생각이 필요한것은 사실이지만 요즘엔 각 코드의 최적화보다는 빠른 개발 속도와 유지/보수 측면이 더 강조되고있지 않던가요?

이제 한글자 한글자 돌에 새기듯이 유지/보수를 생각하면 되지 않을까요?
목적은 달라도 심사숙고하는 마인드는 바뀌지 않을듯합니다.

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

seldom의 이미지

오역이네요. 원문 링크를 따라가보니 아래와 같이 나와있습니다.

Quote:
When I was at Stanford with the AI project [in the late 1960s] one of the things we used to do every Thanksgiving is have a computer programming contest with people on research projects in the Bay area. The prize I think was a turkey.

[John] McCarthy used to make up the problems. The one year that Knuth entered this, he won both the fastest time getting the program running and he also won the fastest execution of the algorithm. He did it on the worst system with remote batch called the Wilbur system. And he basically beat the shit out of everyone.

And they asked him, "How could you possibly do this?" And he answered, "When I learned to program, you were lucky if you got five minutes with the machine a day. If you wanted to get the program going, it just had to be written right. So people just learned to program like it was carving stone. You sort of have to sidle up to it. That's how I learned to program."

뒷부분만 해석하면,

'어떻게 한거죠?'
'내가 프로그램을 배울땐 머쉰을 하루에 5분 쓸 수 있으면 행운이었습니다.
프로그램을 돌아가게 하려면 제대로 작성했어야만 했습니다.
그래서 사람들은 돌을 연마하듯이 프로그램을 배웠습니다. 조심스럽게 다가가야만 했죠.
그것이 내가 프로그래밍을 배운 방법입니다.'

fairycat의 이미지

박모 프로그램 개발 학원에서는.. 맨처음 실행 과정을 적게 하고, 순서도를 그리고, 다시 NS-Chart로 그리고, 손코딩을 한후, 이걸 검산해본 다음 버그가 없다고 판단되면 그 때 직접 컴퓨터에 코딩하게끔 가르칩니다. 사실 처음에 이런식으로 프로그래밍을 배우면 좀 괴롭긴 하겠지만 멀게 봤을땐 좋은 방법이라고 생각됩니다. 결과를 천공 카드로 출력하던 시절에 프로그램하던 대로의 방식이라고 하더군요.

가이: 리여.. 확실히 너는 네지와는 다르다
록리: 위로라면 집어치세요..
가이: 위로같은게 아니다 ! 너는 네지와는 다르게 천재도 아니고 재능도 없다 하지만 너는 노력의 천재다..

- 나루토 <키시모토마사시>