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

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

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

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

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

      言語仕様の使いやすさでいえば、すでに Haskell は既存の言語をはるかに上回ると自分は考えています。 たとえば Ruby が使いやすいという人は、イテレータ(笑)があるからとか、すべてが
      • おそらく、重要なのは「言語仕様の使いやすさ」ではなく、「言語の使いやすさ」でしょう。
        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

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

ハッカーとクラッカーの違い。大してないと思います -- あるアレゲ

処理中...