Dòng chảy phát triển của ngôn ngữ lập trình, những vấn đề mới mà không mới

Đối với một số lập trình viên bảo thủ, việc khám phá và xây dựng nên các ngôn ngữ lập trình mới thật vô nghĩa và tốn thời gian, trong khi những lựa chọn ở thời điểm hiện tại, theo họ, là đã quá ổn rồi. Chà, thẳng thắn mà nói thì suy nghĩ này cũng không phải là không có ý đúng. Hầu hết các ngôn ngữ lập trình sẵn có ngày nay đều đã hoàn thành xuất sắc sứ mệnh của mình, chúng đã giúp nhân loạn tạo nên những phần mềm kỳ diệu với độ phức tạp cực cao, vậy thì tại sao phải tốn thời gian để nghiên cứu, phát triển, và học một ngôn ngữ lập trình mới?

Ngôn ngữ lập trình

Tuy nhiên đối với những người yêu thích sự khám phá, tìm tòi và đổi mới, lập luận trên đương nhiên nghe chẳng thể lọt tai chút nào. Luôn có điều gì đó thú vị và hấp dẫn trong việc tìm kiếm hay phát triển một loại ngôn ngữ mới có thể cho phép chúng ta thể hiện bản thân mình qua từng sản phẩm một cách rõ ràng hơn, đó là điều không cần phải bàn cãi.

Có thể khẳng định ngôn ngữ lập trình là một nhân tố không thể thiếu trong mọi bối cảnh phát triển của thế giới công nghệ. Như vậy, những sự thay đổi và tiến hóa của các ngôn ngữ lập trình cũng có thể được coi là tấm gương phản chiếu cho các biến động của lĩnh vực công nghệ thông tin.

Khi trang tin công nghệ nổi tiếng ThoughtWorks cho ra mặt mục Technology Radar - nơi chứa đựng những quan điểm, cũng như đánh giá chuyên sâu về mọi khía cạnh của thế giới công nghệ - ở số báo đầu tiên (hiện tại đang là số báo thứ 20, tức là đã rất nhiều năm về trước, các nhà phát triển, lập trình viên lúc bấy giờ về cơ bản chỉ nắm trong tay những lựa chọn eo hẹp xuang quanh Java, C# hoặc C++ - những ngôn ngữ lập trình huyền thoại, bao trùm lên phần lớn các ứng dụng doanh nghiệp trên toàn thế giới. Tuy nhiên, các nhà nghiên cứu cũng đã nhanh chóng nhận ra rằng có sự xuất hiện của một hệ sinh thái bao quanh mỗi ngôn ngữ, và đồng thời hệ sinh thái này có tầm quan trọng không kém gì chính ngôn ngữ lập trình đó. Chúng ta đã từng chứng kiến điều này xuất hiện đầu tiên với C++, tiếp theo là Java và C# và ngày hôm nay là cái tên đầy tiềm năng: Kotlin.

Kotlin

Đã đến lúc nói lời chia tay với Java?

Quay về quá khứ một chút, ở những số báo đầu tiên của Technology Radar (vào khoảng năm 2010) các nhà phân tích đã manh nha nhắc đến sự suy tàn của “đế chế” Java. Cụ thể, đã có những sự trì trệ đáng báo động trong vấn đề đổi mới của ngôn ngữ lập trình lâu đời này, khiến nó đôi khi không thể theo kịp yêu cầu trong nhiều tình huống phức tạp, đặc biệt là về khía cạnh bảo mật ứng dụng, và các nhà phát triển đã bắt đầu quan tâm đến điều này.

Đã đến lúc nói lời chia tay với Java?

Bây giờ, sau gần 9 năm, chúng ta có thể nhận định rằng các nhà phân tích có vẻ như đã quá nghiêm trọng hóa vấn đề. Java đã không “chết”, ngôn ngữ này vẫn tồn tại cho dù “sức khỏe” đã không còn được sung mãn như trước. Thế nhưng tại thời điểm đó, mối quan tâm của các chuyên gia là rất thực tế. Đó là khi Oracle vừa mua lại Sun microsystems và manh nha phát triển một loại ngôn ngữ mới, kế thừa được những ưu điểm của Java trong khi cũng mạnh mẽ và ưu việt hơn rất nhiều - điều mà chúng ta không được chứng kiến trong kỷ nguyên Java.

Có một điều mà các chuyên gia chắc chắn đã đúng nhưng phải mất khá nhiều thời gian để cộng đồng bắt kịp đó là coi JavaScript như một ngôn ngữ “hạng nhất”.

Các ngôn ngữ “hạng nhất” nói chung phải sở hữu những công cụ có thể được triển khai sâu rộng trong môi trường sản xuất, chẳng hạn như kiểm tra phương pháp tiếp cận hay tái cấu trúc… Trên thực tế JavaScript đã được sử dụng cho nhiều dự án lớn cấp doanh nghiệp một cách thực sự nghiêm túc. Đã phải mất một chút thời gian, nhưng bạn có thể thấy ngày nay, đa số mọi người đều coi JavaScript là một ngôn ngữ quan trọng.

JavaScript là một ngôn ngữ quan trọng

Bên cạnh đó, cũng có thể thấy một sự quan tâm nhiều hơn của cộng đồng đối với ngôn ngữ lập trình nói chung. Chúng ta đã bắt đầu cảm nhận được những đổi mới ngôn ngữ đang được xây dựng dựa trên JVM. Vào thời điểm đó, với tư cách là một nhà phát triển, bạn có thể đã phải đối mặt với sự lựa chọn khó khăn về ngôn ngữ phù hợp để xây dựng nên một sản phẩm, không chỉ đơn giản là “tôi làm việc trong một môi trường Java nên tôi sẽ chỉ viết ứng dụng bằng Java”, mà còn là về việc lúc nào thì thích hợp để sử dụng một ngôn ngữ khác, như Clojure hay JavaScript?

Scala hay Clojure?

Trong suốt 20 số phát hành của Technology Radar, các nhà phân tích đã thấy sự gia tăng của làn sóng “chức năng”. Tất nhiên, những ngôn ngữ như Lisp và Haskell đã tồn tại trong nhiều thập kỷ theo nghĩa đen - nhưng điều thực sự xảy ra là các doanh nghiệp đã bắt đầu trở nên quan tâm nhiều hơn đến các ngôn ngữ chức năng.

Chúng ta có thể dễ dàng đắt gặp tình huống trong một công ty lập trình, có người sử dụng Clojure, trong khi những người khác lại “kiếm cơm” bằng Scala. Tuy nhiên, thật khó để nói rằng giữa 2 ngôn ngữ này, ai là kẻ thực sự chiến thắng. Cả hai đều mang sức mạnh của các ngôn ngữ chức năng vào doanh nghiệp - chỉ là cách thức tiếp cận khác nhau mà thôi.

Scala tạo ra những đoạn code đơn giản hơn Java

Clojure có vẻ như là ngôn ngữ thuần túy hơn trong một mô hình chức năng (functional paradigm), trong khi Scala đã cố gắng tự đơn giản hóa mình bằng cách sử dụng một cú pháp quen thuộc với các lập trình viên Java. Tuy nhiên, Scala lại tỏ ra vượt trội hơn khi nói đến hệ sinh thái xung quanh nó, như Play framework chẳng hạn.

Thế nhưng, những thay đổi gần đây của Scala trên một số khía cạnh đã khiến nó trở nên rắc rối hơn một chút. Các ý tưởng thiết kế mới đã làm cho ngôn ngữ này trông giống Java hơn.

Điều này đặt ra câu hỏi về việc điều gì sẽ khiến các ngôn ngữ lập trình trở thành một lựa chọn tốt? Thật khó mà tìm ra một câu trả lời hoàn toàn chính xác. Khi chọn bất cứ ngôn ngữ nào để làm việc dù là cá nhân hay theo nhóm, bạn đều cần phải xác định được cách thức mà mình sẽ sử dụng ngôn ngữ ra sao, cũng như việc bạn sẽ tiếp cận những vấn đề tương tự như thế nào. Ví dụ như trong một nhóm lập trình, bạn chắc chắn không muốn một thành viên giải quyết vấn đề theo cách này, trong khi người kia lại có cách tiếp cận và triển khai hoàn toàn khác.

Hãy thận trọng với những sự lựa chọn

Một minh chứng rõ nét cho sự quan trọng khi lựa chọn ngôn ngữ lập trình là trường hợp với Golang. Ngôn ngữ này đã gây ra khá nhiều mâu thuẫn vào năm 2014, phấn khích có, xung đột cũng không thiếu.

Golang

Một số lập trình viên có tiếng vào thời điểm đó đã không tiếc lời chê bai và cho rằng Golang là một ngôn ngữ tệ hại. Họ nghĩ rằng những người tạo ra ngôn ngữ này đã lặp đi lặp lại những sai lầm vốn đã tồn tại trong hàng thập kỷ qua. Trong khi đó, nhiều người khác lại nói rằng Golang là một phát minh tuyệt vời. Họ yêu thích những thứ mà ngôn ngữ này mang lại cho mình, khiến công việc trở nên đơn giản đến khó tin.

Tình huống này cho thấy một điều đơn giản là mỗi lập trình viên có thể có những trải nghiệm hoàn toàn khác nhau khi sử dụng cùng một ngôn ngữ, đơn giản là bởi tất cả chúng ta đều nghĩ về các vấn đề theo những cách khác nhau. Do vậy để biết được ngôn ngữ nào phù hợp với bản thân và công việc, đừng ngại trải nghiệm.

Một ngôn ngữ lập trình chung cho tất cả mọi người?

Như đã đề cập ngay từ đầu, một số người không nhận thấy bất cứ giá trị đáng kể nào trong việc phát triển các ngôn ngữ mới. Điều này liên kết chặt chẽ với ý tưởng rằng bạn nên lựa chọn ngôn ngữ duy nhất để làm công cụ “kiếm cơm” trong suốt sự nghiệp lập trình của mình.

Tuy nhiên các chuyên gia tại ThinkWorks lại nghĩ rằng đây là một quyết định sai lầm. Đôi khi có những điều bạn có thể diễn đạt rõ ràng hơn bằng một ngôn ngữ, trong khi sẽ phải vật lộn để làm điều tương tự bằng ngôn ngữ khác. Và một trong những điều quan trọng nhất mà bạn có thể làm với tư cách của một nhà phát triển là viết những đoạn mã càng dễ hiểu càng tốt.

Thế nhưng để các lập trình viên tự do lựa chọn và sử dụng ngôn ngữ lập trình trên các sản phẩm đôi khi cũng ẩn chứa những rủi ro nhất định. Nói cho cùng thì chúng ta nên thận trọng trong việc mở rộng các lựa chọn đối với ngôn ngữ lập trình mà mình hoặc tổ chức của mình sẽ dùng. Nhằm giải quyết những không gian vấn đề khác nhau.

Một ngôn ngữ lập trình chung cho tất cả mọi người?

Điều này khó mà có thể được diễn giải tường tận, thế nhưng việc quảng bá một số ngôn ngữ hỗ trợ các hệ sinh thái hoặc tính năng ngôn ngữ khác nhau rất quan trọng đối với doanh nghiệp, vì nó cho phép họ tăng tốc các quy trình và phát triển nhanh hơn. Trong khi đó, các nhà phát triển cũng được hưởng lợi thông qua việc sở hữu các công cụ phù hợp để giải quyết vấn đề trong tầm tay.

Thứ Năm, 02/05/2019 16:30
52 👨 243