Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

LotY (Language of the Year) 2013 @shuzo_kino

新年明けましておめでとうございます。
今年も元気よくハックしていきたいと思っているshuzo_kinoです。*1
LotY (Language of the Year)は達人プログラマーにて紹介された考え方です。
技術を錆び付かせないためには一年に一個新しい言語を学ぶ必要がある、という話です。
私のLotY2012はRubyJavaScript、HAXE (ちょっと)でした。
今年は

をキーワードとして選んでみたいなーと思っております。
というわけで、候補は以下の通り。

Lisp

ハッカーといえばLispという偏見()を昔から持っています。
ハッカーと画家によれば、言語はどんどんlispに近づいているとか。

Emacs lisp

最右翼。
Emacsの改造にも使えるしで一石二鳥です。
登場がSchemeよりも遅いというのが、個人的には意外でした。
基本的にCommon lispと同等の実装がなされているとのこと。
末尾最適化はないので、再帰処理を書く際スタックオーバフローを起こす危険性あり……とのこと。
まぁ気にするレベルまで書けるようになるのは大分先だから気にしなくて良いよね!

Scheme

Common lispに次いでによく使われるlisp方言。実装が軽く、いろんな言語環境にて移植済。
中には"biwascheme"のように、javascriptベースで動くとんでもない実装まで。
極力再帰的処理を使うよう推奨されているらしく、それ故に末尾最適化必須。

Common lisp

一般にLispというとこちらを指すようです。
これ自体は規格であり、各ベンダーが各々実装している様子。
末尾最適化はベンダーによって有無が異なるため要検討。<続報:Land of Lispという名状し難い入門本がでてます>

Clojure

今後課題になるであろう、並列処理に強い。
こちらのサイトによると、Javaの基本ライブラリに習熟しておいた方が良いとのこと。

Java

Javaはどうも手を出し難いイメージがありました。
というのも、人生初のプログラミングバイト先*2の上司がアンチJavaだったのが影響しています。
アセンブリや生C言語をガリガリ書いている方々にはJava仮想マシンは寝言にしか聞こえなかったようです。
しかしながら近年のハードウェアリッチの流れを見れば、組込みにおいても解決されそうではあります。

scala

RubyTwitterから引き剥がした張本人。
……私怨はともかく、マニア向け言語という域は脱して高い生産性の言語というスタンスが定着しているみたいですね。
具体的には、従来のJavaに比べて半分のコードで同じとの事。
LiftというRuby on Rails的なフルスタックフレームワークがあったりと、
確かに今後爆発的に普及しそうな子ではあります。
関数型言語でもあり、最有力候補。

groovy

公式マスコットが可愛い。
Javaの眷属だけど構文がRubyっぽい。
スクリプト言語に習熟しているなら習得も容易とのこと。

Kotlin

チェコからやって来た黒船。
登場時期が2011年と新しく、上記2言語を踏まえて開発されているため各種弱点を潰す効果が期待できる。
公式さんもシャレがわかるようで、好感。
……が、新言語の例のごとく資料が少ないのが欠点。
普及もまだまだ。
それでも

等々、素敵な仕様もあるため個人的には注目していきたい技術。

純粋関数型言語

Haskell

ご存知、究極の関数型言語
関数型言語の仕様をまじめに実装した結果、他の言語とは明らかに異質なものとなった模様。
徐々に日本語ドキュメントも充実してきており、
「すごいHaskell」……通称「すごいH」などは勉強会が開かれるほどに盛況。

まとめ

(職場)Scala => Emacs lisp => ...
(趣味)Haskell => Kotlin => ...
という流れで、大きな動きがあったら、それに乗る形で。

(追記)

巳年だからpythonという安直な意見を耳にしましたが
同じLLで面白みが無いので却下()
海外ではRubyより人気らしいので、来年の課題とさせて下さい。

優先順や各言語の関数に対するツッコミ大歓迎です。

*1:ハックと言えるほどにはなってませんけどね……まぁ形から入るという事で

*2:産業カメラを開発している組込み屋さん