関数型プログラミング言語のまとめ

http://funceng.com/2013/11/03/review-of-functional-languages/

1 comment | 0 points | by Jshiike 4年弱前


Jshiike 4年弱前 | ▲upvoteする | link

Kevin Buellがブログの一連のエントリーで関数型プログラミング言語の概要をまとめています。



1) Haskell


ラテン語がわかる人には親しみやすい。に似てプロとして使ってなくても、分かっていればすごく役に立つ。[今までで最高に恥ずかしい誤訳でした。早速ご指摘いただいた皆様ありがとうございました!!! ]


[Background]


遅延評価の研究成果をとりまとめる委員会が1990年にHaskell 1.0の仕様をつくった。コンパイラはGlasgow Haskell Compiler (GHC)が最も有名。Haskellに関する研究はMicrosoft Researchで盛ん。.NETのための関数型言語であるF#もMicrosoft Researchの成果であるが、別の研究者グループの手により後年世にでてきた。


その他の項目は原文参照ください。


[Comparative Description]
[Syntax Highlights: コードサンプル]
[Some Unique Aspects]
[A Simple Real-World Example: コードサンプル]
[To Learn More]


2) Scala


関数型言語の中で一番将来性がある。文法パターンが豊富でJavaとの親和性があるのは実用的。しかし、他の言語のいいアイデアを全てテンコ盛りにしようとしてるので、複雑で一貫性がなく、誰も満足させられなくなってるかもるかもしれない。


[Background]


Swiss Federal Institute of Technology in Lausanne (EPFL) 教授のMartin Oderskyが2001年から開発をはじめ、2003年に最初のバージョンがでた。Martinは、Javaに関わってから、Pizza言語Funnel言語で関数型言語とオブジェクト指向型言語の融合に取組み、その経験からScalaを生み出した。現在、.NETのサポートはメインの開発ラインでは休止されている。ちなみに、MartinはEPFLの教授と兼務でTypesafeを数年前に創業している。


Scalaは”scalable language”の略で、ユーザに構文を強制するのでなく、言語機能をユーザが自由に定義できるようにしようというのがコンセプト。一方で、Scalaにはかなり豊富な構文が既に用意されている。 


その他の項目は原文参照ください。


3) F#


開発言語の機能としては申し分なく、ツールのラインアップもしっかりしているが、開発コミュニティはそれほど盛り上がっていない。コミュニティからできあがった言語ではないのが理由だと思うが、他の関数型言語がもっと人気がでてくれば、オブジェクト指向型言語におけるC#のように、Microsoftは力技でリソース投入して、コミュニティの盛り上げをはかるのではないか。


[Background]


F#の建て付けはオープンソースでF# Software Foundationがサポートしているが、インストールしようとすると他の言語との違いがよくわかる。(無料だが、有料版のほうがはるかに簡単にインストールできると思う。)


F#は、デザインとインプリはMicrosoft ResearchのDon Symeが手がけ、彼は引き続きMicrosoftのF#チームで働いている。


その他の項目は原文参照ください。


4) Erlang


Erlangは実際のサービスで長い間使われてきた実績がある。Hot swappingをサポートしているので、システムを止めずにアップデートができる。bit操作機能や平行処理機能など実践的。コミュニティ発でなく一企業がつくった言語なので、独特な構文法が残ってたりする。


[Background]


1986年にEricssonのJoe Armstrongがメインに開発。収益を目指した事業でなく、社内用の開発言語が出自であったため、一般的なオープンソースのコミュニティのサポートがある。


過去にEricssonがつくったソフトを改修した経験があるが、開発手法/ツール/製品は高く評価をしている。


以下、原文参照ください。


5) Clojure


ClojureはLISPの派生系。Javaと互換性があり、Javaのバイトコードにコンパイルできる。


自分にとってLISPはプログラミング言語の最高峰だが、括弧の連発が解せない人にとってはとっつきにくい言語という印象ではないか。ClosureはLISPの主要な考えを引き継ぎつつ、構文的にもっとわかりやすい。一般的に、Clojureのフレキシビリティが評価されているのか、それともコンセプト/仕組みが分かりづらいと評価されてるかわからない。


[Background]


現代の主要な開発言語としては最も新しいものの一つ。Rich Hickeyが一人で開発に取組み、2007年にリリースされた。LISPから産まれたClojureは、フレキシビリティが自慢で、独自の開発言語をつくれるので、DSLにも使われる。LISP支持派がよく「コードはデータ」というように、Closureでプログラム的にコードを好きなようにいじれることを素晴らしいと思う人もいるし、不愉快に思う人もいるだろう。


その他の項目は原文参照ください。


6) R


Rは、関数型プログラミング言語のカテゴリには入らないかもしれないが、関数型言語の影響を強く受けている。それが、命令型プログラミング言語の人が移ってきづらい理由。データ分析の用途において人気がある。


[Background]


Rは、統計計算とグラフィック出力のためのGNUプロジェクトで、ベル研究所で開発されたS言語がそのルーツ。


インタプリタを利用するので、多くのユーザにとってRはアプリケーションだと言える。一般的な開発言語を目指しているかどうかは不明だが、フル機能はもっている。主要ユーザであるデータサイエンスの分野での議論で、開発言語としての将来の位置づけが決まってくるだろう。


その他の項目は原文参照ください。




[Oct. 2013] ワザノバTop25アクセスランキング



Back