プログラミング言語をいくつ知っていますか。最近の調査によると、SitePoint読者の約80%は少なくとも2つの言語を知っています。ゆうに半数以上の読者は日々PHPを使っています。私と同じように非常に多くの人がPHPを使ってWeb開発を始めたと思います。
最近「学習予定」リストがまだ不十分だと思い、この機会に履歴書に別の言語を追加しようと考えました。そして、オンラインでScalaを学ぶことにしたのです。Scalaになじみのない人のために簡単に説明すると、Scalaは静的に型付けされた汎用コンパイル言語(たとえば、移植可能なバイトコードにコンパイルするJavaのようなもの)です。ScalaはJavaScriptのように複数のパラダイムがありますが、Haskellのような純粋な関数型言語に見られる高度な関数型プログラミング(FP)機能をたくさん備えています。最近人気のFPが性に合うなら、探究する価値は十分にあります。
こう考えている人がいるかもしれません。「なぜ、いま別の言語の学習を始めるのだろう? 当分はJavaScriptを使って作業するんだけど」。JavaScriptに関連したことで学びたいこともたくさんあります。しかし、新しい言語を学ぶと良い理由はいくつかあります。FPなどの静的型付けやプログラミングパラダイムのような考え方を理解するのに最適な方法は、否応なくそれらを使用する言語を使って実際に作業することです。JavaScriptの自由度の高さは多くの人にとって魅力的なものですが、特定の問題の解決方法を考えなくなります。特定の言語に特徴的なコードの書き方を学ぶと、問題を違った切り口から見て対処する方法が得られ、JavaScriptの書き方もそれに伴って変わります。さらに、特定の言語のスタイルの利用を制限すると、そのメリットやデメリットを理解できるようになります。
新しいパラダイムや考え方、プログラミングのスタイルに触れることは、きちんとした訓練を受けていない独学者には特に有益です。コンピューターサイエンス科の卒業者は、先に書いたようなアイデアをたくさん目にしている場合が多いのです。最大限の効果を見込めるように、JavaScriptとはまったく異なる言語を学習してみてください。
現在人気のあるライブラリーやパターンは、ほかの言語の考え方を応用していることにも注目できます。Reactの状態管理ライブラリーであるReduxはElmのデータフローシステムに基づいています。Elm自体はJS言語へトランスパイルするもので、Haskellの影響を受けています。ほかの言語を学ぶと、ライブラリーや背後にある考え方をより良く理解できます。使いやすいJavaScriptしか使わないと、ほかの言語のエコシステムの見通しや分かりやすい解説は、他人に依存することになります。
新しい言語を学ぶと、母国語の見方も変わります。ポルトガル語を学び始めたとき、英語の見方が変わりました。異なる言い回しに直面すると、否応なく母国語ではどうなるかを考えるようになります。物事を当たり前だと思わず、なぜ物事がこのような方法でなされ、ほかの方法が取られないのかを考えるようにしてください。言語次第では類似点が見いだせるかもしれません。ポルトガル語と英語では、どちらもラテン語であることから動詞の形が似ていて簡単に意味を推測できる場合があります。プログラミングでも同じ事が言えます。特にまだ2つ目の言語を学んだことがない場合にはそうです。ほかの言語に触れると、JavaScriptが設計されたときに選択された考え方が分かるようになります。具体例としては、クラス継承やJavaScriptのプロトタイプのオブジェクトシステムの比較・対称をサポートしている言語を学習する場合が挙げられます。
実験的な低水準言語であるWebAssembly(WASM)はもうすぐブラウザーに組み込まれます。CやC++などの高水準言語はWASMにへのコンパイルが可能になり、JavaScriptで書かれたコードよりも小さなファイルサイズとより高いパフォーマンスというメリットを享受できます。おそらく、WASMのおかげでブラウザーでほかの言語が使えるようになり、高い人気の言語の多くがWASMにコンパイルされるのも、そう遠くはないでしょう。JavaScriptの生みの親であるBrendan Eichは最近、未来のどこかの時点でJavaScriptが使われなくなる可能性があると発言しています。JavaScriptの重要性は今後も長らく続くでしょうが、ほかの言語を身につけておくと、失業を避けられるだけでなく、JavaScriptしかできない開発者と見なされずにすむかもしれません。
新しい言語を学ぶ時間を確保できない場合、先ほど説明したメリットを享受しようとJavaScriptから遠ざかる必要はありません。先週、すべてがTypeScriptで書かれたAngular 2に関連した記事『Understanding Component Architecture: Refactoring an Angular App』を発表しました。TypeScriptはJavaScriptのスーパーセットなので既知の考え方が応用できます。TypeScriptには静的型付けや、インターフェイスやデコレータのような考え方(後者はJavaScriptの今後のバージョンに組み込まれます)が追加されます。TypeScriptを試すと、静的な型の言語と動的な型の言語の違いに対する見識が得られます。また、JavaScript開発者としての知識も広がり雇用の可能性が高くなります。Angular 2開発のデフォルト言語であるため、就職もしやすく、学んだ考え方によりJavaやScalaなどの言語を今後学習しやすくなるでしょう。
(原文:Life after JavaScript: The Benefits of Learning a 2nd Language)
[翻訳:中村文也/編集:Livit]