駄文
まずはじめに最近好きな言語を挙げるが、Scala / F# なんかが好きだ。
そのどれもに共通することを挙げよう。
- 静的型
型があれば、おかしなコードはコンパイルで弾ける。
規約の準拠チェックもツール作りが動的型よりは容易だ。 - 関数型
関数が引数や返り値にできることで、共通化や抽象化に関してアドバンテージを持つ。
何より副作用、わかりやすいところで変数が一気に減る(関数型はそういうところを重視する)。
結局オブジェクトが状態変化をすると、状態に依存したコードを皆書いてバグにしてしまうのだ。
ならば、状態が無ければいい。当然の帰結である。
という点で一致している。
好きではないが、それでもよく使うのは Coffee だろうか?
結局、プログラマとはコードを書いてお金をもらう職業である。
そして、やってれば直ぐに分かるのだが、作って納めたらはい終了というアプリケーションは実のところ少ない。
すると気にしなければならないのがメンテナンスコストだ。
現実問題、拡張や修正で開発期間の数倍続く事が多い。アジャイル開発なんてもろに保守だけで開発を進める様式に等しい。
分かってる人が少数精鋭で作る場合は動的型の方が圧倒的生産性を誇る(RoR)。ここに疑いの余地はないと思う。
しかしそんな精鋭と一緒に仕事できる機会がどれだけあるよって話はある。
かといって、Java7以前 + Struts2 なんて環境で開発効率が上がる訳がない。
そういうことだ。
そして、そうした関数型の言語機能が最近、C++/Java なんかにまで取り入れられている。
何が言いたいかというとだ。
もうパラダイムシフトが始まってる と
2 年前の LL 祭りで Matz さん(Ruby開発者)が言った通りの進化である。
皆でカリー(currying)食べて食料(人・コード量的リソース)問題を緩和させよう!
(23:34)ふと思い出したので追記。良く良く考えたら、6年前に札幌の勉強会で、札幌で「もう次のパラダイムシフトの目は出てる」と sumimさんが言ってたよーな。その頃は CLR/H 勉強会で、C#3.0 な話(この時は正式版ではなかった)の話で盛り上がってた時期だったと思う。
温故知新ではないですが、確かに既にある技術や、埋もれた過去の技術の中に、次のパラダイムシフトのヒントはいつだってありますよね…。