[독서] 『누워서 읽는 알고리즘』 03_도전이 되는 글귀 모음

BANSEOK SUH·2021년 4월 24일
0

독서

목록 보기
4/6
post-thumbnail

임백준 선생님의 『누워서 읽는 알고리즘』을 읽으면서 정신적으로 도전이 되는 글귀가 있어 몇자 발췌해봤습니다.

(절묘한 알고리즘을 떠올리는 능력은) 주어진 문제의 본질을 깊이 이해하는 관찰력과 고정관념에 얽매이지 않는 발랄한 상상력을 갖추고 있을 때 비로소 가능한 것이다. 그런데 이러한 관찰력과 상상력 역시 하루아침에 얻을 수 있는 능력이 아니다.
사물을 깊이 관찰하는 능력과 자유분방한 상상력을 발휘하는 능력은 평소에 꾸준히 훈련해야만 얻을 수 있다.
...
좋은 프로그래머는 소설도 읽고, 영화도 보고, 농구도 하고, 기타도 치고, 정치 토론에도 참여하고, 연애도 하고, 술도 마시는 열정적인 사람이다. 진정한 상상력은 삶의 속살을 이해할 때 비로소 풍부해지기 때문이다.
p.62

부러운 것은 그들(가우스, 폰 노이만)의 '천재성'이 아니라 바로 자신이 선택한 일을 진심으로 사랑하여 끝없이 몰두할 수 있었던 '열정'이다.
p.64

실제로 중요한 것은 문제를 푸는 속도가 아니라 끝까지 포기하지 않고 문제를 해결하려고 하는 '프로'근성이다.
... 혹시 답을 찾지 못했더라도 실망하지 않기 바란다. 정작 실망을 해야 할 사람은 답을 찾지 못한 사람이 아니라 쉽게 포기하고 답부터 보려고 했던 사람이기 때문이다.
p.66

정렬 알고리즘을 공부할 때에도 무슨 알고리즘은 이렇고 저렇고 하며 암기를 할 것이 아니라, 각 알고리즘이 구현하고 있는 핵심적인 방법론을 '이해'하는 것이 중요하다. '이해'한 다음에는 '의심'을 해야 한다. 과연 이것이 최선일까? 혹시 여기를 이렇게 바꾸면 더 낫지 않을까? 이런 의심과 실험은 컴퓨터 프로그래머에게 가장 소중한 덕목이다.
p.93

요구 사항이 주어지면 덥석 키보드부터 움켜잡는 사람과 코드의 성능이나 확장 가능성에서부터 시작해서 여러 측면을 꼼꼼하게 따지면서 천천히 설계하는 사람은 시간이 갈수록 실력이 차이 날 수밖에 없다. 키보드부터 두드리는 사람이 하는 일은(실전 프로그래머들이 흔히 말하는 '노가다'와 같은 의미에서의) '코딩'이고, 침착하고 꼼꼼하게 접근하는 사람이 하는 일은 '프로그래밍'이다. '코딩'과 '프로그래밍'의 차이를 가르는 사람은 다른 사람이 아니라 바로 자기 자신인 것이다.
p.116~117

어떤 프로그래머는 내용이 복잡하게 얽힌 알고리즘을 작성하는 경우에 '논리의 흐름'에 따라서 문제를 해결하려고 하지 않고, 즉흥적으로 떠오르는 변수를 입력해 본 다음 프로그램이 정상적으로 동작하는 것처럼 '보이면' 알고리즘이 완성된다고 결론을 내린다. ... 이렇게 알고리즘을 정밀하게 읽어보면서 논리가 서로 맞물리는 과정을 끝까지 확인하지 않는 사람은 책임감 있는 프로그래머가 아니다.
p.127~128

"그래서 우리는 컴퓨터 프로그래밍을 하나의 예술로 생각한다. 그것은 그 안에 세상에 대한 지식이 축적되어 있기 때문이고, 기술(skill)과 독창성(ingenuity)을 요구하기 때문이고 그리고 아름다움의 대상(object of beauty)을 창조하기 때문이다. 어렴풋하게나마 자신을 예술가(artist)라고 의식하는 프로그래머는 스스로 하는 일을 진정으로 즐길 것이며, 또한 남보다 더 훌륭한 작품을 내놓을 것이다."
p.138

그(이집트 왕자 톨레미)가 유클리드에게 기하학을 조금 쉽게 배울 수 있는 방법은 없느냐고 물었을 때 엄격한 유클리드가 한 대답이 유명한 "기하학에는 왕도가 없다"였다. ...꾸준히 기초를 닦고 부지런히 연습하는 길보다 빠르고 확실한 길은 세상에 없다. 그것은 컴퓨터 프로그래밍에서도 예외가 아니다.
p.146~148

... 이렇게 뚜렷한 방법이 없을 때 필자는 간단한 UML(Undefined Modeling Language)을 이용해서 커다란 종이 위에 문제와 관련된 객체와 메서드와 매개 변수(parameter)를 모두 깨알같이 적어 나가는 방법을 애용한다. 프로그램의 실행 환경에 영향을 줄 수 있는 변수, 문제가 되는 부분과 관련된 스크립트, 구성 파일 등을 모두 적어 놓고 될 수 있으면 전체적인 흐름을 한 눈에 읽으려고 노력한다.
p.227

"It's not doable." (그건 할 수 없는 일입니다)
이 책을 읽는 독자 중에서 이런 말을 일 년에 3번 이상 한 사람이 있다면 그 '할 수 없었던 일' 중에서 적어도 반은 포기의 유혹 앞에서 의지를 꺾은 '굴복'이었을 것이다. 그런 사람이 있다면 기술 서적을 한 권 읽는 것보다 '프로페셔널' 프로그래머로서의 자기 모습을 성찰해보는 시간이 더 필요할 것이다.
p.229

profile
HelloBanny

0개의 댓글