Bản Ghi Chú Bản Sửa Đổi: Phiên Bản Ghi Chú Của Effective C++ 3rd (Lời Mở Đầu) - nói dối e blog

Bản Ghi Chú Bản Sửa Đổi: Phiên Bản Ghi Chú Của Effective C++ 3rd (Lời Mở Đầu)

Dưới đây là bản viết lại bằng tiếng Việt phong phú và sinh động, giữ nguyên ý nghĩa nhưng sử dụng cách diễn đạt hoàn toàn mới:


Lưu bút: Lời tựa bản chú giải “Effective C++ 3rd”

Cuối cùng bản chú giải cho tác phẩm kinh điển “Effective C++ 3rd” cũng chuẩn bị ra mắt độc giả. Đây là dự án tôi đã đầu tư rất nhiều tâm huyết. Ban đầu biên tập viên đề nghị tôi viết lời tựa, tôi đã dành thời gian soạn thảo mới hoàn toàn, kết hợp cả những bài viết cũ từ blog cá nhân.

Bạn Hiếu Thiếu (một biên tập viên của nhà xuất bản Điện Tử) nhận xét: “Đọc toàn văn thấy có chút mâu thuẫn, lúc ủng hộ lúc phản đối, cảm xúc quanh co khiến người đọc dễ hoang mang”. Thật ngại ngùng khi để cảm xúc cá nhân xen lẫn vào lời tựa cho tác phẩm của bậc tiền bối. Tôi dự định sẽ chỉnh sửa lại bản thảo, còn bản gốc này xin lưu lại như một phần kỷ niệm.


Mùa thu 2010, trong một lần gặp gỡ tại văn phòng nhà xuất bản, biên tập viên Hiếu Thiếu trao tôi cuốn “Effective C++ 3rd” bản gốc tiếng Anh và đề nghị tôi thực hiện phần chú giải cho phiên bản tiếng Việt. Thú thật, trước đó tôi chưa từng có ý định đọc kỹ tác phẩm này. Niềm say mê với C++ mà tôi từng trải nghiệm đã cách đây hơn một thập kỷ, khi lần đầu tiên chuyển từ C sang C++ để phát triển dự án thực tế.

Thời điểm đó, tôi đã tiếp xúc với C++ được 6-7 năm nhưng chưa bao giờ dùng nó làm ngôn ngữ chính. Vào khoảng năm 2000, hàng loạt tác phẩm về C++ ồ ạt xuất bản tại Trung Quốc, tôi đọc xong cuốn đầu tiên lập tức lao vào nghiên cứu cả loạt sách. Kinh nghiệm lập trình trước đó giúp tôi tiếp thu dễ dàng, trong khi thiếu vắng kinh nghiệm làm việc với các hệ thống lớn bằng C++ lại khiến tôi không bị định kiến chi phối. Từ góc độ học thuật thuần túy, “Effective C++” là cuốn sách mang tính bước ngoặt. Khi đó tôi vừa hoàn thành một engine game mã nguồn mở với hàng chục nghìn dòng code C++, đọc những nguyên tắc trong sách khiến tôi có cảm giác “gật gù tâm đắc”. Nhớ lại lần đầu tiên, tôi đứng đọc gần xong cuốn sách trong hiệu sách rồi mới đi thanh toán.


Trong những năm sau đó, tôi viết hàng trăm nghìn dòng code C++. Càng viết nhiều, tôi càng thấy không hài lòng với các dự án cũ, phong cách code cũng thay đổi theo từng giai đoạn. Một câu hỏi lớn dần hình thành: Liệu có tồn tại một phương pháp sử dụng C++ hiệu quả và chuẩn mực chung, giúp các lập trình viên dù ở thời điểm nào cũng có thể nhìn vào code và gật đầu đồng tình, thay vì mãi chạy theo những lần refactoring vô tận vì chủ nghĩa hoàn hảo?

Dần dần công việc của tôi chuyển hướng trở lại C, đồng thời tích cực sử dụng các ngôn ngữ lập trình hỗn hợp (đặc biệt là Lua - ngôn ngữ kiểu động). Trên mạng, những lời chỉ trích C++ ngày càng gia tăng. Tôi cũng đã viết vài bài trên blog cá nhân () phản hồi xu hướng này. Tôi tin rằng với kinh nghiệm thực chiến qua hàng loạt dự án, tôi đủ tư cách để bày tỏ quan điểm cá nhân.

Theo tôi, bất kỳ lập trình viên nào yêu nghề đều khó thể không bị hấp dẫn bởi sức mạnh đa dạng của C++. Nhưng nếu cứ mãi say mê C++ đến mức xem nó như “chìa khóa vạn năng” thì đó chưa phải dấu hiệu của một kỹ sư xuất sắc. Dù bạn là một fan cuồng C++ hay chỉ muốn tìm hiểu điểm yếu của nó, “Effective C++” vẫn là cuốn sách đáng đọc. Khi đọc xong bản thứ ba, tôi cảm giác đây gần như là một tác phẩm hoàn toàn mới so với phiên bản thứ hai từng đọc trước đây.


Tôi đọc cuốn sách này rất chậm, không chỉ vì đây là bản tiếng Anh mà còn vì trách nhiệm với từng chữ in trên giấy. Tôi thậm chí còn ôn lại vài chương trong cuốn “Thiết kế và tiến hóa của C++”. Có lẽ do tôi từng có thời gian say mê C++ đến mức mù quáng, nay lại mang định kiến quá nặng. Nhiều nguyên tắc trong sách dù đúng đắn nhưng lại quá “C++-trung tâm”, cố gắng giải quyết những vấn đề vốn không nên tồn tại. Ví dụ như việc đặc biệt hóa không gian tên std - thứ mà trong các ngôn ngữ khác không bao giờ xuất hiện - lại trở thành kiến thức bắt buộc với lập trình viên C++. Cuộc đời quá ngắn ngủi để phải vật lộn với những rắc rối tự tạo ra!

Nhưng chính điều này lại phản ánh rõ chủ đề của cuốn sách: “Hiệu quả với C++”. Càng đọc, tôi càng hiểu được Scott Meyers. Tôi tin rằng ngay cả bậc thầy như ông cũng phải thốt lên những câu đầy chua chát như “Alas, the form of the prohibition may dismay you” khi bàn về việc mở rộng std::swap (trang 109). Câu chữ ấy khiến tôi mỉm cười vì đồng cảm.


Tôi bắt đầu đọc cuốn sách này trong chuyến bay muộn tới Quảng Châu dự hội nghị. Bốn tiếng chờ ở sân bay cùng hai tiếng trên máy bay, với chỉ duy nhất cuốn sách và cây bút chì, tôi đã ghi chú dày đặc hơn 60 trang. Sau đó tại New Zealand, tôi tiếp tục đọc và ghi chép vào mỗi đêm khuya, chậm rãi như cách người thợ mài ngọc.

Nếu không vì cái “án” này đã từ chối nhiều lần mà vẫn phải nhận lời, chắc tôi đã không kiên nhẫn đọc từng chữ một như vậy. Càng đọc kỹ, tôi càng thấy khó thêm chú giải. Với thái độ hiện tại của mình với C++, có lẽ tôi chỉ lướt qua tiêu đề rồi bỏ qua. Những kiến thức này đúng là nền tảng cho lập trình viên C++, nhưng cứ lặp đi lặp lại mãi thì cũng nhàm chán. Phần còn lại là các chi tiết cú pháp, chỉ cần thiết cho những ai làm nghề chuyên sâu.


Kết quả là phần chú giải của tôi đầy ắp những tranh luận. Khi gửi bản thảo cho Hiếu Thiếu, anh góp ý rằng thiếu phần “giải đáp thắc mắc và tăng tốc tiếp thu

0%