アカウント名:
パスワード:
大学で、関数型言語の研究をしている方と話す機会があったとき、「関数型言語が優れていることは分かった。が、関数型言語みたいな厄介な言語を、君らみたいなコンピュータサイエンスをがっつり学んだ人でなく、そこらへんの人に使うことなんてできるのか」といったようなことを聞いてみたのですが。
そしたら「今の関数型言語が素人に向いていないのは、関数型言語そのものの本質的な欠点じゃなく、アカデミックに近い人向けの使い勝手の悪い言語しか作られていないからだ。Rubyのような、使い勝手重視の関数型言語が必要」らしいです。
おそらく、重要なのは「言語仕様の使いやすさ」ではなく、「言語の使いやすさ」でしょう。Haskell が威力を発揮するのは、おそらくメタプログラミングとかでしょうが、そんなのを必要とする場面というのは、めったにない。なので、blockやProcやlambdaやmethod を使い分けないといけなくて困ることなんて、ほとんどない。
普通のことが普通に(見慣れた構文で)書けて、それでいてちょっときれいに書ける気がして、その一方でダーティな書き方も許してもらえる。その辺のころあいをうまくとるのが、designer と言っているゆえん。
一般に原理主義に走ると、だいたい使いにくくなる。例えば pure LISP とか。
私はHaskellerとしてはまだ駆け出しですが、今のところ同じ感想を抱いています。演算子の表現として採用している文字が、数式という見慣れたものを比較的見慣れた形で記述出来るように選ばれているようなので、先入観の無い人にとっては他の言語より書きやすいのでは?とすら思います。
自分はTDDは好きでは無いのですが(正しさについていいとこ取りをしているだけにしか見えない)、テストしやすい様にアプリケーションプログラムを作るのは良いと思います。
そうすると、・変数はパブリックの方がテストしやすい。・無名関数なんてもってのほか・至る所にデバック用のログ出力を置きたいので、イテレータなんか嫌・RDBは組み込みで接続できた方が、不具合箇所が減る・制御を軸としないで、HTMLストリームを軸として見た方がテストが楽・抽象化もテストの天敵となります。
あっ。よく見るとPHPではないか!
> その辺のころあいをうまくとるのが、designer と言っているゆえん。
本人のブログにはdesignerなんて言葉は出てこないんだが…なんでみんな思い込みで書く
> 一般に原理主義に走ると、だいたい使いにくくなる。> 例えば pure LISP とか。
なるほど君はpure lispを実用プログラミングに用いた経験があるのか学問や産業どころか、趣味のプログラマですらないワナビーなんじゃないの?
おまえは誰と戦ってるんだ?
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
私は悩みをリストアップし始めたが、そのあまりの長さにいやけがさし、何も考えないことにした。-- Robert C. Pike
関数型言語の時代はくるのか (スコア:4, 興味深い)
大学で、関数型言語の研究をしている方と話す機会があったとき、
「関数型言語が優れていることは分かった。が、関数型言語みたいな厄介な言語を、君らみたいなコンピュータサイエンスをがっつり学んだ人でなく、そこらへんの人に使うことなんてできるのか」といったようなことを聞いてみたのですが。
そしたら「今の関数型言語が素人に向いていないのは、関数型言語そのものの本質的な欠点じゃなく、アカデミックに近い人向けの使い勝手の悪い言語しか作られていないからだ。Rubyのような、使い勝手重視の関数型言語が必要」らしいです。
1を聞いて0を知れ!
Re:関数型言語の時代はくるのか (スコア:2)
言語仕様の使いやすさでいえば、すでに Haskell は既存の言語をはるかに上回ると自分は考えています。 たとえば Ruby が使いやすいという人は、イテレータ(笑)があるからとか、すべてがオブジェクトである(もちろん嘘)からとか、楽しい(具体的にどこ?)からとか、よくわからない理由ばかり挙げているように思います。block と Proc と lambda と method を使い分けなければならない言語のどこが使いやすいのか、理解に苦しみます。関数型が流行らない理由は使い勝手ではないように思います。
>もしかしたらいずれ、使いやすい関数型言語というものが現れて、他の人気言語と肩を並べるなんてこともあるのかな、と思ったり思わなかったり。
F# が出た時に、これが流行らなかったら関数型はもう流行ることはないだろうな、と思いましたがやっぱり流行らなかった……。残念です。
Re:関数型言語の時代はくるのか (スコア:1)
おそらく、重要なのは「言語仕様の使いやすさ」ではなく、「言語の使いやすさ」でしょう。
Haskell が威力を発揮するのは、おそらくメタプログラミングとかでしょうが、そんなのを必要とする場面というのは、めったにない。
なので、blockやProcやlambdaやmethod を使い分けないといけなくて困ることなんて、ほとんどない。
普通のことが普通に(見慣れた構文で)書けて、それでいてちょっときれいに書ける気がして、その一方でダーティな書き方も許してもらえる。
その辺のころあいをうまくとるのが、designer と言っているゆえん。
一般に原理主義に走ると、だいたい使いにくくなる。
例えば pure LISP とか。
Re:関数型言語の時代はくるのか (スコア:2)
ちなみに、潔癖で知られる Haskell にも使い勝手のために取り込んだダーティな部分はたくさんあります。例えば数学の漸化式 f(n+1) = f(n) + k みたいに書くための n+1 パターン(ダーティすぎて最新版で廃止)。ありがちな定義を自動で補完する deriving やフィールドラベル。数学の集合っぽく書くためだけのリスト内包表記。実は関数型言語も使い勝手のために "designer" による工夫は結構してるんですよ。
Re: (スコア:0)
私はHaskellerとしてはまだ駆け出しですが、今のところ同じ感想を抱いています。
演算子の表現として採用している文字が、数式という見慣れたものを比較的見慣れた形で記述出来るように選ばれているようなので、先入観の無い人にとっては他の言語より書きやすいのでは?とすら思います。
Re:関数型言語の時代はくるのか (スコア:1)
自分はTDDは好きでは無いのですが(正しさについていいとこ取りを
しているだけにしか見えない)、テストしやすい様にアプリケーション
プログラムを作るのは良いと思います。
そうすると、
・変数はパブリックの方がテストしやすい。
・無名関数なんてもってのほか
・至る所にデバック用のログ出力を置きたいので、イテレータなんか嫌
・RDBは組み込みで接続できた方が、不具合箇所が減る
・制御を軸としないで、HTMLストリームを軸として見た方がテストが楽
・抽象化もテストの天敵
となります。
あっ。よく見るとPHPではないか!
Re: (スコア:0)
> その辺のころあいをうまくとるのが、designer と言っているゆえん。
本人のブログにはdesignerなんて言葉は出てこないんだが…なんでみんな思い込みで書く
> 一般に原理主義に走ると、だいたい使いにくくなる。
> 例えば pure LISP とか。
なるほど君はpure lispを実用プログラミングに用いた経験があるのか
学問や産業どころか、趣味のプログラマですらないワナビーなんじゃないの?
Re: (スコア:0)
おまえは誰と戦ってるんだ?