Ký sự BrSE

Những nẻo đường kỹ sư cầu nối

[IT読解] Bài 7 : 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”.
Và câu trả lời là đây : Đánh giá xếp hạng mới nhất 2017.
 Và “xu hướng tương lai của các ngôn ngữ lập trình” nằm trong bài tiếng Nhật bên dưới.

「PHP、Perlはオワコンってよく言われてるからRubyがいいのかなぁ?」
「Javaはださいって言われてるけど、未だに使われてるよな?」
「関数型言語ってそろそろ学んだ方がいいのかなぁ?」

ネットでは「○○(言語名)はオワコン」みたいなことがよく言われていますが、そこで挙げられた言語は今もなお使われ続けています。よく言われてるのはJava、PHP、Perlですよね。

どれも未だ現役で、PHP、Javaに至っては求人数トップ2の言語です。

そんな状況を踏まえて、主要プログラミング言語の将来性を考えてみたいと思います。

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?

2000年から2010年くらいまでのトレンドは「Javaみたいな静的型言語ってコンパイルめんどいし、コードも冗長だからPHPやRubyみたいな動的なスクリプト言語の方がサクサク開発出来て良いよね」って感じだったかと思います。

ところがここ数年は「やっぱ、JavaScriptにも型があった方がいいよね」とTypeScriptやECMAScriptからJavaScriptへと変換(トランスパイル)するAltJSの人気が出たり、GoやScalaみたいな「静的型言語だけど、簡潔な書き方が出来る言語」も生まれました。

トレンドが動的型言語に傾いていたのが、静的型言語へと揺り戻されているように感じられます。

それでは上記を踏まえて主要プログラミング言語の将来性を考えてみます。

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.

Javaの将来性予想 – Dự báo triển vọng trong tương lai của JAVA

おそらく、10年後も業務システム開発では一番使われてると思います。

Webサービスやゲームのバックエンドでは、少しずつ別の言語へとシフトしていくのではないかと思われます。

Javaのいい所は、他の言語に比べて処理速度が速いことです。と言ってもC言語に比べれば遅いわけですが、LL言語(Perl, PHP, Ruby, Python)に比べればずっと速いと言われています。

そのため、Webサービスやゲームのバックエンドで処理性能が求められるような高負荷システムの場合Javaが使われてきましたが、LL言語の性能も改善が重ねられていますし、GoやScalaのようなJava以外で処理性能の高い言語が出てきた為、今後はこの分野でのJavaの利用は減っていくのではないかと思います。

ただ、業務システム開発は新しいものをなかなか取り入れようとしない保守的な業界ですし、これまでにJavaで開発してきたコード資産も膨大なので、引き続きJavaが使われていくと思うんです。

Javaのもう一つの使われ方としてAndroidアプリ開発がありますが、こちらはGoogleとOracleとのJavaの特許・著作権紛争がどう決着するかによっては「Androidアプリ開発にJavaが使えない」なんでこともありうるかもしれません。もしそうなったら、新たに、どの言語が採用されるのかが楽しみです。Goなのか、JavaScriptなのか、はたまたAppleのSwiftみたく新言語が開発されるのか等。

これについてrebuild.fmで「GoogleはAppleのように開発者に負担を強いるようなことはしないだろうから、裁判で負けてもOracleにライセンス料を払ってAndroidでJavaはずっと使えるようにするんだろう。」という話がされてました。

と思っていたら、GoogleがKotlinをAndroid開発言語として正式にサポートすることが発表されました。KotlinはJava VMで動く言語です。Javaよりも簡潔な文法で生産性が高いと言われています。案外このKotlinが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.

PHPの将来性予想 – dự báo về triển vọng của PHP

今後もWebサービスやスマホアプリ・ゲームのバックエンドで使われ続けると思いますが、徐々にRubyにシェアを奪われていくのではないかと思います。

言語としてPHPよりもRubyの方が洗練されていると感じるからです。

ただ、ちょっとしたWebサービスをインスタントに作ってレンタルサーバで運用するようなケースではPHPの方が断然向いていると思います。それに、世界で最も使われているCMSであるWordPressが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.

Rubyの将来性予想 – Triển vọng của Ruby

徐々にPHPやJavaのシェアを奪っていくのではないかと思います。

