2019年に勉強しておきたい3つのプログラミング言語

TIOBEのLanguage of the year 2018は見事にPythonが受賞しました。私もPython2.0の頃から使っているので近年のPythonの人気ぶりは嬉しい限りです。

そんな私は毎年一つは新しい言語を触るようにしているのですが、私が今年触ってみたい言語について独学するための情報を調べてみました。



Rust

https://www.rust-lang.org/

今一番勉強したいのがRustです。私の勝手な予想なんですが、Javaの次にくる言語はRustなんじゃないかと思ってます。

なんだかんだで2000年からの20年間はVM言語とスクリプト言語の時代だったと思っているのですが、恐らく次世代はまたネイティブな言語に回帰していくんじゃないかと思ってます。そうなるとCやC++ではなくRustが有望だと思うんですよ。Javaみたいにライセンス問題で揉める事もないでしょうしね。

"安全"だとか"速い"だとかっていう理由は他でも語られている事なのでここでは置いといて、なぜ今Rustを勉強しておきたいのかを述べたいと思います。


  • ドキュメントが充実しまくっている
独学が成功するかどうかはドキュメントがどれだけしっかりしているのかと言うことに尽きると思います。私が初めてPerlを勉強した時は上司にオライリーのラクダ本を2冊渡されて放置されて難しすぎて途方にくれたんですが、次に自宅で独学したPythonはWeb上のドキュメントが物凄い充実していて、しかもHTMLでダウンロードできる親切さ。それ迄はサーバの運用スクリプトはPerlで書いていたのですが、それからはPythonになりました。今もPythonで書いてます。

やはり勉強する時にドキュメントが充実しているというのは独学が成功するかに密接に関係していると思います。

Rustのドキュメントは充実しているというのを超越していて「これ無償で公開していいの?」というレベルのドキュメントです。もし私が根性のある20代だったらプログラミング未経験でもこのドキュメントだけでRustを勉強してマスターできるかもしれません。翻訳者の方には本当に感謝です。

Rustに興味が無い方も是非一度読んでみることをお勧めします。



  • Webアセンブリやってみたい
別にRustでなくてもWeb アセンブリを試す事は出来るのですが、RustはバックにMozillaがついてるからなのか、ネイティブ言語にも関わらずWeb系技術との親和性が高いです。Firefoxにも使われていますしね。

MozillaがWebアセンブリ用のブラウザIDEで「WebAssembly Studio」というのを公開しているのですが、これがなぜかRustが使えるんですよね。これからのWebアプリケーションはWebアセンブリでSPAの形になっていくと思うので、やはりここら辺の技術というのは気になります。どうせやるならRustでやってみたいじゃないですか。


ちなみにドキュメントの充実しているRustらしく、ちゃんとWebアセンブリについてのドキュメントもあります。翻訳はされていないので英語ですが、こういう痒いところに手が届いてる感じがRustをやってみたくなる一番の理由ですね。


  • ロゴがかっこいい
持っているノートPCはMacbookAirなんですが、意識高い系みたくステッカーチューンはしてません。でもフリーになってからは外に持ち歩くことが多いので、ちょっと装飾してみようかなー?なんて考えた時、使ってる言語のステッカーを貼ってみたくなるじゃないですか。Rustのロゴってかっこよくないですか?これなら貼ってもいいかなーと思えます。40代の中年のオッサンだとgolangのロゴなんてちょっと貼れないですよ。Rustはシンプルで渋くてカッコイイです。これなら貼っちゃいますね。


OSS系のステッカーを作りたい人は以下からどうぞ。OSSプロジェクトに売上の一部が寄付されるので陰ながら貢献できますよ。

StickerMule



TypeScript

https://www.typescriptlang.org/
私は昔からサーバ側の面倒をみる仕事をしてきたので、正直な所JavaScript系の言語にはあまり馴染みがありません。と言うよりJavaScriptからは逃げてきました。いかにしてJavaScriptを触らないで生活するのかというのを重視しているかの如く逃げ回ってました。が、いい加減そういう時代じゃないだろうという事で勉強しようと思います。

という様な変な苦手意識をJavaScriptに持っている人間でもTypeScriptは受け入れやすいんじゃないかと思います。まだ勉強してないので軽く見た限りでは・・・、ですけどね。

JavaScript嫌い(言っちゃった・・・)な人でもTypeScriptならやれそうだと思うところはなんと言ってもC#に近いところですかね。JavaScriptのあのカオスさが殆どない所が高評価です。

  • ドキュメントが充実している
MS製だからドキュメント関連は心配していなかったのですが、さすがに開発者も多いみたいで公式以外の情報も充実しています。検索すれば大体の事は解決できると思います。


以下は英語の文書の日本語訳です。



パッと見た限りでは上記サイトだけで独学出来ると思います。



Erlang

https://www.erlang.org/

ここだけの話ですが、Erlangは毎年勉強しようとして挫折しています。相性なんですかね。とても難しく感じます。それでも自宅サーバの基幹部分はRabbitMQを使っているので、出来れば普通に触れる様になっておきたいです。Erlangを覚えても仕事に結びつくことはないと思うんですが、恐らく使いこなせたら相当便利だと思います。

Rustもそうなんですが、これからのプログラミング言語は並行性を重視している必要があると思います。並行性でいったらErlangの軽量プロセスはかなり魅力で、自宅の非力なサーバでも普通に数百数千のプロセスが動きます。本当に大変魅力的な言語なんですが、日本語処理がちょっと・・・・。


  • ドキュメントが充実?している
はっきり言ってしまうとErlangの知名度はかなり低いです。日本でもあまり使われていないようで、日本語情報もほとんどありません。それでもドキュメントは充実しています。

まず日本語の情報ですが最初は以下のサイトだけ見ていればなんとかなると思います。


上記は英語の書籍の日本語訳で、日本語訳の書籍も「すごいErlangゆかいに学ぼう!」という名前で売られています。内容の差異は確認していませんが恐らくほとんど同じです。

その他にもオライリーのErlang本と飛行機本の2冊が日本語の書籍として売られています。

それ以外の情報は公式サイト(英語)で調べればなんとかなると思います。


はっきり言いまして、上記2サイト以外の情報がほとんどありません。なので充実しているとは言い難いのですが、上記2サイトでおそらく網羅されていると思うので勉強するのであればこの2サイトで充分だと思います。

まとめ

どれだけ独学する暇があるかは判りませんが、実際に勉強できるのはこの中の1つか2つになると思います。仕事に直結する言語という意味だと一番お金になりそうなのはTypeScriptだと思いますが、個人的な意欲でどれかを選ぶとしたらRustですね。Erlangはライフワークでただのおまけです。

ドキュメントの充実具合だとTypeScriptも良いですが、びっくりしたのはやっぱりRustですね。かなり濃いです。まだ開発者も少ないと思うのですがあれだけのドキュメントを作っているのも凄いですし、それを翻訳してくれる人がいるのも凄いです。本当にありがたいです。