본문 바로가기

Books by Example11

생각하는 프로그래밍 제 9 장: 코드 튜닝 제 9장은, 코드 튜닝에 관한 부분입니다. 이 책에 실린 내용은 전반적으로 까다롭습니다만, (물론 제가 머리가 나빠서 그럴지도 모릅니다) 특히 9장에 실린 내용은 더 까다로운 편입니다. 하지만 그 까다로움을 넘어서면, 이거다 싶어서 무릎을 치게 되는 일이 생기죠. 9장을 보면 이진 탐색이라는 문제에 대한 초기 해법을 어떻게 가다듬어 보다 좋은 성능을 내는 알고리즘으로 변모시킬 수 있는 지가 나옵니다. 저정도면 나도 할 수 있겠다 싶은 대목도 있습니다만, 그렇지 않은 부분도 많습니다. 아래의 알고리즘을 한 번 보죠. 179페이지부터 180페이지에 걸쳐 나오는 알고리즘입니다. 이진 탐색을 할 대상 수 집합의 크기가 1000이라는 점을 이용하는 코드입니다. 같은 수가 여러 개 있는 상황을 허용하고, 그 중 첫.. 2008. 3. 26.
생각하는 프로그래밍 8장 : 알고리즘 디자인 기법 생각하는 프로그래밍(Programming Pearls)의 8장을 보면, 최대 부분합을 구하는 알고리즘을 고안하는 절차가 기술되어 있습니다. 이 책의 다른 부분도 멋집니다만, 저는 특히 이 8장이 굉장히 멋지다고 생각합니다. (아직도 이해가 잘 안되는 부분이 있긴 하지만 말입니다.) Network Algorithmics라는 책이 있습니다. 이 책은 인터넷을 아우르는 네트워크 장비들이 오늘날같이 발전되어 오기까지 수많은 연구자들이 알고리즘을 어떤 식으로 개선시켜왔는지를 보여주는 멋진 책입니다. 그런 면에서 보면, Programming Pearls와 지향하는 바가 같다고 볼 수도 있겠습니다. 이런 책을 읽다보면 느끼는 것입니다만, 알고리즘의 개선은 알고리즘이 실제로 적용될 데이터와, 알고리즘이 돌아갈 시스템에.. 2008. 1. 3.
Books by Example: 예제로 읽어보는 SW 분야 명저들 요즘들어 SW 분야의 명저들을 찾아 읽어보는 데 굉장히 많은 시간을 할애하고 있습니다. 최근에 보고 있는 책들 중 탁월하다고 생각하는 것으로는 "실용주의 프로그래머(The Pragmatic Programmers)", "생각하는 프로그래밍(Programming Pearls)", 그리고 "컴퓨터 프로그램의 구조와 해석(SICP)" 등이 있습니다. 보통 컴퓨터 분야의 책을 읽을 때, 많은 사람들이 연습문제는 건너뛰고 잘 풀어보질 않습니다. 하지만 저는 이 연습문제들에 본문에서 얻을 수 있는 지식 + 알파가 녹아있다고 믿습니다. SW 분야의 명저가 된 책들에는 이런 연습문제들이 풍부하고, 굳이 연습문제가 아니더라도 많은 예제들이 포함되어 있습니다. 이런 문제들을 풀어보고 프로그램을 만들 떄 마다, 이 블로그에 .. 2008. 1. 3.
SICP Exercise : 연습문제 1.22 연습문제 1.21은 너무 쉬우므로 생략합니다. 1.22는 이미 있는 소스 코드를 가지고 search-for-primes라는 프로시저를 작성하는 것입니다. 기존의 프로시저를 아무 수정없이 사용할 수는 없는데, 그것은 start-prime-test가 검사 대상 수 n이 prime이 아닐 때 false를 반환하도록 구현되어 있지 않기 때문입니다. 그래서 아래의 소스 코드 붉은 색으로 표기된 부분에 false를 반환하는 코드를 넣었습니다. (저것말고 더 쉬운 방법이 있을텐데 지금으로선 잘 모르겠네요. ㅋ) 아 그리고, PLT-scheme은 SICP 책에 나오는 runtime이라는 함수를 제공하지 않습니다. 대신 current-seconds나 current-milliseconds같은 함수들을 제공합니다. (lan.. 2007. 12. 16.