そのためにはWindows上での動作レベルがUnix系OS上でのレベルに追いつく必要があります。Rubyの外部モジュールのいくつかはWindows上ではまともに動きません。

Javaエンジニアの多くはWindowsPC上でコードを書き、単体テストをしています。JavaエンジニアがRubyを使い始めた場合、WindowsPCで開発を行うはずです。その際にエラーが多発して、Rubyをまともに動かすにはMacPCかデスクトップLinuxを使うか、WindowsにLinux仮想環境を構築しなければならないと知ったら、「じゃあ、使わねーよ」となってしまうかもしれません。

…と思っていたのですが、Windows10でBash on Ubuntu on Windowsが導入され、Windows上でもLinux環境を手軽に使えるようになったので心配無用のようです。

とはいえ、最近は「やっぱ静的型があった方が良いよね」って流れがあるので、もしかしたら、ScalaやKotlin、Goにシェアを奪われていくなんてこともあるかもしれません。

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.

C#の将来予想 – Triển vọng của C#

今後もMicrosoft製品では使われていくであろうということと、UnityみたいなMono環境での利用が伸びる可能性あります。

Monoというのは.NETのオープンソース版のことです。それをゲームエンジンに応用したのがスマホアプリ開発でデファクトスタンダードとなりつつあるUnityです。

私もUnityをがっつりやってC#を初めて使ったのですが、C#はJavaに比べて簡潔に書ける工夫がなされていて、とても良い言語だと思いました。

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

JavaScriptの将来予想 – Tương lai nào cho JavaScript

TypeScript, Dart, CoffeeScriptのようなAltJS経由で書かれるようになり、JavaScriptを直接書くことは減ってくんじゃないかと言われてましたが、AltJS競争はどうやらTypeScriptが生き残りそうな模様です。一方ECMAScriptからJavaScriptへトランスパイルするという流行もあります。

といっても、これは最先端の開発をしている企業での話であって、そうではない多くの企業ではJavaScriptを直接書くパターンが多いんじゃないかと思います。

というのも、JavaScriptはそこまで生産性の低い言語ではないと思うんです。割と簡潔な記述が出来るし、ちょっとしたものをささっと早く作るのには向いてると思います。

それにトランスパイルするのって意外と時間かかってめんどくさいですからね。

なんにせよ、ブラウザで動く唯一の言語なので需要が一番安泰な言語だと思います。

一方、node.jsのようなサーバーサイドでの利用はどうかというと、爆発的に伸びそうではありませんが、使わていくと思います。

node.jsは趣味でリアルタイムブラウザすごろくゲームを作った際に使ったのですが、正直しんどかったです。

IOが発生する所を全てコールバック関数で結果を受け取らなければならないので、コールバックがネストしていって、いわゆるコールバック地獄ってやつです。

node.jsをしばらくやった後、PHPに戻ったら、「同期IOのプログラミングってなんて楽なんだぁ!」と感動しました

現在はyield構文が導入されてコールバック地獄はなくなったようですが、やっぱり普通に同期IOの書き方が出来たほうが簡単なので、node.jsがサーバーサイドのメインストリームになることはないんじゃないかとおもいます。

そんなわけで、プログラミング言語の将来性について、自分が使った経験や聞いた話、技術の流行などから、予想してみました。参考にしてもらえたら、うれしいです!

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.

Ký tên : Team Tiếng Nhật IT – Kysubrse

Link : http://mikumikuplay.com/it/pg-lang-shoraisei/

5/5 - (4 votes)
Nếu thấy hay thì đừng ngại

2 thoughts on “[IT読解] Bài 7 : Xu hướng tương lai của các ngôn ngữ lập trình

  1. Bởi vì em trình độ tiếng Nhật vẫn còn quá í ẹ, lại muốn đọc thêm về các bài IT như thế này để ứng dụng vào công việc hiện tại đang phải sử dụng 100% là tiếng Nhật. Từ mới thì em có thể tra từ điển được nhưng ngữ pháp thì rất khó khăn. Vậy các ngữ pháp N1-N2 anh có thể note lại phía cuối bài viết để tiện tra cứu được không anh?

    1. Mẫu nào ko hiểu em cứ hỏi a sẽ giải đáp hoặc tổng hợp lại vứt lên Group Facebook (vào page sẽ thấy group TiengNhatIT, bấm Join) chứ anh lười tổng hợp lắm

Comments are closed.

%d bloggers like this: