혹시 the art of computer programming 보고계시는 분 계신가요?

closeyes의 이미지

일주일 전부터 올 말까지 3권 다 보기로 하고 이 책만 파고 있어요.
두시간 전만해도 술술 잘 넘어가던게 갑자기 집중력이 떨어지네요.. 술약속 해서 그런지 , 주위가 산만해서인지 능률이 확 떨어져버렸네요.

원래 수학도 잼병이어서 정석까지 찾아보면서 나가고 있습니다.오늘도 이놈이랑 씨름해야 되는데 . 아 참 , 크너스외2인이 쓴 Concrete mathematics라는 책 1판이 당나귀에서 돌던데, 그거 구해서 보면더 편하실지도 모르겠네요. 저는 두개 번갈아 가면서 보고있어요.요새는 2판까지 나왔는데.pdf는 못찾겠네요.(해외주문하면 십만원넘게 나오던데요--;)

다른분들은 진도 잘나가시나 모르겠네요.

IsExist의 이미지

1권 사놓고 아직 진도 못나가고 있습니다. -.-;;

레벨이 넘 높아요. ~.~

---------
간디가 말한 우리를 파괴시키는 7가지 요소

첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스

이익추구를 위해서라면..

다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치

andysheep의 이미지

closeyes wrote:
일주일 전부터 올 말까지 3권 다 보기로 하고 이 책만 파고 있어요.
두시간 전만해도 술술 잘 넘어가던게 갑자기 집중력이 떨어지네요.. 술약속 해서 그런지 , 주위가 산만해서인지 능률이 확 떨어져버렸네요.

원래 수학도 잼병이어서 정석까지 찾아보면서 나가고 있습니다.오늘도 이놈이랑 씨름해야 되는데 . 아 참 , 크너스외2인이 쓴 Concrete mathematics라는 책 1판이 당나귀에서 돌던데, 그거 구해서 보면더 편하실지도 모르겠네요. 저는 두개 번갈아 가면서 보고있어요.요새는 2판까지 나왔는데.pdf는 못찾겠네요.(해외주문하면 십만원넘게 나오던데요--;)

다른분들은 진도 잘나가시나 모르겠네요.

알고리듬 설명 뒤에 구현 예제도 포함되어 있나요?
궁금하네요.

Devuan 1.0 (Debian without systemd)
amd64 station: AMD FX(tm)-6100 Six-Core Processor, 8 GB memory, 1 TB HDD
amd64 laptop: HP Touchsmart

글쇠판: 세벌 최종식, 콜맥 (Colemak)

closeyes의 이미지

크너스 교수가 처음에 이책을 만들ㄸ ㅐ 목표가 기존의 다른 프로그래머가 만든 소스를 이용하는 게 아니라 , 기존의 컴퓨팅 분야에서 취급하지 않던 것을 개척하는 사람을 위해 만들었다고 해요.
그러다가 그같은 목표를 이룰려면 상업적인 이윤을 남기는 것과 기반기술들의 빠른 발전때문에 완벽히 집필하기 힘들다고 생각이 들었대요.그래서 상업적으로 이용가치가 있고 컴퓨터과학분야의 급속한 성장을 이용하여 여러가지 해결책을 찾는것은 다른 사람들 한테 맡기고 자기는 철저히 기본에 충실한 책을 만들고자 해서 이 책을 썼조.
그런 생각으로 책을 쓰다보니까. 이산수학 , 기계언어프로그래밍 , 자료구조같은 걸 전부 통합시켜서 쓰게되요.특히 이산수학같은 경우는 크너스 스스로 자신을 수학자라고 할정도여서 많은 관심을가지고 자신이 학창시절에 이런식으로 배웠으면 좋겠다하는 걸 체게적으로 저술하조.그 수학을 이름하여 ConcreteMath라 하구요.
크너스가 예전에 '앞으로는 소스코드의 질에 따라 소프트웨어의 가격이 다르게 책정되는 날이 올것이다'라는 식으로 말했듯이 , 크너스는 수백 , 수천 , 수억만 반복실행될 수 도 있는 부분을 최적화 하는게 그럴만한 가치가 있다면서 고급랭귀지로 설명할 수 없는 부분까지 설명하고 누구나 쉽게 이해하게하기 위해서 MIX라는 가상의 컴퓨터를 설계합니다.그리고 MIX 어셈블리를 매개로 여러가지 알고리즘을 설명하죠.그리고 개발되고있는 시뮬레이터를 사용해서 여러가지 시스템으로 변환하게 할 수도 있습니다.

