/.Jに聞け:「関数型言語ブーム」はいつ来た? 81
ストーリー by hylom
10年前に授業で習ったときにはこんなブームになるとは思わなかった 部門より
10年前に授業で習ったときにはこんなブームになるとは思わなかった 部門より
あるAnonymous Coward 曰く、
BlogやTwitterなどを見ていると、最近ではHaskellやScala、Ocamlといった関数型言語が流行っており、またPythonやRubyなどのように関数型言語の要素を導入する言語も増えている。
これらの動きを見るに、関数型プログラミング言語がブームになっているように思うが、その流行はいつからで、どのようなことをきっかけにしているのだろうか?
ちなみに、「プログラミング言語の人気度数」を調査公開しているTIOBE Programming Community Indexによると、関数型プログラミング言語の代表とも言えるLispの「人気度」は定期的に上下している模様。
おしゃれの流行 (スコア:5, おもしろおかしい)
> 関数型プログラミング言語の代表とも言えるLispの「人気度」は定期的に上下している模様。
それは、かっこつけたがりな連中の増減を示しているだけだろ。
かっこいい (スコア:2, おもしろおかしい)
(((((title only)))))
最近知ったばかりの者ですが (スコア:5, 参考になる)
オブジェクト指向では、最高のコードは書けないと達観してしまったプログラマが増えたがゆえに、Haskell の新しいアプローチに関心が集まったのではなかろうか。(ここでの「最高のコード」の定義は、短いコードで、目的の処理が書けて、人間にも読みやすく、初学者にも理解しやすく、コンピューターにも高速に処理しやすい経済的ベストバランス)
副作用はあってはならず、変数の再定義は禁止。縛りが厳しいスタイルですが、モナドという仕組みで、例外機構や状態の保持のようなものもスッキリ書ける、らしいと。(個人的に、最近知ったばかりで、詳しくはよく知らない)なるほど、もしかしたら、これがプログラミングの未来、すごいパラダイムシフトがあるのではなかろうかという期待をしてしまうのです。
ブームに便乗しているだけ (スコア:4, 興味深い)
前回流行ったと言われているのは、80年代後半から90年代前半だけど、
あれ並列計算機が出てきて「関数型で書けば、そのまま並列実行可能じゃね?」って話。
並列計算機っていうバズワードがHPCに変わったころに、「難しくてやっぱ実用的じゃなかったね」と廃れた。
MapReduceでビッグデータでクラウドで、またぞろ関数型が流行りだしたけど、
そろそろ「難しくてやっぱ実用的じゃなかったね」と廃れそう。
でもまあ、昔から活用している人は活用しているし、今もそれで実益を出している人もいるよ。
それでいいじゃん。一部の人に使える言語のままで。
Re:ブームに便乗しているだけ (スコア:1)
"Avoid success at all costs." (能う限り成功を避けよ)とは言ったものですね.
;; 結局今日まで C89 一本槍で来てしまったけれど,学んだ意味はあったと思う.
関数型? (スコア:2)
自制すれば関数型として書けるけど、宗教的な争いが起こりそうだなー、と。
Re:関数型? (スコア:3, 興味深い)
>自制すれば関数型として書けるけど、宗教的な争いが起こりそうだなー、と。
僕もそう思います、CommonLispなんかだとオブジェクト指向コード含めなんでもできる驚異な言語って感じします。
というか既存のLisp系言語で純粋に関数型プログラミングできるのってものすごく少ないです。
ClojureとかQiとかLisp言語族のごく一部でしかないです。
というかCommonLispやSchemeで純粋関数コードってよっぽどの賢者か勇者じゃないと誘惑が一杯じゃないの?
という感じ。(clojureだってjavaオブジェクトでホイホイぱーな感じだし)
pureな関数型言語ってHaskellとかMLの一部だけな気がする。
ちなみにトピックに沿った話題としてはGoogleのMap Reduce論文から派生して人気がでたんじゃないかとは思います、各種言語への取り込みもMapとReduce系が主題になった話題が多いし。
Re:関数型? (スコア:4, おもしろおかしい)
気持ちは *t*
Re: (スコア:0)
古い Lisp 系言語やそこに各種パラダイムを全部入れた Common Lisp を Haskell OCaml のような静的型付けの関数型言語やそこに OO 入れた Scala を一緒くたにするのは、 C++ も Java も Ruby もまとめて手続き型で C に代表させるくらいには乱暴な話ですね。
Re:関数型? (スコア:2)
鵺じゃ!鵺の祟りじゃ!!
# 特に意味は無い。
Re:関数型? (スコア:2)
「道(タオ)」を求めよ
勉強不足だけど (スコア:2)
http://d.hatena.ne.jp/satosystems/20121228/1356655565 [hatena.ne.jp]
こちらの記事の Scheme48 の事前最適化で結果が出てしまっているというところに、
関数型の利点があるのかなぁなんて思いました。
問題によってはこんなことまで出来ちゃうのは副作用がないからってことなんですかね。
勉強します…。
Re:勉強不足だけど (スコア:2)
C++のテンプレートは再帰深度の深さに制限がありませんでしたっけ。
関数型でも制限があるのかどうかわかりませんが。
オブジェクト指向=関数型? (スコア:1)
オブジェクト指向がすでに関数型だと思ってたよ。
the.ACount
今でしょ! (T/O) (スコア:0, オフトピック)
今でしょ!
#って言ってみたかっただけ。
テンプレート・メタプログラミング (スコア:0)
C++の変態的テンプレートが流行した00年代前半あたりじゃないですかね。
当時はWeb2.0とか何とかめまぐるしかった印象ですので一概にこれとも言えない気はしますが。
Re:それって、いつの話? (スコア:1)
関数型のエッセンスを取り入れたと言ってるだけで、
関数型言語になったとは言ってないでしょ。
Re:それって、いつの話? (スコア:1)
そこは全く同意です。
私の意見は、
関数型のパラダイムはトレンドになっていると思うけど、
「関数型言語」がブームになっているとは思わない。
です。
Re: (スコア:0)
Re: (スコア:0)
この半世紀以上、 一体いつからLispが流行っていないと錯覚していた?
Re: (スコア:0)
えっ
// ここまでテンプレ
Re: (スコア:0)
Re: (スコア:0)
おっさん・・・(泣
よりによって紅茶キノコって、若い人は知らないよ。知ってるオイラもおっさん確定だけどさ。
そこでもっと若い例えが出てたらブームの信憑性が上がったのに。
関数型言語がおっさんほいほいにならず、若い人から声が上がってきたらブームと言えそうな気がする。
Re: (スコア:0)
要素の導入という話を「関数型の言語になった」と受け取ったり、またそういうことをする言語も増えているという風に追記されている部分を主張のすべてのように受け取ったり。
ブームが来てるかどうかは知らないが、そういうことを論じる以前の読解力だね。
Re: (スコア:0)
関数型のブームとは言っているが関数型言語のブームとはいっていない。
おわかり?
Re: (スコア:0)
おかわりちょうだい!
Re: (スコア:0)
おわかりとは言っているがおかわりとはいっていない。
わかおり?
Re: (スコア:0)
> 「おれは関数型になったと言ってない(キリッ)」で完結したつもりになっちゃダメですよ。
なんだこりゃ。
#2389168は#2389153の一部にある誤りを指摘しただけでしょ。
完結したつもりになってるって妄想が過ぎるのではありませんか?
Re: (スコア:0)
またPythonやRubyなどのように関数型言語の要素を導入する言語も増えている。
勝手に前提を変えちゃだめですよー
それとも「関数型言語は関数型言語の要素を持つ。ゆえに関数型言語の要素を持つならば関数型言語である」とか脳内補完しちゃった?
逆は必ずしも真ならず。論理の基礎の基礎の基礎ですよー
Re: (スコア:0)
> 「関数型言語は関数型言語の要素を持つ。ゆえに関数型言語の要素を持つならば関数型言語である」
むしろ、関数型言語が関数型言語のアイデンティティを保つためには、非関数型言語が持てない要素を持つ必要がある。
よって、PythonやRubyなどにお手軽に導入されないような関数型言語の要素を持つ孤高の存在が、The関数型言語なのだ。
とか思っていたりする人の方がpureな感じがしませんか?
Re: (スコア:0)
僕がtwitterでfollowしている範囲ではEmacsのmew開発者kazuさんがHaskellにのめり込んでますね
その周りじゃちょっとしたムーブメントぐらいの勢いはあります
http://d.hatena.ne.jp/kazu-yamamoto/ [hatena.ne.jp]
あと、scalaは結構勉強会とかも活発なようですね
Javaとの親和性が高いことで始めた人も多いですが
Javaとは根本的に違う事で挫折する人も多いようです
Re:それって、いつの話? (スコア:1)
#2389153だけど、
結局その人が一人で騒いでるだけでは?
実のところHaskellって名前今回初めて目にしたぐらいだし、
流行なんて全くしていないんじゃないですかね?
Re: (スコア:0)
Haskellって名前今回初めて目にしたぐらいだし
いや、それはさすがに君が世間知らずなだけかと。俺もHaskellの勉強をしたことはないが、なんかすごい関数型言語らしいというのは10年以上前から噂で聞いていた。以前に、perl 6がCで実装される前の実験的インタプリタをHaskellで書いたという話もあったし。
Re:それって、いつの話? (スコア:1)
Haskellで書かれたMonadius [srad.jp]の登場が2005年ですね。あれはかなり印象的とうか衝撃的でした。もう8年前になるのか…
Re: (スコア:0)
実のところHaskellって名前今回初めて目にしたぐらいだし、
お前なんでこんなところに書き込んでるんだよ。
Re: (スコア:0)
流行の兆しというか、ささやかなものは最近感じる。
でも、オブジェクト指向とかライトウェイト言語?の時ほどのブームは
もう起きないんじゃないかなぁ。
Re: (スコア:0)
ブームにしようにも頭がいい人じゃ無いと使いこなせないのでブームにならないのが現実だと思います。
Re:それって、いつの話? (スコア:1)
オブジェクト指向もデザイン・パターンが出てきて初めて概念先行を抜け出したと思うんだよ(一般人にとっては…)。
利用事例が増えて、オブジェクト指向のデザパタに相当するものが出てくるとイケんるんじゃないだろか。
Re: (スコア:0)
ああ、確かにデザパタに相当するものがあると状況が変わりそう。
Re: (スコア:0)
関数型言語のブームにはなってないけど、C#、Scala、Dartみたいな形で、オブジェクト指向言語の中に
関数型を取り入れるのは主流になって来てると思う。Javaにも導入されそうだし。
Re: (スコア:0)
Re: (スコア:0)
Java茶でも飲んで落ち着こうか。
関数型の考え方が便利だという認識が浸透してきてるから
他の言語でも似た要素が採用されてるんだよ。
Re: (スコア:0)
何興奮してんだ。
Re: (スコア:0)
どっかのOSがコケたのは、
タブレットの要素を導入したからじゃなくて
デスクトップの要素を切り捨てたからでしょ。
Re: (スコア:0)
スタートメニュー以外何もなくなってないけど?
Re: (スコア:0)
たぶん違うな。
実際触ってみるとわかるけど。
>C#、Scala
それぞれC++、Javaより使いやすい部分があるから、
それらのアッパーコンパチとして使われている。
で、実際に「関数型言語として」それらを使おうとすると、正直言って使いにくいし気持ち悪い。
関数型言語が研究分野では使いやすいのかもしれないが、
UIがあったり、多数の条件分岐があるコードだと
本当に使いにくいしコードも見にくくなる。
関数型としてではなく便利なアッパーコンパチとして使ってやれば、
ソースの行数も減るし、コードも書きやすい
Re: (スコア:0)
だからそれを言ってんだろ。データ処理なんかに使う単なる便利機能としての関数型。
Re: (スコア:0)
元コメは、「って言うか~」の後にまんまオウム返しするタイプですね。
Re: (スコア:0)
「whileのループ周りの再帰コードを関数型で見てみる」ってどういうこと?
Re: (スコア:0)
>多数の条件分岐があるコードだと本当に使いにくいしコードも見にくくなる。
はあ?
君もしかして「Haskellなんて初めて聞いた」って書き込んでた人?