パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

最近の人気プログラミング言語は「designer」が創ったもの」記事へのコメント

  • by greentea (17971) on 2012年03月09日 13時14分 (#2114390) 日記

    大学で、関数型言語の研究をしている方と話す機会があったとき、
    「関数型言語が優れていることは分かった。が、関数型言語みたいな厄介な言語を、君らみたいなコンピュータサイエンスをがっつり学んだ人でなく、そこらへんの人に使うことなんてできるのか」といったようなことを聞いてみたのですが。

    そしたら「今の関数型言語が素人に向いていないのは、関数型言語そのものの本質的な欠点じゃなく、アカデミックに近い人向けの使い勝手の悪い言語しか作られていないからだ。Rubyのような、使い勝手重視の関数型言語が必要」らしいです。

    まさに、designerが作った言語が必要、とのことです。

    その方が、関数型言語を知り尽くしている故にそのように感じるのか、頭がよすぎる故に関数型言語の難しさが分からないのか、難しいところではありますが。
    Ruby, Python, Scalaなどの言語にも関数型の機能は一部取り入れられているし、マルチスレッドとも相性いいらしいし、もしかしたらいずれ、使いやすい関数型言語というものが現れて、他の人気言語と肩を並べるなんてこともあるのかな、と思ったり思わなかったり。

    --
    1を聞いて0を知れ!
    • by SteppingWind (2654) on 2012年03月09日 22時14分 (#2114727)

      業務系のプログラムを見てきた経験によると, ボリュームゾーンのプログラマは関数の概念を理解していません. 手続き型言語での関数については, いわゆる関数ではなく, 言語に備わった命令として理解しています. おそらくは, 関数に代表される, 操作やデータの抽象化という所に大きな壁があるのだと思われます.

      ですから言語としての出来・不出来とは関係なく, コピペと置換のみでプログラム構築が可能でない限り, 広く使われることはないでしょう.

      親コメント
      • by Anonymous Coward

        そしてそういったコードは品質悪く保守しづらいので
        今のボリュームゾーンのプログラマを全員切っても生産性が変わらないような
        開発手法(あえて言語に限定しない)が求められてるのかなぁ、と
        割と思います。

        誰でも出きるようにというより、個人の品質と生産性を最大化するような方向。

    • by Anonymous Coward on 2012年03月09日 15時04分 (#2114482)

      関数型言語、特に純粋で遅延評価なものは数学のセンスを要求しますので、今より普及するでしょうが万人向けになることはないでしょう。
      ある教員によると「プログラミング入門コースでは、再帰と高階関数で1/3ずつくらい脱落して、継続や遅延評価になると大半が脱落する」らしいです。
      もっともその後でそれなりに身につけるわけですが。

      Schemeでいいんじゃね?という意見も出ていますが、SchemeはHaskellよりはるかにCに近いですので、いくはないです。

      親コメント
    • 自分は Haskell を独学て覚えてからもう5年以上遊んでいますが、言語仕様が難しいと感じたことはありませんね。Haskell で難しいと感じたのはデバッグで、遅延評価なので手続き型言語のように途中でブレイクして変数をインスペクトする、というのが非常にやりにくいのです。C/C++/Java/C# に比べてバグの数は顕著に減りましたが、ひとつのバグに費やす時間は増えました。

      言語仕様の使いやすさでいえば、すでに Haskell は既存の言語をはるかに上回ると自分は考えています。 たとえば Ruby が使いやすいという人は、イテレータ(笑)があるからとか、すべてがオブジェクトである(もちろん嘘)からとか、楽しい(具体的にどこ?)からとか、よくわからない理由ばかり挙げているように思います。block と Proc と lambda と method を使い分けなければならない言語のどこが使いやすいのか、理解に苦しみます。関数型が流行らない理由は使い勝手ではないように思います。

      >もしかしたらいずれ、使いやすい関数型言語というものが現れて、他の人気言語と肩を並べるなんてこともあるのかな、と思ったり思わなかったり。

      F# が出た時に、これが流行らなかったら関数型はもう流行ることはないだろうな、と思いましたがやっぱり流行らなかった……。残念です。
      親コメント
      • おそらく、重要なのは「言語仕様の使いやすさ」ではなく、「言語の使いやすさ」でしょう。
        Haskell が威力を発揮するのは、おそらくメタプログラミングとかでしょうが、そんなのを必要とする場面というのは、めったにない。
        なので、blockやProcやlambdaやmethod を使い分けないといけなくて困ることなんて、ほとんどない。

        普通のことが普通に(見慣れた構文で)書けて、それでいてちょっときれいに書ける気がして、その一方でダーティな書き方も許してもらえる。
        その辺のころあいをうまくとるのが、designer と言っているゆえん。

        一般に原理主義に走ると、だいたい使いにくくなる。
        例えば pure LISP とか。

        親コメント
        • 標準では Haskell にはメタプログラミングといえる機能はありません。意外に思われるかもしれませんが、Haskell や OCaml、F# といった関数型言語が解決しようする問題は現在主流の言語と同じものです。例えば動的な Web ページを構成したり、データベースを操作したり、XML をパースしたりといったどこにでもある問題をスマートに解決しようとするのが関数型言語で、関数型言語に向かないのはハードを直接叩く低レベルプログラミングや極限まで実行性能やメモリ効率を求められるケースだけです。F# は .NET Framework をフルに呼び出せるという点でも C# と同様の立ち位置にいることもわかります。Java や Ruby が活躍できる場所では関数型言語も活躍できるはずなんです。

          ちなみに、潔癖で知られる Haskell にも使い勝手のために取り込んだダーティな部分はたくさんあります。例えば数学の漸化式 f(n+1) = f(n) + k みたいに書くための n+1 パターン(ダーティすぎて最新版で廃止)。ありがちな定義を自動で補完する deriving やフィールドラベル。数学の集合っぽく書くためだけのリスト内包表記。実は関数型言語も使い勝手のために "designer" による工夫は結構してるんですよ。
          親コメント
          • by Anonymous Coward

            私はHaskellerとしてはまだ駆け出しですが、今のところ同じ感想を抱いています。
            演算子の表現として採用している文字が、数式という見慣れたものを比較的見慣れた形で記述出来るように選ばれているようなので、先入観の無い人にとっては他の言語より書きやすいのでは?とすら思います。

        • 自分はTDDは好きでは無いのですが(正しさについていいとこ取りを
          しているだけにしか見えない)、テストしやすい様にアプリケーション
          プログラムを作るのは良いと思います。

          そうすると、
          ・変数はパブリックの方がテストしやすい。
          ・無名関数なんてもってのほか
          ・至る所にデバック用のログ出力を置きたいので、イテレータなんか嫌
          ・RDBは組み込みで接続できた方が、不具合箇所が減る
          ・制御を軸としないで、HTMLストリームを軸として見た方がテストが楽
          ・抽象化もテストの天敵
          となります。

          あっ。よく見るとPHPではないか!

          親コメント
        • by Anonymous Coward

          > その辺のころあいをうまくとるのが、designer と言っているゆえん。

          本人のブログにはdesignerなんて言葉は出てこないんだが…なんでみんな思い込みで書く

          > 一般に原理主義に走ると、だいたい使いにくくなる。
          > 例えば pure LISP とか。

          なるほど君はpure lispを実用プログラミングに用いた経験があるのか
          学問や産業どころか、趣味のプログラマですらないワナビーなんじゃないの?

          • by Anonymous Coward

            おまえは誰と戦ってるんだ?

    • by Anonymous Coward

      使い勝手重視の関数型言語

      変数があったりループがあったり…って、それってSchemeでいいんじゃね?

      • by Anonymous Coward

        こういう人は大体がカッコつけすぎなんですよ

ナニゲにアレゲなのは、ナニゲなアレゲ -- アレゲ研究家

処理中...