M.W.Park의 이미지

책장에 장식용으로 꽂아 놓으면 아주 멋지죠. 8)
다른 허접 쓰레기류의 - 시류에 편승한, 얄팍한... 어찌보면 천박한 - 기술 서적들을 압도하는 위엄을 지닌 아주 멋진 책이죠.
학부 때 필요한 부분만 몇몇 곳을 읽었는데... 책장을 볼때마다 아쉬움을 느끼게 만드네요.

-----
오늘 의 취미는 끝없는, 끝없는 인내다. 1973 法頂

전웅의 이미지

closeyes wrote:
... 특히 이산수학같은 경우는 크너스 스스로 자신을 수학자라고 할정도여서 많은 관심을가지고 자신이 학창시절에 이런식으로 배웠으면 좋겠다하는 걸 체게적으로 저술하조.

수.. 수학잡니다. 카누스(발음은 Ka-NOOTH)는 1960년대에 Caltech에서 수학으로 박사 학위를 받았습니다.

특히 Vol.2 는 부동소수연산을 이해할 때 많은 도움이 되었습니다. 일부 증명이 너무 거칠게 (--;) 쓰여진 것 빼면... (중간 과정을 따라가려면 머리에서 쥐가...)

--
Jun, Woong (woong at gmail.com)
http://www.woong.org

kksir의 이미지

모두 이해했다면 빌게이츠가 자기에게 오라던. ;)

확실히 크누스 교수님과 호로위쯔(?) 교수님의 책은
훌륭합니다. 다만 이해하기 힘들어서 글치요 ㅜ.ㅜ

ps .
책에서나 보던 전웅님을 여기서 뵈니 참 감회가 새롭
군요. 전웅님 책 역시 훌륭했습니다. ^^;

::::::::::: Easy come, Different go.
::::::::: Http://www.geekstep.org

yielding의 이미지

수학을 전공하긴 했지만 전산학의 아버지를 수학자라고 하긴 좀 그렇군요 :?

Life rushes on, we are distracted

전웅의 이미지

yielding wrote:
수학을 전공하긴 했지만 전산학의 아버지를 수학자라고 하긴 좀 그렇군요 :?

흠.. 편가르기를 하자는 건 아닙니다. :-)

다만, Knuth 의 수학적 background 가 분명 CS 분야 발전에 중요한 역할을
했다는 점을 강조한 것뿐입니다. (사실 Knuth 는 CS 를 또 다른 "수학"
-존재하는 해를 더 빨리 찾기 위한- 이라 생각하고 있습니다)

어차피 당시에는 CS 가 존재하지 않거나 대중화되지 못했겠지만, CS 분야가
Babbage, Knuth, Turing, Von Neumann (알파벳순 ^^) 같은 수학자들의
도움을 많이 받은 건 분명합니다.

--
Jun, Woong (woong at gmail.com)
http://www.woong.org

jwg286의 이미지

CS 는 수학과 밀접한 연관이 있는 것이 아니었던가요? 음.. 물론 개발에 있어서 무엇을 목표로 하느냐에 따라서, 수학과 전혀? 관계없는 일을 할 수도 밀접한 일를 할수도 있는 것 같습니다.

하지만 대부분의 사람들이 개발에 있어서 논리잡기 놀이를 한다는 사실은 인정할 수 밖에 없네요. (논리도 수학이라고 할 수 있겠군요.)

ps) "논리잡기 놀이" 란..
if, for 등등의 구문을 많이 사용할 경우, 발생하는 놀이로, 어떤 함수의 true, false 를 따져서 then 을 수행할 지 else 를 수행할지 따지는 놀이?

