"좋은 프로그래머가 되려면 제네릭 프로그래밍의 원리를 이해해야 한다. 제네릭 프로그래밍의 원리를 이해하려면 추상화를 이해해야 한다. 추상화를 이해하려면 그 바탕을 이루는 수학을 이해해야 한다." _알렉산더 스테파노프
알렉산더 스테파노프가 설명하는
프로그래밍과 수학 이야기
제네릭 프로그래밍의 개념을 적용해 STL을 만든 스테파노프가 강의하고, 다니엘 로즈가 정리한 프로그래밍과 수학 이야기. 제네릭 프로그래밍의 원리와 추상화에 대한 수학 개념을 살펴보면서 간결하고 정확한 코드를 작성하는 원리를 깨우친다.
수학 개념에서 제네릭 프로그래밍으로
논리적으로 생각하는 프로그래머를 위한 추상대수학과 정수론을 설명한다. 수학자들이 처음 해결해야 했던 문제를 설명하고, 수학의 해법을 어떻게 제네릭 프로그래밍으로 옮기는지 보여주면서 더 효과적이며 우아한 코드를 작성하는 과정을 보여준다. 이러한 수학 원리가 현대 응용 프로그램에서 중요한 역할을 하고 있음을 입증하기 위해 수학 원리와 제네릭 프로그래밍을 사용해 공개 키 암호 시스템을 구현하는 방법을 보여준다.
생각하는 프로그래밍을 배운다간결하고 정확하게 동작하는 코드를 작성하는 데 필요한 사고법을 익힌다. 협소한 문제를 해결하는 알고리즘을 일반화하면서도 효율성은 떨어뜨리지 않고 유용성은 확대하는 방법을 배우게 된다. 수학적인 의미를 프로그래밍으로 바꾸는 깊이 있는 통찰력도 얻게 된다. 이러한 통찰력은 프로그래밍 언어와 패러다임에 관계 없이 중요한 가치가 있다.
[이 책의 내용]
고대의 곱셈 알고리즘과 개선 방안
정수의 속성과 소수를 찾기 위한 알고리즘
최대공약수 찾기와 추상화
제네릭 프로그래밍의 핵심 개념인 추상대수학
공리체계, 이론, 모델로 알아보는 제네릭 프로그래밍의 구성요소
수학과 알고리즘을 암호화에 적용하는 방법