Programming Pearls
Programing Pearls - Jon Bentley
Xuất sắc.
Chưa có một cuốn sách nào về lập trình khi tôi mua về, khui thùng của Amazon ra và lượn 1, 2 trang để thốt lên 1 từ “xuất sắc” cả. Điểm qua một số sách về “Algorithms” mà tôi từng đọc và tìm hiểu:
- CLRS: về mặt lý thuyết, đây thực sự là “introduction” nhưng đầy đủ và chi tiết. Tôi không quá ấn tượng bởi cách viết và mã giả.
- Algorithms, Sedgewick: một trong những cuốn tôi rất thích, code sử dụng Java và hoàn toàn chạy được, cách chứng minh về correctness và complexity dễ tiếp cận, đồng thời minh họa trong sách phải nói là ấn tượng. ĐIều làm tôi không hài lòng là giấy quá mỏng, cách viết hơi đơn điệu và tuy có sử dụng OOP nhưng không đề cập nhiều.
- TAoCP: hoàn toàn hàn lâm.
- Elements of Interview Programming: một cuốn thuần túy để luyện đi interviews.
Programming Pearls hoàn toàn ngược lại, đây là cái nhìn của 1 engineer về sử dụng thuật toán trong công việc và giải quyết các vấn đề. Hay đúng hơn là cuộc hành trình của Jon Bentley. Dĩ nhiên Jon Bentley quá nổi tiếng là tác giả kd-tree, nhưng trước đây ông còn là “thánh review code” khi có khá nhiều người gửi code để ông đánh giá [có cả Knuth khi ông đi quảng cáo Literate Programming].
Sách tuy mỏng nhưng chứa đựng đầy “ngọc”, cách viết thú vị và hài hước, xen lẫn đó là cách tiếp cận đầy khoa học, tham khảo đầy đủ và toàn diện cùng những câu đố khá hay đáng làm tài liệu luyện programming cũng như cách nhìn nhận của 1 người làm industry vào các giải thuật và cách sử dụng hiệu quả, đặc biệt là cách mà tác giả tiếp cận vấn đề, sử dụng nhuần nhuyễn các kỹ thuật để giải quyết.
Về mặt “học thuật”, tôi nghĩ khả năng của Bentley là không bàn, nhưng đứng về mặt “engineer” thì cuốn sách này thế nào? Xin trích dẫn từ lời của Steve McConnell [tác giả Code Complete]:
… Programming Pearls was one of the most influential books I read early in my career, and many of the insights I first encountered in that book stayed with me long after I read it. …
p.s: Ít có cuốn sách lập trình nào mà tác giả tự tin nói “tao đọc hết 3 volume của TAoCP và biết khi gặp vấn đề nào thì nên tra phần nào”, và cũng ít có cuốn nào vừa tham khảo CLRS, Algorithms in C, TAoCP, Ullman’s books vừa tham khảo Code Complete, The Mythical Man-Month…