불량도ㅐㅈㅣ의 이미지

yielding wrote:
수학을 전공하긴 했지만 전산학의 아버지를 수학자라고 하긴 좀 그렇군요 :?

굳이 그렇게 단정질 필요가 있을까요?

옛날에는 수학자가 철학자고 미술가며 과학자이기도 했는데....

전산의 뿌리는 수학에 있으니......

그런데 TAOCP를 혼자 마스터하기는 힘들듯한테 저럴바에는 Knuth 제자로 들어가는게 더 낫지 않을까요?

문근영 너무 귀여워~~

최종호의 이미지

jwg wrote:
CS 는 수학과 밀접한 연관이 있는 것이 아니었던가요? 음.. 물론 개발에 있어서 무엇을 목표로 하느냐에 따라서, 수학과 전혀? 관계없는 일을 할 수도 밀접한 일를 할수도 있는 것 같습니다.

튜링 머신이나 유니버설 튜링 머신을 사람들에게 설명해 주고
수학과 관련이 있냐고 물으면 수학과 관련이 있다고 할까요?

탄도계산 등 수치처리에 대한 요구가 컴퓨터의 성능향상을 이끌어 온 동력이긴 하지만,
컴퓨터가 기반하고 있는 수학적인 모델의 '수학'과는 상당한 차이가 있다는 생각입니다.

Quote:
하지만 대부분의 사람들이 개발에 있어서 논리잡기 놀이를 한다는 사실은 인정할 수 밖에 없네요. (논리도 수학이라고 할 수 있겠군요.)

ps) "논리잡기 놀이" 란..
if, for 등등의 구문을 많이 사용할 경우, 발생하는 놀이로, 어떤 함수의 true, false 를 따져서 then 을 수행할 지 else 를 수행할지 따지는 놀이?

대부분의 사람들이 CS를 하고 있는 것이 아니거든요.. ^^
논리잡기 놀이 보다는 그림그리기, 덧붙이기 놀이를 하고 있지 않을까요?

gurugio의 이미지

갑자기 왜 수학 이야기가 나오나요?

쓰레드가 좀 틀어지는 것 같습니다.

어쨋든 알고리즘 공부는 정말 중요한것 같습니다.

저도 이제 막 그 책을 시작했습니다.

논문만 마무리 되면 시작하려고 작년부터 벼르고 있었지요.

전 1권만 보려구요. 나머지는 더 공부할 필요가 생길때 봐지겠지요.

Concrete Math 그 책도 사뒀답니다.

아.. 기대되요.. oops

너굴사마의 이미지

최종호 wrote:
jwg wrote:
CS 는 수학과 밀접한 연관이 있는 것이 아니었던가요? 음.. 물론 개발에 있어서 무엇을 목표로 하느냐에 따라서, 수학과 전혀? 관계없는 일을 할 수도 밀접한 일를 할수도 있는 것 같습니다.

튜링 머신이나 유니버설 튜링 머신을 사람들에게 설명해 주고
수학과 관련이 있냐고 물으면 수학과 관련이 있다고 할까요?

탄도계산 등 수치처리에 대한 요구가 컴퓨터의 성능향상을 이끌어 온 동력이긴 하지만,
컴퓨터가 기반하고 있는 수학적인 모델의 '수학'과는 상당한 차이가 있다는 생각입니다.

Quote:
하지만 대부분의 사람들이 개발에 있어서 논리잡기 놀이를 한다는 사실은 인정할 수 밖에 없네요. (논리도 수학이라고 할 수 있겠군요.)

ps) "논리잡기 놀이" 란..
if, for 등등의 구문을 많이 사용할 경우, 발생하는 놀이로, 어떤 함수의 true, false 를 따져서 then 을 수행할 지 else 를 수행할지 따지는 놀이?

대부분의 사람들이 CS를 하고 있는 것이 아니거든요.. ^^
논리잡기 놀이 보다는 그림그리기, 덧붙이기 놀이를 하고 있지 않을까요?

