Đừng chỉ học ngôn ngữ, hãy hiểu cả văn hóa

Bạn có thể viết như FORTRAN bằng bất kỳ ngôn ngữ nào. Tuy nhiên, mỗi ngôn ngữ có văn hóa riêng của nó, và để thực sự hiểu ngôn ngữ đó, cần phải học chính xác nền văn hóa đó.

Trong những năm học trung học phổ thông, tôi đã chọn tiếng Pháp cho tiết học ngoại ngữ của mình. Thế nhưng khi ấy tôi nghĩ rằng “Tương lai sau này chỉ cần tiếng Anh là tôi có thể tự mình xoay sở được rồi” và thế là tôi đã ngủ trong tiết học tiếng Pháp của mình suốt 3 năm . Một vài năm sau đó tôi đã có một chuyến du lịch tới Tunisia. Tiếng Ả Rập là ngôn ngữ chính thống ở đây nhưng bên cạnh đó tiếng Pháp cũng được sử dụng rộng rãi bởi nơi đây từng là thuộc địa của Pháp.​

Tiếng Anh chỉ là ngôn ngữ ở những khu du lịch. Tôi không hiểu ngôn ngữ nên chẳng còn cách nào khác tôi ở bên cạnh hồ bơi suốt để đọc cuốn Finnegans Wake của James Joyce. Cuốn tiểu thuyết này là một tác phẩm tuyệt vời cả về văn phong và ngôn ngữ. Liên tiếp chơi chữ với việc vận dụng hơn 40 ngôn ngữ là một điều thực sự đáng kinh ngạc và việc đọc nó cũng tốn nhiều công sức. Và tôi cảm thấy rằng tác giả đã mở rộng phạm vi diễn đạt của mình rất nhiều bằng cách đan xen một lượng lớn các từ và cụm từ nước ngoài. Đâu đó tôi thấy rằng đây cũng là việc mà tôi đã làm với tư cách là lập trình viên.​

Trong cuốn sách The Pragmatic Programmer kinh điển của mình Andy Hunt và Dave Thomas đã khuyến khích rằng nên học một ngôn ngữ lập trình mới mỗi năm. Tôi đã làm theo lời khuyên đó và thực sự đã học được nhiều ngôn ngữ trong vài năm qua. Và tôi đã học được bài học quan trọng rằng “học một ngôn ngữ không chỉ là học ngữ pháp và cú pháp, mà còn là văn hóa đằng sau nó.”​

Bạn có thể viết như FORTRAN bằng bất kỳ ngôn ngữ nào. Tuy nhiên, mỗi ngôn ngữ có văn hóa riêng của nó, và để thực sự hiểu ngôn ngữ đó, cần phải học chính xác nền văn hóa đó.​

Khi bạn mới bắt đầu học C #, có thể bạn sẽ viết code chỉ toàn là các Main method dài và Helper method tĩnh, nhưng tôi nghĩ không cần phải xấu hổ. Thay vào đó, điều quan trọng là phải học và hiểu “tại sao lại tồn tại cái gọi là class”. Kể cả ban đầu bạn không hiểu các biểu thức lambda được sử dụng trong functional languages thì cũng đừng sợ. Nỗ lực hết mình sử dụng nó cho đến khi bạn hiểu nó.​

Nhờ học Ruby, tôi đã có thể sử dụng thành thạo delegate của C #. Ngoài ra, bằng cách hiểu đầy đủ tiềm năng của NETs generics, tôi đã có thể hiểu cách hoạt động của Java Generics và nhờ học LINQ, tôi có thể hiểu Scala một cách dễ dàng.​

Học nhiều hơn một ngôn ngữ sẽ giúp bạn hiểu sâu hơn về các design pattern. Khi các lập trình viên C học C # và Java, họ sẽ nhận thấy ở cả hai ngôn ngữ này Iterator pattern thường được sử dụng phổ biến. Nếu bạn học một ngôn ngữ động chẳng hạn như Ruby, bạn sẽ thấy rằng Visitor pattern vẫn được sử dụng trong một ngôn ngữ động, nhưng cách triển khai của nó trông khác với ví dụ được đưa ra trong cuốn Gang of Four.​

Đối với cuốn tiểu thuyết Finegans Wake có những người tranh luận rằng “Tôi không thể đọc cuốn này”, trong khi những người khác lại khen ngợi vẻ đẹp ở văn phong của nó. Đối với cuốn sách này, bản dịch có thể dễ đọc hơn. Nếu hơn 40 ngôn ngữ trong nguyên tác được sắp xếp thành một ngôn ngữ, thì có thể dễ đọc hơn một chút. Nhưng, thật trớ trêu cho tôi, bản dịch đầu tiên lại là bản tiếng Pháp.​

Điều này cũng đúng với code của chúng ta. Nếu bạn viết code như kiểu của cuốn Finegans Wake, một phần bằng Python, một phần bằng Java và một phần bằng Erlang, dự án của bạn sẽ bị lộn xộn như mớ bòng bong đấy. Thay vào đó, điều quan trọng là phải lấy ý tưởng mới từ các ngôn ngữ mới và tìm ra các giải pháp khác nhau cho cùng một vấn đề. Khi bạn học một ngôn ngữ mới, nhiều khi bạn có thể viết những đoạn code đẹp hơn bằng chính ngôn ngữ truyền thống mà bạn vẫn sử dụng.​


Trích dịch từ cuốn “* プログラマが知るべき97のことプログラマが知るべき97のこと*”

0 Shares:
1 comment
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like
Read More

MOVE ON

Trong cuộc sống thường ngày đang có rất nhiều người bị mắc kẹt trong những nỗi đau từ…