パスワードを忘れた? アカウント作成
2013138 story
プログラミング

最近の人気プログラミング言語は「designer」が創ったもの 90

ストーリー by reo
再現性があると思うか 部門より

eggy 曰く、

Christa Videira Lopez 氏は氏のブログ記事で、90 年以降に登場した人気プログラミング言語の多くは学術系研究者らによって開発されたものではなく、言語設計者 (designer) と呼ばれる、趣味でプログラミングを行う人によって生まれてたものであると論じており、実際にプログラミング言語は 1979 年以降はほとんど進化が見られないとしている (Technology Review の記事本家 /. 記事より) 。

氏によれば、designer の生み出した PHP や JavaScript、Python、Ruby などの言語は使い勝手がよく人気がある一方で、内部の整合性や正確さにこだわりすぎた Fortran や Cobol、Lisp、C、Smalltalk は廃れてしまっており、例外は Microsoft と Sun の開発した .NET と Java だけであるとのこと。だが最近のプログラミング言語のなかでも特に人気のある言語は進化に乏しいと述べている。

氏は、「試験薬の効果が実証されるためには科学的な証拠が必要なように、試験的なソフトウェアの価値を実証するのにも科学的証拠が必要なのではないだろうか?」と疑問を投げかけており、ただ多くの人に受け入れられ、多方面で使用されているというだけでは充分でないと考えているようだ。ソフトウェアの研究は昔ながらに科学とエンジニアリングの囲いの中で (のみ) 行われるべきであり、今のトレンドを逆流させる必要があるとしている。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by s02222 (20350) on 2012年03月09日 13時17分 (#2114394)
    本文にはツッコミ所が多いけど、主張しようと試みた内容は分からなくもない。

    乱暴な言い方をすると、Perl→Rubyみたいなブラッシュアップ的な、既にある概念を組み合わせて使いやすく整理して便利なツールを作るというのはサイエンスじゃないので学者の仕事ではない。もっと根本的に新しいプログラミングパラダイムを提案するとかそういうのが本業。

    なので、一通り概念が出そろったらその手の学者のお仕事が減ってくのは当然。新たなパラダイムが出てこなくなったというのを、プログラミング言語の進化の停滞だと危惧するか、成熟だと納得するかは人それぞれ。
  • 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 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" による工夫は結構してるんですよ。
          親コメント
        • 自分はTDDは好きでは無いのですが(正しさについていいとこ取りを
          しているだけにしか見えない)、テストしやすい様にアプリケーション
          プログラムを作るのは良いと思います。

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

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

          親コメント
    • by Anonymous Coward

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

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

  • by Anonymous Coward on 2012年03月09日 12時40分 (#2114337)

    >designer の生み出した PHP や JavaScript、Python、Ruby などの言語は使い勝手がよく人気がある一方で
    すくなくともPHPとJavaScriptは違うだろ。
    言語仕様的には糞言語の部類に入ると思う。特にPHP。

    >内部の整合性や正確さにこだわりすぎた Fortran や Cobol、Lisp、C、Smalltalk は廃れてしまっており
    Fortran や Cobol、Lisp、Cあたりはスゴイ古い言語だもの。Smalltalkもそんなに新しくは無い。

    普通なら廃れていて当然なほど古いのに、未だに生き残っているのはむしろ成功した証ではないのか?

    >例外は Microsoft と Sun の開発した .NET と Java だけであるとのこと。
    こっちは比較的新しい言語だよね。

    けっきょく「古い言語は徐々に廃れていったのに対し、新しい言語は今も生き残っているのが多い」
    というのは、当たり前の話じゃないの?

    >言語設計者 (designer) と呼ばれる、趣味でプログラミングを行う人によって生まれてたものであると論じており
    かつてはコンピューターは高額な機械であり、使用するには大規模なプロジェクトを起こすしか無かった。
    個人で趣味でコンピューターを占有するなど、夢にも思いつかなかった。
    近年ではそれが個人で所有し、各種コンパイラやツールも無料で利用できるようになった。
    その中に趣味で言語やOSを作ったりする人も出るだろう。

    だから古い言語は大規模なプロジェクトで生まれることが多く、近年では個人が趣味で作る物も出てきたと。
    単にそれだけの話では。

    • by Anonymous Coward on 2012年03月09日 13時07分 (#2114380)

      ラスマス・ラードフ(PHPの父)
      ・問題を解くのが好きなだけで、プログラミングは大嫌いです。
      ・いかにプログラミングを避けるかを考えていたら、コードを再利用するためのツールとしてPHPができました。
      ・僕はホンモノのプログラマではありませんから、やっつけ仕事ですよ。ホンモノのプログラマは、「動いてるように見えるけど、メモリリークだらけじゃないか。直す必要があるかもね」なんて言うでしょう?僕なら、10リクエストごとにApacheを再起動しますね。
      ・僕の発言に怒ってる人がいるようですね。僕がプログラマとしてひどいのは認めますけど、でも、多分あなたたちよりマシだと思いますよ(笑)。

      親コメント
    • by greentea (17971) on 2012年03月09日 12時48分 (#2114350) 日記

      言語仕様的には糞なPHPがこんなに人気ってのが、ある意味、この記事で一番言いたかったことなのかもね。
      言語仕様の美しさなんて誰も気にしていない、とにかく簡単に書けるものを、と。

      # Javascriptは、他に選択の余地がなかったという意味で、別な気がするけど。

      --
      1を聞いて0を知れ!
      親コメント
    • by Anonymous Coward on 2012年03月09日 12時46分 (#2114345)

      「人気がある」と「マニアの評価が高い」はイコールではない

      親コメント
      • by Anonymous Coward

        言ってることそのものは正しいと思うけど、この文脈でなぜその話が出てくるのかさっぱり理解できません。

        • by Anonymous Coward

          元コメ#2114337が、

          >> PHP や JavaScript、Python、Ruby などの言語は使い勝手がよく人気がある
          > PHPとJavaScriptは違うだろ。
          > 言語仕様的には糞言語の部類に入る

          と主張したのに対し、

          #2114345が、

          > 「人気がある」と「マニアの評価が高い」はイコールではない

          と書いてるから、
          「言語仕様的には糞」はマニアの評価であって、
          一般利用者には人気があるよ、と指摘しているんだろ?

          おかしなところは無いと思うよ。
          #2114350でgreentea氏も

          > 言語仕様的には糞なPHPがこんなに人気

          って書いてるし、実際そうだよね。
          「言語仕様的には糞」である事は「使い勝手がよく人気がある」を否定してない。

          • by Anonymous Coward

            「人気がある」は否定していないが
            「使い勝手がよく人気がある」とはいっていない。

            「言語仕様的には糞で使い勝手が悪い」であることは「人気がある」ことを否定していないけれど。

    • .NETを言語と言っちゃってるあたり、各言語ろくすっぽ調べずにブログ書いているんじゃないかと思ってしまう。
      親コメント
      • by Anonymous Coward

        "学術系研究者" と "言語設計者 (designer) " の区別がしっくりこないのもそうだが、".NETを言語と言っちゃってる"と言うのも、わたしも違和感をおぼえます。

        # うまく説明できないので、誰かエライヒト…

        • http://e-words.jp/w/Microsoft202ENET.html
          >>Microsoft .NET
          >>Microsoft社が2000年7月に発表した、ネットワークベースのアプリケーション動作環境を提供するシステム基盤
          親コメント
          • by Anonymous Coward

            フレームワーク、でいいんじゃね?

          • by Anonymous Coward

            説明してほしいのは
            「"学術系研究者" と "言語設計者 (designer) " の区別がしっくりこない」
            の方。

            • 下のgreentea氏のコメント「関数型言語の時代はくるのか」がその回答に近いのでは?
              親コメント
            • by Anonymous Coward on 2012年03月09日 18時26分 (#2114599)

              > Back in the 50s, 60s and 70s, programming languages were a BigDeal, with large investments, upfront planning, and big drama on standardization committees (Ada was the epitome of that model). Things have changed dramatically during the 80s. Since the 90s, a considerable percentage of new languages that ended up being very popular were designed by lone programmers, some of them kids with no research inclination, some as a side hobby, and without any grand goal other than either making some routine activities easier or for plain hacking fun. Examples:

              学術系研究者なんてどっからでてきたのやら
              英語力に問題のある本家のタレコミ人のせいか

              研究者という言葉は、今日び誰でも言語が作れるようになったという話の引き合いに出されているだけだ

              > There is a lot of fun in designing new languages, but this fun is not an exclusive right of researchers with, or working towards, Ph.Ds. Given all the knowledge about programming languages these days, anyone can do it. And many do.

              んで、プログラミング言語研究に未来はあるのか?という話になる

              親コメント
    • by Anonymous Coward on 2012年03月09日 14時24分 (#2114456)
      >>例外は Microsoft と Sun の開発した .NET と Java だけであるとのこと。
      >こっちは比較的新しい言語だよね。
      .NetってのはたぶんC#なんだろうなと思うけど、
      C#もJavaもヘルスバーグだのゴスリングだのっつー一人のデザイナが自分の趣味全開で設計した言語だよねw
      親コメント
    • by Anonymous Coward on 2012年03月10日 13時10分 (#2114996)
      俺も言語設計が趣味だから言うけどWeb系でPHPユーザーが多いのがそんなに妬ましいの?
      PHPが利用されてるような分野では文法構造も実行時のメモリの扱いもユーザーは
      「気にしなくていい」って言ってほしいのよ。優れた言語仕様なんて求められてないの。
      サンプルをコピペして動きゃいいのよ。概念なんて求められてない。

      PHP的には「カーチャン」が「ホームページ」にアクセスカウンター付けるのに「文法ガー」とか
      「変数の宣言とメモリの確保ガー」とか「変数の寿命やメモリの解放ガー」とか意味不明な説明
      読みたくないし、理解したくないってのが原点なわけ。
      そこで客(ユーザー)つかんで進んで行ってる言語なんだから。
      「メモリリークが起きる?プロセス再起動すれば良いじゃん。ページ表示する度に。」ってなもんよ。

      そこに「PHPは言語仕様的には糞言語の部類に入ると思う(キリッ」ってやっても「人気のプログラミング言語」
      って概念には屁ほどの価値も無いわけ。
      「いかにPHPが文法的に劣った言語か」なんて語ってもPHPユーザー層には意味不明だと思うし。

      言語の設計が「使い勝手」を決めるのは確かだけど、ユーザーの求める使い勝手は「いい言語仕様」ではなく
      「俺(ユーザー)が面倒じゃない仕様」な世界もあって、PHPはそこでニーズに対応出来たってだけの話なのよ。
      だからPHPがほめられると文法仕様の糞さを理由に腐すのは勘弁してほしい。人気への妬みにしか見えないから。
      親コメント
    • by Anonymous Coward

      そもそも人気があるとか廃れたとか、何を基準にして話しているのだろうか。
      個人的な感覚では、Python・RubyよりもCの方が仕事は多い感じですらあるのだけれど。
      それとも人気だけあればOKなのか?

      • by Anonymous Coward

        ヒント:スラド民にとって組み込み開発は開発ではない。

  • 学術系研究者 vs. 言語設計者という軸の中で、
    C# を作った Anders Hejlsberg や JavaScript の Brendan Eich をどちらに置くのかはわからないけれど、
    彼らは多分同じ側なのでなんかおかしい。

    あと、PHP はデザインしてるとは思えない

    • by Anonymous Coward

      > あと、PHP はデザインしてるとは思えない
      さらにテストもしてないことがバレたし。まさにコードがすべて

  • by denchu (6847) on 2012年03月09日 13時27分 (#2114401)

    だが最近のプログラミング言語のなかでも特に人気のある言語は進化に乏しいと述べている。

    そりゃ人気のある言語ほど後方互換を保ったまま進めないといけないですから…

    後方互換をばっさり捨てて言語を設計すれば劇的な進化はするでしょうけど、それはもはや別の言語となっているだけなんじゃないかと。

    • by Anonymous Coward

      後方互換をばっさり捨てて言語を設計すれば劇的な進化はするでしょうけど、それはもはや別の言語となっているだけなんじゃないかと。

      Perl6のことかー!

      # え?Perlに人気なんてないって?

  • by Anonymous Coward on 2012年03月09日 12時43分 (#2114340)

    「内部の整合性や正確さにこだわりすぎた」例として C 言語が挙げられているけど、そういうイメージは全くない。
    むしろ手軽に事を運ぼうとしてグダグダになった感

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

    メタすぎてメタメタ。
    議論を進めても、なにも得ることはないと思う

    四の五のいうまえに、コード書けや。

    #自戒

  • by Anonymous Coward on 2012年03月09日 12時43分 (#2114339)

    どういう意味?整合性が無かったりや正確でない言語って自然言語じゃないの?
    抽象の度合いとか型付けとかの意味?

  • by Anonymous Coward on 2012年03月09日 13時02分 (#2114364)

    ゲームもPCも言語も小難しいままじゃ規模の拡大に追いつけない

  • by Anonymous Coward on 2012年03月09日 13時02分 (#2114367)

    新しい概念を実現するのならともかく、既存の言語とほとんど同じ仕様の新しい言語はもういらないよ。
    煩雑すぎる。

    という意図が透けて見える、ような気がする。

  • by Anonymous Coward on 2012年03月09日 13時03分 (#2114369)

    プログラミング言語を設計するのは少なくとも何らかの知性がないとできないよね。
    つまりこれもintelligentなdesignerの計画だったんだよ!

    • by TarZ (28055) on 2012年03月09日 13時52分 (#2114426) 日記

      真に知性が設計に関与したなら、死屍累々の言語の歴史を説明できない。最初から完璧な言語が1つあるだけだったはずではないか。
      # PL/I ? あいつは体躯がでかくなりすぎ、小惑星の衝突で死んだ!

      現実には、環境やニーズに応じて細かい差異のあるさまざまな言語がある。つまり、使われ続け、かつニーズにうまく適応し続けられた言語以外が淘汰されただけな気もする!

      親コメント
    • by ken-1 (4041) on 2012年03月09日 13時52分 (#2114425)
      ただしbeer wareを創ったのは別の存在です。
      親コメント
  • by Anonymous Coward on 2012年03月09日 15時36分 (#2114505)

    要するにどの分野のプログラミングが目立ってるかってだけの話なのに。

typodupeerror

皆さんもソースを読むときに、行と行の間を読むような気持ちで見てほしい -- あるハッカー

読み込み中...