전산학과 수학을 전공해보지도 않은 사람들한테 왜 물어본게 왜 근거가 되죠? 그 사람들이 전문가 입니까? CS와 수학의 관련여부에 대해서 왜 그 사람들의 판단이 근거가 되어야하는지 모르겠네요. 그리고 CS를 전공한 많은 프로그래머들이 그림그리기, 덧붙이기 놀이를 하는거랑은 또 무슨 상관인가요? 물론 추상적인 수학과 물직적인 컴퓨터 구현사이에 어느정도 갭이 있지만 기본은 수학적 모델에 세워져 있는 겁니다. 그렇기 때문에 양자 컴퓨터나 DNA 컴퓨터도 컴퓨터라는 말이 붙는게 아닐까요?

----------------------------------------------------------------------------
"It is more important to know where you are going than to get there quickly"
- Mabel Newcomber

slayer의 이미지

최종호 wrote:

튜링 머신이나 유니버설 튜링 머신을 사람들에게 설명해 주고
수학과 관련이 있냐고 물으면 수학과 관련이 있다고 할까요?

탄도계산 등 수치처리에 대한 요구가 컴퓨터의 성능향상을 이끌어 온 동력이긴 하지만,
컴퓨터가 기반하고 있는 수학적인 모델의 '수학'과는 상당한 차이가 있다는 생각입니다.

글쎄요.. 튜링머신은 그 자체가 '수학적으로 정의된 계산 모델'인데요..-_-;
오토마타 책 보시면 아시겠지만, 정의는 완전히 수학적으로 되어있습니다.
튜링 머신이라는게 '계산한다'라는 걸 수학적으로 추상화시키려는 노력들에서 나온 계산 모델입니다.
'황제의 새마음'이란 책 읽어보시면 이런 계산 이론에 대한 연구의 역사가 간략하게 나마 나옵니다.
(본래는 AI에 대해 다루는 것이지만.. AI와도 밀접한 연관이 있으니..)
한 번 읽어보시죠.

punkbug의 이미지

흠. 수학이 싫습니다. :cry:

newbie :$

최종호의 이미지

amun wrote:
최종호 wrote:
jwg wrote:
CS 는 수학과 밀접한 연관이 있는 것이 아니었던가요? 음.. 물론 개발에 있어서 무엇을 목표로 하느냐에 따라서, 수학과 전혀? 관계없는 일을 할 수도 밀접한 일를 할수도 있는 것 같습니다.

튜링 머신이나 유니버설 튜링 머신을 사람들에게 설명해 주고
수학과 관련이 있냐고 물으면 수학과 관련이 있다고 할까요?

탄도계산 등 수치처리에 대한 요구가 컴퓨터의 성능향상을 이끌어 온 동력이긴 하지만,
컴퓨터가 기반하고 있는 수학적인 모델의 '수학'과는 상당한 차이가 있다는 생각입니다.

Quote:
하지만 대부분의 사람들이 개발에 있어서 논리잡기 놀이를 한다는 사실은 인정할 수 밖에 없네요. (논리도 수학이라고 할 수 있겠군요.)

ps) "논리잡기 놀이" 란..
if, for 등등의 구문을 많이 사용할 경우, 발생하는 놀이로, 어떤 함수의 true, false 를 따져서 then 을 수행할 지 else 를 수행할지 따지는 놀이?

대부분의 사람들이 CS를 하고 있는 것이 아니거든요.. ^^
논리잡기 놀이 보다는 그림그리기, 덧붙이기 놀이를 하고 있지 않을까요?

전산학과 수학을 전공해보지도 않은 사람들한테 왜 물어본게 왜 근거가 되죠? 그 사람들이 전문가 입니까? CS와 수학의 관련여부에 대해서 왜 그 사람들의 판단이 근거가 되어야하는지 모르겠네요.

