関数型言語(関数型プログラミング)の勝利?

 

関数型言語の既存言語への影響

JavaScript: 世界で最も誤解されたプログラミング言語

Cの皮を被ったLisp
JavaScriptには、Cのような中括弧や不格好なforステートメントがあるため、一般的な手続き型言語のように見えますが、 それは誤りです。JavaScriptはCやJavaよりも、LispやSchemeのような関数型言語と多くの共通点を持っているのです。

RubyがLispから継承したもの、してないもの

プログラマが感じるRubyのよさはLispから受け継がれていると、Rubyのデザイナであるまつもと氏は話す。 Lispの8割から9割くらいの特徴が Rubyに受け継がれているとも。 プログラマであるまつもと氏が使い勝手にこだわった言語として、Rubyはデザインされている。 その特徴に共感を覚えた世界中のプログラマたちが、現在のRuby人気を支えている。

再評価の気運が高まる関数型言語

twitterブームの陰で注目を集める“Erlang”

twitterでは、メッセージングシステムに“ejabberd”を使っているという。これは“Erlang”で書かれたIMサーバだ。 オープンなIM標準規格のJabberに対応している。 また、クック氏がプレゼンテーションの中でRoRの代替として挙げている候補の1つ、 “RabbitMQ”も、Erlangで書かれたメッセージングサーバだ。
Rubyの開発者として知られる、まつもとゆきひろ氏も、 4月18日の“「次」の言語”と題したブログのエントリで「次にくるトレンドは『関数型』と『並列』。 両方を押さえたErlangが本命。歴史も信頼性もあり、知名度上昇中」と、 次にメジャーになりうる言語の本命にErlangの名前を挙げている。
Twitter、Ruby on RailsからScalaへ (追記:2009-04-13)



MSの新言語「F#」は関数型プログラミングがベース

Microsoftが開発中の新言語「F#」の名前は、関数型プログラミング(Functional Programming)の頭文字「F」を取ったものだ。
「F#は関数型プログラミングの伝統から生まれ(それゆえ「F」なのである)、ML言語系統の流れを色濃く反映しているが、 C#、LINQ、 Haskellの特徴も備えている。 F#は開発当初から、.NET向けの第一級言語になることを目指してデザインされた」とソマセガー氏は語る。

関数型プログラミングを楽しむ

処理系 備考

Gauche

日本語

特徴

  • R5RS準拠のScheme処理系
  • CLOSライクなメタオブジェクトプロトコルを備えたオブジェクトシステム
  • 継続ベースのアプリケーションサーバ/フレームワーク Kahua

リンク

参考書

Haskell

特徴

  • 純粋関数型言語
  • パターンマッチング、カリー化、リスト内包表記、ガード、定義可能な演算子
  • 遅延評価、再帰的な関数、代数的データ型、モナド、型クラス

リンク

参考書

Erlang

特徴

  • 並列処理、分散処理、耐障害性、ソフトリアルタイム、無停止稼動
  • 宣言的文法、パターンマッチング、シンボリックプログラミング言語、動的型付け

リンク

参考書

Scala

特徴

  • オブジェクト指向言語と関数型言語の特徴を統合
  • 静的型付け、型推論、パターンマッチング、カリー化、遅延評価
  • Trait (Mix-in)、implicit conversion、並列処理(Actor)

リンク

Scala チュートリアル集 へ移動しました。(2009-04-13)

OCaml

特徴

  • 静的型システム、多相型システム、型推論
  • パターンマッチング、モジュール・ファンクタ
  • オブジェクト指向をサポート

リンク

参考書

覚え書き

  • サラリと眺めた感じでは、学習するのにかなり数学的なセンスを要求されそうな気がします。 センスを計るバロメータ、もしくはフィルタのようでビビります。 しかし、これまでは目にしても全力でスルーして来た用語や概念を強制的に学習できそうです(養成ギブスですね)。
  • 関数型言語を学習することは、短期的にはそれほど大きなメリットが無いかも知れません。 それでも、JavaScript や Ruby などのように関数型言語の影響を受けている言語を使用する場合には、 思考や発想に良い影響を与えるに違いありません。
  • LISPが発明されたのは1958年ということなので、今年の2008年でちょうど半世紀ですね。 長年に渡る研究の成果が実を結んでいくのを感じます。

更新履歴

日付 内容
2009-03-21 追加 Scala
2009-02-16 削除 関連リンクの「プログラミング言語の進化を追え」は、 ITmedia掲載を削除して developerWorks掲載を残した。
追加 関連リンクに「読み物」を追加。
2008-02-03 初版 Scheme(Gauche), Haskell, Erlang, OCaml