38인의 코딩 명장들이 말하는 느리지만 우아한 그러나 감동적인 코딩 이야기
이 책은 흔한 설계 패턴을 다루지 않는다. 또한 이건 옳고 저건 그르다고 가르치려 드는 식상한 소프트웨어 공학 책도 아니다. 대신 이 책은 독자 스스로 탁월한 소프트웨어 설계자의 어깨 너머로 그들의 눈을 통해서 세상을 바라볼 수 있는 기회를 제공한다. 전 세계에 있는 38인의 코딩 명장들은 소프트웨어 프로젝트의 아키텍처, 그 구축에서 결정해야 할 절충점들, 그리고 규칙을 깨는 것이 중요한 순간들에 대한 자신의 생각을 분명하게 전한다. 각 장마다 직면한 어려운 문제에 대한 느리지만 우아한 해법들을 설명하고, 그 해법들이 왜 매력적인지 이유를 밝히고 있다. 우리는 여러분이 매일 경험하는 다양한 프로젝트에서 이 책에서 말하는, 경계 너머를 내다보는, 다른 사람들이 간과한 요구들을 식별하고 까다로운 문제들에 대한 놀랄만한 해법을 발견하기를 기대한다. 해법이 이미 있다고 하더라도 더 나은 뭔가를 달성할 수 있는 새로운 전망과 확신을 찾아낼 수 있을 것이다.
"건축가들은 다른 건축가가 만든 건물을 조사하며, 작곡가들은 다른 작곡가의 악보를 연구한다. 그러나 프로그래머들은 어떠한가? 프로그래머들은 버그를 고쳐야 할 때나 다른 이의 작품을 볼 뿐이며, 그런 경우에도 코드를 최대한 조금만 읽고 버그를 해결하려고 노력한다. 사실 우리가 학생들에게 전해주는 것은 의미있는 변수 이름을 사용하라는 등의 조언 몇 가지나 기본적인 설계 패턴 몇 가지일 뿐이다. 고작 그 정도만 알려주고는 학생들이 추한 코드를 작성한다고 안타까워한다. 이 책은 이런 상황을 타개하고자 하는 우리의 시도이다. 2006년 5월에 나는 몇몇 잘 알려진 소프트웨어 설계자들에게(그리고 그리 유명하지는 않은 몇몇에게도) 자신이 알고 있는 가장 아름다운 코드를 분석하고 논의해 달라고 요청했다. 이 책에 나와 있듯이 그들은 아주 다양한 장소들에서 아름다움을 발견했다. 어떤 필자들은 정교하게 만들어진 소프트웨어의 작은 세부사항에서 미를 발견했으며, 또 어떤 필자들은 좀 더 큰 규모에서, 이를테면 소프트웨어가 오랜 시간 동안 진화할 수 있게 하는 프로그램 구조라던가 프로그램을 구축하는 데 쓰인 기술들에서 아름다움을 발견했다."
- _그레그 윌슨 (Greg Wilson)
1장. 정규 표현식 부합기 하나 2장. 서브버전의 델타 편집기: 온톨로지로서의 인터페이스 3장. 결코 내가 쓴 적이 없는 가장 아름다운 코드 4장. 뭔가를 찾는다는 것 5장. 정확하게, 아름답게, 빠르게(이 순서대로): XML 검증기 설계에서 배운 교훈들 6장. FIT: 취약함에서 비롯된 아름다움 7장. 아름다운 검사 8장. 이미지 처리를 위한 즉석 코드 생성 9장. 하향식 연산자 우선순위 10장. 더 빠른 개체수 집계 방법을 찾아서 11장. 보안 통신: 자유의 기술 12장. BioPerl로 아름다운 코드 키우기 13장. Gene Sorter의 설계 14장. 하드웨어와 함께 진화하는 우아한 코드: 가우스 소거법의 예 15장. 아름다운 설계의 장기 이득 16장. Linux 커널 드라이버 모형: 협업의 장점 17장. 또 다른 수준의 간접층 18장. 파이썬의 사전 구현: 모든 이를 위한 범용 자료구조 만들기 19장. NumPy의 다차원 반복자 20장. NASA의 화성 탐사 로버 임무를 위한 고신뢰성 전사적 시스템 21장. ERP5: 최대의 적응성을 위한 설계 22장. 구정물 한 숟갈 23장. MapReduce를 이용한 분산 프로그래밍 24장. 아름다운 병행성 25장. 구문적 추상: syntax-case 확장기 26장. 노동 절감 아키텍처: 네트워크 소프트웨어를 위한 객체지향적 프레임워크 27장. 협력사들을 REST 방식으로 통합하기 28장. 아름다운 디버깅 29장. 에세이 같은 코드 30장. 버튼 하나로 세상과 소통하기 31장. Emacspeak: 완비된 음향 데스크톱 32장. 살아 움직이는 코드 33장. "그 책"에 실릴 프로그램 짜기