2つ目にマスターしておくとよい言語とは?(参) Scala



さて最終回、今回は少し毛色が違って、言語種別による選び方です。
少し考え方としてはテクニカルになるかもしれませんが、いま主なプロ
グラミング言語には手続き型言語、オブジェクト指向型言語があり、エ
ンジニアの皆さんの得意な言語は大体どちらかに入ってきたわけです。
 
だから手続き型言語はCとかCOBOL、VB、PHPなど手続き呼び出しと
いう形で構造化されているプログラミングです。
一方オブジェクト指向はデータとコードを単位としたオブジェクトによ
り構成されるプログラミングでこれはJavaとかC++、C#,
JavaScript,Python,Kotlin,Swift
などです。
 
やはり時代の流行のようなものがあって、手続き型–>オブジェクト指
向という
形になってきたのはあります。その過渡期いは手続き型しか知
らない人にはオブジェクト指向の言語を何とかマスターしたいというの
が当時あったと思います。C++とかSmalltalkとか難しいのばかりでし
た。
そのころJavaという言語ができて一挙にオブジェクト指向はメジャー化
しましたね。いまはPythonやKotlin のようにもっと学びやすい言語がで
てきました。
 
そしていま第三の波という形で関数型言語です。といっても今メジャー
なのはScalaだけですかね。JVM上で動く関数型言語です。
 
オブジェクト指向がモノに着目して、その属性、操作によって記述する
のに対して、関数型は全てを関数とみなし、関数をひたすら積み重ねて
いく形になります。

昔々LISPという言語があり、AIの父マッカーシーによって開発された当
時のAI開発に使われていた言語でした。LISPこそが関数型言語の開祖と
いわれており、数理論理学、コンピューターサイエンスをやった方なら
覚えているかもしれませんが、ラムダ計算という考えがもとになってい
ます。
 
その関数型言語がホットな訳です。
現金な話でスミマセン。
Scalaは毎度お世話になっています2018年言語別収入ランキングではGo
について2位となっています。


Haskellのような「純粋」な関数型言語に比べると・・・という声もあ
るのですが。
 
なぜScalaがこのように高くなっているかというと、エンジニアが凄く
少ないということがあります。実際に知名度はそこそこあるのですが、
対応できるエンジニアは本当に少ないのです。やはり関数型言語という
考え方の部分にハードルがあるようで
、なかなかトライする人が少な
く、需要に供給が追い付かないのです。
これは世界的に見て同様なようですよ。Pythonとちがってこれから旬、
しかも学びやすいというわけではないのですね。
 
需要という意味ではWEB開発に大きな威力を発揮しているようです。
あと企業でも例えばTwitterやLinkedInは
Scalaで多くの部分開発されて
います。
 
このハードルはいってみれば手続き型言語しか知らない人が、初めてオ
ブジェクト言語を学んだ時の様、
といった感じでしょう。
 
先ほど非純粋関数型と書きましたが、ScalaはJavaの上位互換とかオブ
ジェクト指向のハイブリッドという人もおり、Haskellと違う扱いする
人も多いようです。しかし、Javaなどのオブジェクト指向型言語
を学ん
だ人にとても良い入口になっているようで、関数型言語の中ではもっと
も学びやすいものといえるでしょう。
 
関数型言語なんか知らなくてよいよなんて言う人もいるでしょうが、先
ほど書いたように
WEB系エンジニアで関数型プログラミングは必須に
なるという人もいます。



 
単に需給関係で難しい考え方をマスターする意味はないでしょうが、或
る分野で
その考え方が主流になる可能性がある場合、早めに取り組むのは先行者
利益が
ありそうです。しかも考え方という部分で少しハードルが高けれ
ばなおさらです。
 
検討されてはどうでしょう。勿論それぞれのキャリアプランに合わせて
ですよ。
 
今回の特集色々紹介しました、正直エンジニアさんは色々可能性があっ
て楽しいそうだなんて思ってしまいます。エンジニアの曲がり角は40代
です。それまでに
自分がこれから何をしたいか考えましょうね。