컴퓨터가 수학적인 모델에 기반을 두고 있다고 이야기를 하는데 CS나 이와 연관된 쪽을 전공하지 않은 분들이 생각하는 수학과 컴퓨터의 기반 모델의 수학이
분야가 다르다는 것을 얘기하고 싶었던 것입니다.
gws님이 너무 일반적인 얘기로 컴퓨터가 수학과 밀접한 연관이 있다고 하셔서 구분짓고 싶어서 한 이야기입니다.
일반적으로 수학이라하면 대수(흠.. 이건 부울대수 때문에 좀 그렇긴 하지만), 기하, 해석학 등을 중심으로 한 고전적인 수학을 떠올릴텐데,
집합론을 필두로 한 현대수학과 논리학 중 컴퓨터의 계산 모델은 현대수학에 기반을 둔 것이다 라는 주장을 하려고 했던 것이죠.

이 스레드의 원래 논제인 알고리즘 분석이나 Knuth 의 책에서 사용하는 수학은 주로 이산수학과 해석학이죠.

Quote:
그리고 CS를 전공한 많은 프로그래머들이 그림그리기, 덧붙이기 놀이를 하는거랑은 또 무슨 상관인가요? 물론 추상적인 수학과 물직적인 컴퓨터 구현사이에 어느정도 갭이 있지만 기본은 수학적 모델에 세워져 있는 겁니다. 그렇기 때문에 양자 컴퓨터나 DNA 컴퓨터도 컴퓨터라는 말이 붙는게 아닐까요?

CS가 컴퓨터와 연관이 되는 모든 것에 관한 기술과 학문으로 용어가 넓게 사용되기는 하지만, 소프트웨어 개발은 그 나름대로의 영역을 가지고 있으며,
소프트웨어 개발을 한다고 CS 를 한다고 하는 것은 맞지 않는다는 생각입니다.
CS에 필요한 기술과 자질, 방법론과 소프트웨어 개발에 필요한 것과는 차이가 있다는 것들이고, 이는 많은 CS를 전공한 분들이 소프트웨어 개발을 시작하면서 적지 않은 적응교육을 필요로 하는 이유이기도 합니다.

저는 소프트웨어 개발을 그림그리기로 생각합니다.

화가가 파스텔, 크레용, 목탄, 붓, 캔바스, 유성물감 등 기본적으로 사용하는 재질에 대한 이해와 그것들을 사용했을 때 어떤 효과가 있고, 주의점은 무엇이고 와 같은 것에서 출발하는 것이,
개발자가 선택하는 언어의 특징은 어떻고, 이 라이브러리는 어떤 형태로 사용하고, 주의해야할 점은 어떤 것이고 하는 것과 무척이나 닮아있다고 생각합니다.

화가가 유성 물감을 익숙하게 사용하게 될때까지 여러 그림을 그려보고 하는 과정을 거치듯이, 개발자도 EJB를 쓴다든가 C++의 STL 을 전면적으로 도입하면서 샘플로 짜보고 튜토리얼도 돌려보고, 삽질도 해보는것이죠.

그림을 그리는 과정이나 소프트웨어를 개발하는 과정은
이러한 기본적인 도구를 사용해서 어떠한 것을 만들어 나가는 과정이죠.

유치원생이나 서투른 화가지망생들이 자기가 그리던 그림을 감당못하거나,
무엇인지 모를 그림을 그리는 것처럼, 개발자도 요구사항을 잘못 이해하거나
숙련되지 못한 여러 새로운 기술을 쓰거나 hype에 휘둘려서 프로젝트를 감당 못하기도 하고요.

어떠한 기능을 구현하는데 필요한 구성요소들을 나누고,
그것들 간의 상호작용방식을 정의하고, 어떤 요소는 직접 개발하고,
어떤 부분은 프레임웍을 따르기로 하고, 어떤 부분은 오픈소스를 쓰고를 결정하고, 그에 따른 결과를 예상하며, 구현해 가는 작업이
무언가를 창조하는 사람의 그것과 다른 점이 있을까요?

네, 사실 이런 논점이라면 무언가를 만들어내는 사람들은 다 창조자입니다.
저는 그렇다고 생각을 하고요.

