SỐ 05

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.

[Đầu trang]
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ư lão làng Christopher Alexander nghĩ ra từ những năm bảy mươi. Từ ngày ấy, ông đã nhận ra rằng có những bài toán và lời giải được lặp đi lặp lại cả "tỷ” lần trong nhiều công trình, nhiều môi trường rất khác nhau, trong thiết kế nội thất, cao ốc hay cả đô thị. Những bài toán và lời giải ấy chỉ có dáng dấp giống nhau thôi chứ không bao giờ là một. Mỗi lời giải hợp lý, hiệu quả giúp cho công trình xây dựng ít bị tổn thương, dễ thích nghi với những biến động trong tương lai lâu dài. Những trường hợp thành công như vậy luôn có sự hiện diện của những nét chung nhất định. Và Christopher Alexander gọi những nét chung ấy là pattern.

Cũng không có gì quá to tát, bạn hãy hình dung: thợ hồ phải biết lợp mái nhà sao cho không dột, xây hố ga sao cho khỏi... bốc mùi (bạn để ý mà xem, không dễ đâu nhé!). Điều này không hoàn toàn tùy thuộc vật liệu được dùng thuộc loại tốt hay xấu. Nếu người thợ biết áp dụng các mẫu dáng thiết kế khôn ngoan, những gì họ làm ra sẽ đạt yêu cầu sử dụng, có độ bền cao, lại dễ sửa sang khi cần.

Trở lại với lịch sử, vào năm 1987, Ward Cunningham and Kent Beck nhận thấy ý tưởng mẫu dáng thiết kế của kiến trúc sư Alexander rất phù hợp với ngành tin học và quyết định dùng khái niệm ấy khi giảng dạy ngôn ngữ Smalltalk. Sự chú ý đến vấn đề này ngày càng tăng. Sau khi xuất hiện quyển sách được biên soạn công phu của "bè lũ bốn tên" lần đầu tiên năm 1994, mẫu dáng thiết kế thực sự trở thành một khái niệm tin học quan trọng.

Thế là sau một thời gian dài chỉ tập trung vào vật liệu (các đối tượng, các thành phần), nay giới lập trình lại phải chú ý đến kiến trúc nữa. Nếu bạn cũng là "thợ hồ" như tôi, xin đừng nghĩ "kiến trúc" hay "thiết kế" cứ nhất thiết phải là những gì "ở trển dội xuống". Đó là những quy cách, những kinh nghiệm ảnh hưởng trực tiếp đến chính lề lối viết mã cụ thể hằng ngày của chúng mình.

Quyển sách của "bè lũ bốn tên" được nhắc đến ở trên đã tổng kết những bí kíp qúy báu trong... "giang hồ", liệt kê thành 23 mẫu dáng thiết kế khác nhau. Sau phát pháo mở đầu ấy, số lượng mẫu dáng thiết kế được đề nghị "lưu danh muôn thuở" ngày càng tăng. Nếu bạn là "thợ hồ" (hay... "phụ hồ") và chí thú với nghề, bạn rất cần (phải, rất cần!) thu nạp các mẫu dáng thiết kế đã được công nhận vào "túi khôn" của mình.

[Đầu trang]
Trang chủ
Thư ngỏ
Nội lực "Peter Pan"
Cầu nối Intel Việt Nam
Chuyện trong tuần
Nhóm Frontpage
Cõi người ta
Kim cương doanh nghiệp
Bình luận thị trường
Cõi Mô-bai
Chuyên đề
Bổ ngửa
Nuôi hồn Robot
Túi càn khôn IT
Hồ lô biến
Cảm về Game
Nhật ký e-CHÍP
 
 
Bản quyền VASC Orient, Công ty phát triển phần mềm VASC
99 Triệu Việt Vương HN; Tel: (04) 9782235 • email: echip@vasc.com.vn