프로그래밍 사고력 훈련의 첫걸음
프로그래밍 본질에 관한 15가지 에세이 『생각하는 프로그래밍』. ACM의 전통 있는 간행물 CACM에 연재된 《Programming Pearls》의 칼럼을 엮은 것으로, 몇 개의 간단한 알고리즘 및 데이터 구조를 통해 문제를 정확히 분석하고 효율적으로 해결할 수 있도록 생각하는 방법을 알려주는 책이다. 1부에서는 문제 정의, 알고리즘, 데이터 구조, 프로그램 검증, 테스팅과 같은 프로그래밍의 기본을 복습하고, 2부에서는 효율성에 관한 주제를 다루며, 3부에서는 이들 기술을 정렬, 탐색, 문자열과 같은 실질적인 문제에 적용한다.
프로그래밍 언어 문법을 외우고 개발 도구를 사용법을 익히면 소프트웨어를 만들 수 있다고 흔히 생각하지만, 실제 세계에서 부딪히는 개발 작업은 도구의 단순 사용을 반복하는 것이 아니라 깊은 사고력을 요하는 기예(技藝)에 가깝다. 시시각각 변하는 환경과 제한된 예산, 기간의 압박 속에서 각자 한계가 있는 현존 기술로 최적의 해법을 찾는 일을 도구나 언어가 100% 대신해 줄 수는 없다.
프로그래밍에서 이런 사고력 훈련의 첫걸음은 데이터 구조나 알고리즘 같은 기초를 적절히 학습하고 이를 코드로 구현하고 단계적으로 개선해 가는 것으로 시작할 수 있다. 이 책은 이런 수련을 하는 데 유용한 고전이다. ACM의 전통 있는 간행물인 CACM에 연재된 「Programming Pearls」란 칼럼을 묶어 발간된 이 책은 제목 그대로 조개 속에서 진주가 만들어지듯 긴 사고의 과정을 거쳐 깊은 프로그래밍의 세계에 들어갈 수 있도록 안내하고 있다.
눈앞에 닥친 비즈니스 로직의 정답을 문제집처럼 알려주지는 않지만 이 책을 계기로 충분한 수련을 거친 개발자라면 남의 답을 베끼는 것이 아니라 자신만의 해법을 고안해내는 즐거움을 누릴 수 있을 것이다.
이 책에서 다루는 내용
- 문제 정의, 알고리즘, 데이터 구조 등 프로그래밍의 기본
- 효율성 제고 기법
- 정렬, 탐색, 문자열 등 구체적 문제에 대한 해법