그리고 실제로 소프트웨어 개발의 많은 부분에서 그림그리기는 아니지만
건축쪽의 메타포를 많이 끌어다 쓰고 있습니다.
소프트웨어 아키텍쳐 라고 하는 '아키텍쳐'가 건축에서 가져온 개념이며,
건축쪽의 Christopher Alexander 의 패턴 관련책은
소프트웨어 패턴 하는 사람들의 궁극적인 바이블로 통하고요.
(아마 읽은 사람들은 많지 않을 것으로 생각됩니다만..)
(직원의 실수였겠지만) 영풍문고에서는 Patterns of Enterprise Application Architecture라는
Martin Fowler 책을 건축학 쪽으로 분류해 놓기도 했었습니다.

덧붙이기는 Cut & Paste 를 염두에 두고 한 말이었습니다.. ㅡ.ㅡ;;

slayer wrote:
글쎄요.. 튜링머신은 그 자체가 '수학적으로 정의된 계산 모델'인데요..-_-;
오토마타 책 보시면 아시겠지만, 정의는 완전히 수학적으로 되어있습니다.
튜링 머신이라는게 '계산한다'라는 걸 수학적으로 추상화시키려는 노력들에서 나온 계산 모델입니다.
'황제의 새마음'이란 책 읽어보시면 이런 계산 이론에 대한 연구의 역사가 간략하게 나마 나옵니다.
(본래는 AI에 대해 다루는 것이지만.. AI와도 밀접한 연관이 있으니..)
한 번 읽어보시죠.

Roger Penrose 와 저의 입장은 다르기는 하지만,,

'수학적'이라는 것에 대한 해석은 앞의 amun님께 드린 글과 비슷합니다.
'수학'과 맞서는 말로서 '논리학'을 쓰고 싶었는데,
(올리지 않은 글에서는 "'거칠게 싸잡아서' 수학과 논리학 두가지가 있다고 할때" 라는 표현을 쓰려고 했었습니다만) 오토마타나 계산이론이 논리학도 아닌 듯 싶어서,
컴퓨터에서 기반을 두고있는 (수학적) 모델이 일반인들이 '수학'이라는 것에서
받게 되는 고전적인 모델과는 다른 것이다 라는 말을 하고 싶었습니다.

zepinos의 이미지

번역서가 나올 일은 없을까요? :oops:

너굴사마의 이미지

일본에 번역서가 있습니다. 일본어 공부하시고 보시면 되겠네요. -_-;

----------------------------------------------------------------------------
"It is more important to know where you are going than to get there quickly"
- Mabel Newcomber

서지훈의 이미지

일단 1,2,3권 소장만...-_-ㅋ

<어떠한 역경에도 굴하지 않는 '하양 지훈'>

#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);

chunsj의 이미지

Knuth의 책은 그걸 직접 보고 공부하기에는 너무 버거운 것 같던데... 내가 사용하는 알고리듬/기법 의 본질이 무엇일까 궁금할 때 보면 좀 도움이 되는 것 같기는 한데, 그냥 보고 하기엔 미분 방정식을 어디다 쓰는지도 잘 모를 때 라플라스 변신(!)을 배우는 기분이었습니다. -_-;;

하지만, 의외로 이책을 독파하겠다는 사람들이 주변에 많이 계시네요. 저도 한번 정독을 해야만 하는 것이 아닐까하는 압박이... T_T

사족)

최종호 wrote:
컴퓨터에서 기반을 두고있는 (수학적) 모델이 일반인들이 '수학'이라는 것에서
받게 되는 고전적인 모델과는 다른 것이다 라는 말을 하고 싶었습니다.

일반인들이 알고 있다고 생각하는 "수학"은 수학이아니라 "산수"에 가깝죠. 인간이 비교적 정확히 알고 있는 대부분의 문화적, 지식적인 자산은 모두 수학입니다. CS도 수학의 자식을 벗어날 수 없죠, 다른 사이언스, 엔지니어링과 마찬가지로 말이죠. (말로만 사이언스, 예를 들어 소셜 ... 이런 것들은 사양합니다.)