Thợ hồ tin học và các mẫu dáng thiết kế
Tâm… đa sự của một lập trình viên
Có người ví ngành tin học, hay nói “dông dài” hơn là công nghệ thông tin, giống như ngành xây dựng: muốn tạo ra hệ thống nào đó, cần có “kiến trúc sư” và… “thợ hồ”, tức những người thiết kế hệ thống và những người viết nên mã chương trình cụ thể. Theo tiêu chí này, dường như số đông sinh viên tin học tốt nghiệp sẽ làm… “thợ hồ” (thợ dĩ nhiên phải cần nhiều hơn thầy). Công việc “kiến trúc sư” có lẽ phải dành cho các bậc “sồn sồn” dày dạn kinh nghiệm trận mạc.
Quả quyết rằng người Việt có năng khiếu tin học bẩm sinh (không rõ tôi “tiêm nhiễm” điều này từ bao giờ), tôi hăm hở lao vào tin học. Thế rồi đúng như số mệnh mà ai cũng biết rõ mười mươi: tôi trở thành… “thợ hồ”! Quả thực, công việc thường chỉ là gắn lại với nhau những “viên gạch” có sẵn mà người ta gọi là các thành phần (component). Ngày ngày tôi lầm lũi xây những bức tường, có khi chẳng thấy ngôi nhà hay cao ốc nó ra sao.
Tuy nhiên, cái chân “thợ hồ” của tôi xem ra cũng không dễ dàng chút nào! Nếu như thợ hồ trong xây dựng có thể về nhà ngủ khò sau một ngày làm việc (tôi ghen với họ!), tôi luôn phải loay hoay tìm đọc sách này, sách kia, thức đêm thức hôm để tiêu hóa một cách khó nhọc những kiến thức mới mẻ cứ nảy sinh đều đều (giờ đây tôi thường tự nhủ: người mình chắc chắn thông minh… bằng người ta!).
Một trong những thứ khó nuốt (đối với tôi) kêu bằng design pattern. Khái niệm này trở nên thịnh hành từ khi xuất hiện quyển sách “đáng ghét”, từng làm xôn xao giới lập trình, mang tên Design Patterns: Elements of Reusable Object-Oriented Software của bốn tác giả Erich Gamma, Richard Helm, Ralph Johnson và John Vlissides. Bên Mỹ người ta gọi đùa họ là “bè lũ bốn tên” (Gang of Four). “Bè lũ” này làm cho đời sống của cánh “thợ hồ” như tôi thêm vất vả nhưng có lẽ cũng vì thế mà quyển sách nổi tiếng của họ được đưa vào… chương trình đại học.(*)
Decorator, Iterator, Mediator,…
Bạn có thấy dòng chữ nêu trên giống câu thần chú kiểu trong… Harry Potter không? Lần đầu tiên, tôi đụng phải một cái design pattern (thường gọi ngắn gọn là pattern) là khi người ta gửi cho tôi một bản vẽ (thế đấy, làm “thợ hồ” vẫn phải đọc bản vẽ) và yêu cầu tôi thực hiện một decorator ở chỗ “được khoanh tròn”. Vờ như đã hiểu, tôi “không thèm” hỏi lại xem decorator là cái giống gì. Từ đó, tôi bắt đầu để ý những đồng nghiệp thường xuyên nói chuyện với nhau bằng những từ lạ lùng hơn, nào là iterator, rồi mediator,… Dường như họ muốn chứng tỏ mình sành điệu thì phải.
Học thầy không tày học bạn, tôi đem chuyện bí hiểm ấy kể với một người bạn học cũ. Anh nói ngay: “Mấy thứ đó gọi chung là pattern! Cũng chẳng có gì, đại khái nó là những data structure (cấu trúc dữ liệu) thôi mà”. Có thật vậy chăng? Hình như anh cũng hiểu… đại khái như thế thôi vì anh không thể giải thích cho tôi rõ tại sao người ta “bịa” ra các tên mới để làm gì.
Thật may, cuối cùng một vị tiền bối trong ngành tin học nói cho tôi biết design pattern có thể dịch là mẫu dáng thiết kế. Nó không phải là… cấu trúc dữ liệu (nhầm lẫn tai hại!). Mỗi một mẫu dáng không phải là vật liệu để dùng ngay (khổ thật, tôi đã quen với “tư duy lắp ráp”) mà là một giải pháp kiến trúc hợp lý và hiệu quả, từng được kiểm nghiệm nhiều trong thực tế, do đó có tính phổ quát và tính ứng dụng cao. Tôi rất tâm đắc với thuật ngữ “mẫu dáng” mới toanh để dịch nghĩa cho pattern hơn là cách gọi “mẫu mực” hay “mẫu hình” (theo từ điển) vì từ “dáng” bao hàm sự uyển chuyển, tính linh hoạt, đòi hỏi người ta phải cảm nhận, hiểu biết sâu sắc để vận dụng, không thể sao chép rập khuôn. Mẫu dáng ở đâu ra?
Hóa ra thuật ngữ design pattern lại xuất phát từ ngành xây dựng, do kiến trúc sư!
Không có nhận xét nào:
Đăng nhận xét