先週GitHubが発表したThe State of the Octoverseにある人気プログラミング言語は、日本でも幾つか紹介された。この種のランキングは日本人も大好きであるからだが、ITについて詳しくない人にとってはランキングだけを見てもよく分からないだろう。
しかし、投資をする人にとってもプログラミング言語は重要であるし、そうでなくとも将来的には多くの人にとっても必要なスキルとなると考えられる。
そこで各言語ごとに簡単に解説を付加することで、新たに言語を習得する人にとって参考になれば良いと思われる。
筆者は 機械学習やデータ分析でプログラミングを扱うだけでなく、 ウェブシステムの開発やプログラミング言語の指導などで多くの言語に関わってきた。ここでは投資家という立場に囚われずに広い視野で言語の状況や可能性について触れていきたい。
今回はプログラミング言語ランキングの言語を扱い、次回は成長著しい言語ランキングについて見る。
GitHubプログラミング言語ランキング
GitHubプログラミング言語ランキングは、GitHubリポジトリに登録されているプロジェクトベースで算出されているので、より実質的なシェアを示すと考えられる。
人気プログラミング言語ランキングとしてはTIOBE Indexが有名だが、こちらは「検索数」がベースとなっているので、以下のように初学者が最初に始める言語として多いJavaやC言語が上位になりやすい。
肝心のGitHubプログラミング言語ランキングは以下の通りである。2014~2016年の10位はObjective Cである。
初学者にも良いJavaScript
2014年から一貫して1位なのがJavaScriptである。ウェブ系であれば必須であり、Vue.jsといったJavaScriptフレームワークやReactJSといったライブラリなどの人気も高まっている。
元々はJavaScriptは雑な言語と言われていたが、今やクラスベースのオブジェクト指向言語として扱うこともでき、更にHTML5自体が非常に柔軟性を持つようになっている。その結果、スマートフォンアプリでも従来のネイティブアプリではなく、HTML5 + CSS + JavaScriptを用いたウェブアプリも増えている。
日本語の情報も充実しており、今後も確固たる地位を維持し続けると考えられる。特に決まった目的が無いがプログラミングを始めたい場合にも取っつきやすく、習得を検討すべき言語の一つと言えよう。
なお、マイクロソフトが開発したJavaScriptのスーパーセットであるTypeScriptのシェアが高まり7位にまで上昇しているのも特徴的である。
機械学習だが初学にPythonはオススメしない
今回Javaを抜いて初めて2位となったPythonは、機械学習やデータサイエンスでは必須とも言えるプログラミング言語となっている。すぐに機械学習やデータサイエンスを始めたいというのであればチュートリアルも分かりやすく習得コストも低いので良いが、特に目的が定まっていないのであればオススメしない。
Pythonが普及したのは、プログラミングのことがあまりよく分からない機械学習研究者などが習得しやすかったということにつきる。しかし、文法など言語としてはあまりにも雑であるし、言語としての性能も良くない。
機械学習分野でPythonの地位を確固たる存在となっているのは多数のライブラリの存在が理由である。行列演算などを行うためのNumPyなどはC言語によるネイティブコード実行により高速に計算できるが、Python自体は非常に低速である。
今後より優秀な言語のライブラリが充実していけばPythonのシェアが脅かされる可能性もある(一部ではGoやRustなどにより既にその兆候が見られる)ので、第一言語として学習することはオススメしない。(他の言語を覚えてからPythonにいけば簡単である。)
没落するJavaと伸びるC#
長らく2位だったJavaが3位に落ちた。これはJavaの有料化や、最近の関数型プログラミングなどについていくことが精一杯であり、後発の言語に押されているからだ。
対照的に伸びているのはマイクロソフトによるC#である。元々マイクロソフトはVisual J++というJavaもどきを作っていたが、Oracleに買収される前のSunに訴えられたことで開発したのがC#だ。
比較的後発言語であるが故に、Javaの反省点は多く活かされており、言語としても非常に良い。シェアの高いWindowsで扱いやすいということもシェアを伸ばしている理由の一つである。言語としてもしっかりしており、これも初学者にオススメしやすい言語である。
昔なら初学者にはJavaを勧めていた。Javaはしっかりとした言語なので最初に覚える言語としても良いと思うが、今後の没落する未来を考えれば、JavaよりもC#の方が将来性がある。まだまだJavaの案件も沢山あるし、今後も保守案件もあるのだが、C#を覚えていればJavaも簡単なので、どちらが先かと言われれば今ならC#を勧めたい。
お気軽言語のPHPとRuby
言語としてはかなり癖があり筆者は好きではないが、お気軽にウェブアプリケーションを作るならPHPやRubyは簡単で良い。
特にRubyは日本初のプログラミング言語で初めてIECの国際規格に認証された言語として注目され、ウェブアプリケーションフレームワークRuby on Railsも非常に人気があった。しかし、速度面や後発言語と比べた時の機能面での劣りから、年々シェアを落としている。
対照的にPHPはWordpressなどでも使われており確固たる地位を築いた。本格的な企業のウェブシステムには物足りないが、ちょこっと作る分には習得しやすくて非常に良いだろう。
初学者がC言語をやるべきではない
C言語はOSを動かすのに使われているし、組み込み系など需要も多い。今後も一定の地位を持ち続けるだろう。
しかし、「プログラミングを始めるなら何からやれば良いか」という質問対して筆者はC言語はオススメしない。日本語の情報も多いが、初学者がつまずきやすい部分が多く、最初に始めるにはハードルが高い。
しかし、「Javaおじさん」と同じくらい多いのが「C言語おじさん」である。こうした「おじさん」に多いのは「最初はしっかりとした言語をやるべきだ」という理由である。C#を検討すべき言語として挙げている筆者もその類例にはあるが、新しくて良い言語があるのに、わざわざ古いJavaやCから始めるメリットは小さいと考える。
次回:GitHub人気プログラミング言語ランキング「解説」(2):急成長言語