Xu hướng tương lai của các ngôn ngữ lập trình

Dạo gần đây mình nhận được khá nhiều câu hỏi kiểu : “em nên học ngôn ngữ lập trình nào”. Đây là bảng ” Đánh giá xếp hạng mới nhất 2017″.

PHP, Perl thường bị cho là lỗi thời , vậy Ruby thì tốt hơn chăng? Java bị cho là có nhiều hạn chế, vậy nó còn tiếp tục được sử dụng chăng?

Hay là ta nên học ngay các ngôn ngữ lập trình cấu trúc (functional languages) nhỉ?

Đối với lập trình web, các ngôn ngữ dù có bị coi hết thời thì thực tế hiện giờ vẫn cứ được sử dụng, trong số đó phải kể đến JAVA, PHP, Perl.

Dù thế nào đi nữa thì PHP, Java vẫn nằm trong top 2 trong số các ngôn ngữ khát nguồn nhân lực nhất đương thời.

Trong hoàn cảnh đó, chúng ta hãy cùng xem xét xem những ngôn ngữ lập trình chủ đạo có triển vọng trong tương lai.

Sự Trở lại của ngôn ngữ static typing ?

Tôi đã từng có cảm nhận về xu hướng từ năm 2000 đến khoảng năm 2010 là “bởi vì những ngôn nhữ static typing như Java với code rườm rà và compiler quá đỗi phiền phức, việc phát triển ứng dụng bằng ngôn ngữ script kiểu dynamic typing như PHP hay Ruby thì có vẻ tốt hơn”

Nhưng vài năm gần đây thì có kiểu “JavaScript ngon hơn (Morata ngon hơn) ^^” và việc dùng AltJS(Altnative Javascript) để chuyển đổi (transpile) từ TypeScript hoặc ECMAScript sang JavaScript trở nên phổ biến, ngoài ra còn xuất hiện thêm cả những ngôn ngữ static typing như Go hay Scala vs phong cách code ngắn gọn rõ ràng.
Xu hướng thì đang nghiêng về ngôn ngữ động (dynamic typing) nhưng có cảm giác
là các ngôn ngữ tĩnh (static typing) đang dần quay trở lại.
Dựa vào những gì đã phân tích ở trên ta hãy thử nghĩ về tương lai của các ngôn ngữ chủ đạo dưới đây.

Dự báo triển vọng trong tương lai của JAVA

Tôi nghĩ rằng có lẽ trong 10 năm nữa thì việc phát triển hệ thống nghiệp vụ vẫn chủ yếu sử dụng Java
Cũng có thể việc phát triển Webservices, Game, hay là nghiệp vụ backend sẽ dần dần chuyển sang sử dụng các ngôn ngữ khác.
Một ưu điểm của Java, đó là tốc độ sử lý so với các ngôn ngữ khác. Mặc dù chậm hơn so với ngôn ngữ lập trình C, nhưng rõ ràng là Java có tốc độ sử lý vẫn được xem là nhanh hơn so với các ngôn ngữ LL (Perl, PHP, Ruby, Python).
Vì lý do đó, Java vẫn được sử dụng trong các hệ thống lớn mà đòi hỏi hiệu năng xử lý cao như Webservices, lập trình Game và xử lý nghiệp vụ backend, nhưng các ngôn ngữ LL đang ngày càng được cải tiến, cùng với sự ra đời của các ngôn ngữ có hiệu năng xử lý cao như GO và Scala, tôi nghĩ rằng việc sử dụng Java sẽ giảm đi trong tương lai.
Mặc dù vậy, đối với phát triển hệ thống nghiệp vụ vì có tính chất bảo trì liên tục nên khó có thể áp dụng những cái mới ngay, vậy nên sẽ không có gì khó hiểu khi một ngôn ngữ với lượng code đồ sộ đã được phát triển cho tới bây giờ như Java sẽ vẫn được tiếp tục sử dụng.
Một trong những ứng dụng mà sử dụng Java nhiều nhất là các ứng dụng Android, tuy nhiên tùy thuộc vào cuộc chiến tranh chấp bản quyển, giấy phép của JAVA giữa Google và Oracle sẽ dẫn đến kết cục ra sao có thể sẽ quyết định đến việc các ứng dụng Android có sử dụng Java nữa không. Nếu thực sự điều đó xảy ra thì tôi rất mong ngóng xem ngôn ngữ mới mẻ nào được sử dụng đây. GO, JAVAScripts hay là ngôn ngữ mới được Apple phát tiển Swift chăng.

Dự báo về triển vọng của PHP

Trong tương lai tôi nghĩ là PHP sẽ tiếp tục được sử dụng trong các nghiệp vụ backend để phát triển các Webservices, các ứng dụng smartphone hoặc làm game, tuy nhiên rất có thể dần dần PHP sẽ bị Ruby chiếm thị phần.

Vì tôi có cảm giác Ruby tinh tế hơn PHP.

Mặc dù vậy, trong trường hợp hợp cần xây dựng một webservices nhanh chóng và vẫn hành trong các server khác nhau thì tôi vẫn nghiêng về PHP. Hơn thế nữa, trên thế giới các hệ thống quản trị nội dung (CMS) được sử dụng nhiều nhất chính là WordPress lại  được phát triển trên nền tảng PHP nên Rõ ràng trong thời gian tới nhu cầu sử dụng (PHP) vẫn rất lớn.

Triển vọng của Ruby

Tôi cho rằng PHP và Java đang dần bị chiếm lĩnh thị phần.
Vì vậy nên cấp độ xử lý trên nền tảng Windows cần phải bắt kịp với Unix và OS. Ví dụ như phải giải quyết được vấn đề module lên kết ngoài của Ruby không hoạt động đúng trên Windows.
Rất nhiều lập trình viên Java viết code trên Windows PC và test trên đó. Với những người này lần đầu tiên sử dụng Ruby thì chắc sẽ viết trên Windows PC. Lúc đó sẽ phát sinh rất nhiều lỗi, nếu mà biết là Ruby muốn chạy đúng phải dùng MAC PC hoặc máy bàn Linux, hoặc dùng trên windows PC thì phải dùng môi trường giả lập Linux trên windows thì có lẽ lại nói “thôi khỏi dùng luôn cho rồi” chưa biết chừng.
Thế nhưng trên win 10 thì Bash on Ubuntu on Window đã được đưa vào, cho dù trên windows nhưng vẫn dùng môi trường Linux rất nhẹ nhàng nên đừng lo.(người dịch – Nghia Pham: Bash (Bourne Again Shell) là môi trường shell và ngôn ngữ lập trình cho nền tảng Unix và Linux. “Bash On Ubuntu On Windows 10” là một tính năng tùy chọn có sẵn cho người sử dụng Windows 10’s Anniversary. So với máy ảo, “Bash On Ubuntu” đòi hỏi ít tài nguyên hệ thống hơn, và cho phép bạn truy cập cả hai công cụ Windows và Linux cùng một lúc. )
Vì gần đây có xu hướng là thiên về ngôn ngữ tĩnh (Static type) thì tốt hơn nên viễn cảnh Ruby bị Go, Scala hay là Kotlin cướp thị phần cũng có thể xảy ra lắm.

Triển vọng của C#

Trong tương lai, cùng với viết tiếp tục xử dụng các sản phẩm của Microsoft, việc sử dụng môi trường Môn như Unity sẽ được mở rộng.
Mono là mã nguồn mở của .NET. Việc Ứng dụng Mono vào lĩnh vực phát triển Game, Unit sẽ tiếp tục được De facto Standard phát triển trên nền smartphone.
Tôi nghĩ rằng dù là đã bắt đầu sử dụng C# cùng với Unity, nhưng C# so với JAVA thì đơn giản hơn và viết code cũng không quá tốn công sức như Java, nên chắc chắn C# vẫn là một ngôn ngữ lập trình rất được ưa thích.

Tương lai nào cho JavaScript

Vì code có thể được viết thông rồi chuyển ngữ thông qua các AltJS(bộ chuyển ngữ) như TypeScript, Dart, CoffeeScript nên dần dần việc code trực tiếp bằng JavaScript sẽ ít đi, Tuy nhiên trong cuộc cạnh tranh AltJS thì dường như chỉ TypeScript là tồn tại được.

Mặc khác, cũng đang có xu hướng Transpile(chuyển ngữ) từ ECMAScript sang Javascript.

Tuy nói như vậy, cũng bắt gặp những cuộc nói chuyện với những doanh nghiệp đi đầu về mặt công nghệ, thì trong các doanh nghiệp này code trực tiếp javascript cũng không phải là ít.

Javascript không phải là ngôn ngữ có tính hiệu suất thấp đến vậy. Javascript có thể phân chia và code 1 cách ngắn gọn, đang hướng tới việc có thể tạo ra app đơn giản một cách nhanh chóng.

Bên cạnh đó, có chút rắc rối ở đây chính là việc sử dụng bộ chuyển ngữ (transpile) khá tốn thời gian. Nhưng dù sao thì, javascript là ngôn ngữ duy nhất hoạt động ở browser nên tôi nghĩ là đây là ngôn ngữ có nhu cầu ổn định nhất.

Mặc khác, những ngôn ngữ mà được sử dụng phía server như là Node.js thì không mang tính bùng nổ, nhưng mà vẫn được sử dụng.

Lúc trước tôi dùng node.js viết game Sugoroku chạy trên web thời gian thực cho vui, nhưng thành thật mà nói thì rắc rối quá.

Tại những đoạn phát sinh IO, vì phải xử lý kết quả của tất cả các hàm callback, mấy hàm callback cứ lồng vào nhau chẳng khác nào địa ngục. Sau 1 hồi vật vã với node.js, trở về lại với PHP thiệt sướng không kể xiết (nhứt là mấy vụ lập trình đồng bô IO).

Sau khi sử dụng node.js một thời gian, quay lại với php thì bạn sẽ có cảm giác là : “Những ngôn ngữ đồng bộ IO thì thật là sướng=))”

Bây giờ thì người ta đã đưa vào sử dụng “yield” và cái callback hell có vẻ như đã mất đi, nhưng rõ ràng là cách viết xử lý đồng bộ IO một cách thông thường thì dễ làm hơn nên là node.js chẳng phải là nó đã trở thành ngôn ngữ chính ở server.

Vì những lý do đó, xét về tính tương lai của những ngôn ngữ lập trình, rút ra được từ xu hướng kỹ thuật, hỏi han đồng nghiệp, và từ kinh nghiệm của bản thân thì đã thử dự đoán. Thật hạnh phúc khi mọi người bỏ thời gian đọc bài viết này.

error: Content is protected !!