본문 바로가기

exercise6

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.
SICP Exercise : 연습문제 1.19 본문에 나오는 이야기입니다만, T(a,b): (a 2007. 11. 17.
SICP Exercise : 연습문제 1.16, 1.17, 1.18 1.16번 연습문제 1.16은 b를 n번 곱하는 문제의 복잡도를 어떻게 n에서 log n 으로 (밑수는 2)로 낮출 수 있느냐 하는 문제입니다. b * b * b * b * ... 이렇게 하는 대신 b를 계속해서 제곱해 나가다가 (b --> b^2 --> b^4 --> ... ) 마지막에 n이 홀수냐 짝수냐에 따라서 그 결과에 b를 한 번 더 곱해주거나 아니면 그냥 놔두거나 하면 되겠죠. 굉장히 간단한 아이디어입니다만, 의외로 실무에서 프로그래밍을 하다 보면 이렇게 간단한 부분도 놓치게 되는 일이 많은 것 같습니다. 비슷한 종류의 사례로 strcat에 관한 것도 있는데, 이에 대해서는 "조엘 온 소프트웨어"라는 책에 보면 나옵니다. strcat이 보통 '널 문자'를 찾기 위해 포인터를 문자열 앞에서 뒤 .. 2007. 11. 15.