행복한 프로그래밍
카테고리 컴퓨터/IT
지은이 임백준 (한빛미디어, 2003년)
상세보기


p.50 : 프로그래밍을 배운지 얼마 되지 않은 사람들은 자신이 작성한 프로그램이 일단 돌아가기만 하면 감격한다. 나도 그랬다. 처음에는 프로그램이 돌아가도록 만드는 것말고 다른 것은 생각할 여유가 없다. 자신이 작성한 프로그램이 원하는 결과를 낳는 것을 눈으로 확인하는 것만으로도 가슴이 벅차고 심장이 두근거리기 때문이다.

p..52 : 대부분의 사람들은 여기에서 멈춘다. 이 정도면 크게 나쁘지 않다고 보고 더 이상 고민하지 않는 것이다. 이러한 프로그래머가 작성하는 알고리즘은 대개 주어진 일을 처리하는 데 있어서 크게 문제를 일으키지 않는다. 가끔 버그가 발견되거나 성능에서 문제가 나타나기도 하지만, 그 때마다 필요한 수정을 가해서 프로그램을 유지해나간다..... 이런 사람들은 실력이 부족하다기보다는 집중력이 부족한 것이다. 능력이 없는 것이 아니고 열정이 부족한 것이다. 하지만 프로그래밍을 삶을 (전체는 아니더라도 최소한 일부) '목적'으로 대하는 프로그래머들은 다른 사람이 19분보다 빠른 방법이 있다고 말해주지 않아도 스스로 고민을 시작한다. 더 빠른 방법이 있는지조차 확실하지 않지만 커피를 한잔 마시면서 새벽까지 고민한다. 이유는 없다. 그러한 고민을 하는 순간이 세상에서 두 번째로 행복한 순간이기 때문에 고민을 하지 않을 수가 없을 뿐이다. 그럼 세상에서 첫번째로 행복한 순간은? 당연히 고민하던 문제를 풀어서 심장에 전류가 흐르는 듯한 쾌감을 느끼게 되는 순간이다. 말하자면 프로그래머는 그 쾌감을 잊지 못해서 끊임없이 키보드를 두드리게 되는 일종의 '쾌감 중독자'인 셈이다.모든 일이 다 그렇지만 보통의 프로그래머와 뛰어난 프로그래머는 이렇게 열정이 있는가 없는가에서 판가름난다.

p. 121 : 오늘날에도 널리 사용되고 있는 C언어는 프로그래머들이 쉽게 이해할 수 있는 고급언어 문법 구조를 가지고 있으면서도 CPU와 메모리라고 하는 비트의 세계 깊숙한 곳까지 들어갈 수 있도록 해주는 기능을 가지고 있기 때문에 엄청난 주목과 찬사를 받으면서 단숨에 70년대와 80년대를 관통하는 최고의 프로그래밍 언어로 등극했다.

p.122 : 모든 프로그래밍에서 객체 지향 언어가 절차 중심의 언어보다 더 낫다고 볼 수는 없지만 절차 중심의 언어가 해결하기 어려운 문제를 객체 지향 언어로 풀 수 있다는 점에서 본다면 그 둘의 차이는 분명히 존재한다. 절차적인 언어의 핵심은 바로 특정한 알고리즘, 혹은 절차(procedure)를 중심으로 문제를 해결해나간다는 것이다. 알고리즘이나 절차는 특정한 함수안에 보관되는데, 누군가 그 함수를 호출하면 함수 내부에 저장되어있는 알고리즘이 실행된다. 다시 말해서, 절차적인 언어의 핵심은 내가 입력을 보내면 잠시 후에 출력 결과를 되돌려 주는 함수라고 볼 수 있다.

p.127 :  훌륭한 화가가 처음에는 다른 사람의 그림을 똑같이 그리는 연습을 하고 뛰어난 바둑 기사가 처음에는 고수들이 둔 바둑의 기보를 열심히 읽어보듯이, 수준 높은 프로그래머가 되기를 꿈꾸는 사람은 실력이 뛰어난 프로그래머가 작성한 프로그램을 많이 보고 똑같이 흉내를 내 볼 필요가 있다.......아무리 실력이 뛰어난 프로그래머가 작성한 코드라고 해도 개선의 여지는 항상 남아있기 마련이다. 따라서 남의 프로그램을 분석하거나 학습할 때 자기만의 주관과 철학을 가지고 비판적인 시각으로 바라보는 자세는 대단히 중요하다.

p.144 :  이러한 실천과 실험 속에는 새로운 기술적인 내용이나 변화를 학습하는 것이 포함되어 있지만 지나치게 새로운 것만을 좇아 다니는 것은 가볍고 무망하다. 진정한 힘은 인기를 끄는 프로그래밍 언어의 문법적인 측면이나 단편적인 기교를 습득하는 데서 나오는 것이 아니라 근본적이고 고전적인 내용을 학습하는 데서 더 많이 쌓이기 때문이다.

p.212 : 내게 영향을 주었던 프로그래밍에 대한 그의 철학은 너무나 뚜렷했기 때문에 한 마디로 압축될 수 있을 정도였다. '소설처럼 읽히는 프로그램' ..... 소설처럼 읽히는 프로그램이란 '보통 수준의 프로그래머'가 읽었을 때 의미가 한 눈에 이해되는 프로그램을 의미한다..... 나는 1밀리세컨드가 실질적인 차이를 불러일으킬 수 있는 소수의 특수한 프로그래밍을 제외한 모든 프로그래밍에서 '쉽게 읽히지만 조금 느린 프로그램'이 '복잡하지만 빠른 프로그램'보다 훌륭한 프로그램이라고 믿는다...... 사실 이해하기 어렵게 작성된 프로그램의 대다수는 구현하고 있는 논리가 실제로 복잡하기 때문에 그렇게 작성되기보다는 프로그래머 자신의 역량과 철학이 부재하기 때문에 그렇게 작성되는 경우가 많다. 한번 더 얘기하자. 쉬운 프로그램이 좋은 프로그램이다.

p.242 :  소프트웨어를 설계하는 일은 그 자체로 복잡한 법칙을 가지고 있기 때문에 특정한 알고리즘을 구현할 줄 아는 프로그래밍 능력만으로는 수행하기 어렵다. 설계자는 프로그래밍 능력 이외에도 복잡하게 얽히고 설킨 소프트웨어 콤포넌트나 객체들 사이의 관련성을 전체적으로 조망할 수 있는 힘이 있어야 한다. 그리고 아무 것도 없는 백지 상테에서 출발해서 살아서 퍼덕거리는 소프트웨어 덩어리를 조각할 수 있는 창조적인 능력도 있어야 한다. 그 뿐만이 아니다. 진정한 소프트웨어 설계자는 현재의 기술적인 흐름을 정확하게 읽고 있는 것은 물론 미래의 기술이 나아가는 방향도 직관적으로 감지할 수 있어야 한다.


알라딘 중고서적에서 4천원에 구입,
이번에 책 산게 많은 데, 얇고 읽기 편한책이라 제일 먼저 다 읽었음.


WRITTEN BY
뮤네

,