最近の人気プログラミング言語は「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 だけであるとのこと。だが最近のプログラミング言語のなかでも特に人気のある言語は進化に乏しいと述べている。
氏は、「試験薬の効果が実証されるためには科学的な証拠が必要なように、試験的なソフトウェアの価値を実証するのにも科学的証拠が必要なのではないだろうか?」と疑問を投げかけており、ただ多くの人に受け入れられ、多方面で使用されているというだけでは充分でないと考えているようだ。ソフトウェアの研究は昔ながらに科学とエンジニアリングの囲いの中で (のみ) 行われるべきであり、今のトレンドを逆流させる必要があるとしている。
サイエンスじゃないから (スコア:5, 興味深い)
乱暴な言い方をすると、Perl→Rubyみたいなブラッシュアップ的な、既にある概念を組み合わせて使いやすく整理して便利なツールを作るというのはサイエンスじゃないので学者の仕事ではない。もっと根本的に新しいプログラミングパラダイムを提案するとかそういうのが本業。
なので、一通り概念が出そろったらその手の学者のお仕事が減ってくのは当然。新たなパラダイムが出てこなくなったというのを、プログラミング言語の進化の停滞だと危惧するか、成熟だと納得するかは人それぞれ。
Re:サイエンスじゃないから (スコア:1)
ほぼ同意。
既にプログラミング言語というものがアカデミックで研究する時代ではないと思う。
ちなみにperlそのものがC, awk, sedの折衷言語だね。
Re:サイエンスじゃないから (スコア:1)
関数型言語の時代はくるのか (スコア:4, 興味深い)
大学で、関数型言語の研究をしている方と話す機会があったとき、
「関数型言語が優れていることは分かった。が、関数型言語みたいな厄介な言語を、君らみたいなコンピュータサイエンスをがっつり学んだ人でなく、そこらへんの人に使うことなんてできるのか」といったようなことを聞いてみたのですが。
そしたら「今の関数型言語が素人に向いていないのは、関数型言語そのものの本質的な欠点じゃなく、アカデミックに近い人向けの使い勝手の悪い言語しか作られていないからだ。Rubyのような、使い勝手重視の関数型言語が必要」らしいです。
まさに、designerが作った言語が必要、とのことです。
その方が、関数型言語を知り尽くしている故にそのように感じるのか、頭がよすぎる故に関数型言語の難しさが分からないのか、難しいところではありますが。
Ruby, Python, Scalaなどの言語にも関数型の機能は一部取り入れられているし、マルチスレッドとも相性いいらしいし、もしかしたらいずれ、使いやすい関数型言語というものが現れて、他の人気言語と肩を並べるなんてこともあるのかな、と思ったり思わなかったり。
1を聞いて0を知れ!
Re:関数型言語の時代はくるのか (スコア:3, 参考になる)
業務系のプログラムを見てきた経験によると, ボリュームゾーンのプログラマは関数の概念を理解していません. 手続き型言語での関数については, いわゆる関数ではなく, 言語に備わった命令として理解しています. おそらくは, 関数に代表される, 操作やデータの抽象化という所に大きな壁があるのだと思われます.
ですから言語としての出来・不出来とは関係なく, コピペと置換のみでプログラム構築が可能でない限り, 広く使われることはないでしょう.
Re:関数型言語の時代はくるのか (スコア:2, 興味深い)
関数型言語、特に純粋で遅延評価なものは数学のセンスを要求しますので、今より普及するでしょうが万人向けになることはないでしょう。
ある教員によると「プログラミング入門コースでは、再帰と高階関数で1/3ずつくらい脱落して、継続や遅延評価になると大半が脱落する」らしいです。
もっともその後でそれなりに身につけるわけですが。
Schemeでいいんじゃね?という意見も出ていますが、SchemeはHaskellよりはるかにCに近いですので、いくはないです。
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:関数型言語の時代はくるのか (スコア:1)
自分はTDDは好きでは無いのですが(正しさについていいとこ取りを
しているだけにしか見えない)、テストしやすい様にアプリケーション
プログラムを作るのは良いと思います。
そうすると、
・変数はパブリックの方がテストしやすい。
・無名関数なんてもってのほか
・至る所にデバック用のログ出力を置きたいので、イテレータなんか嫌
・RDBは組み込みで接続できた方が、不具合箇所が減る
・制御を軸としないで、HTMLストリームを軸として見た方がテストが楽
・抽象化もテストの天敵
となります。
あっ。よく見るとPHPではないか!
Re: (スコア:0)
使い勝手重視の関数型言語
変数があったりループがあったり…って、それってSchemeでいいんじゃね?
えー、PHPやJavaScript? (スコア:3, 興味深い)
>designer の生み出した PHP や JavaScript、Python、Ruby などの言語は使い勝手がよく人気がある一方で
すくなくともPHPとJavaScriptは違うだろ。
言語仕様的には糞言語の部類に入ると思う。特にPHP。
>内部の整合性や正確さにこだわりすぎた Fortran や Cobol、Lisp、C、Smalltalk は廃れてしまっており
Fortran や Cobol、Lisp、Cあたりはスゴイ古い言語だもの。Smalltalkもそんなに新しくは無い。
普通なら廃れていて当然なほど古いのに、未だに生き残っているのはむしろ成功した証ではないのか?
>例外は Microsoft と Sun の開発した .NET と Java だけであるとのこと。
こっちは比較的新しい言語だよね。
けっきょく「古い言語は徐々に廃れていったのに対し、新しい言語は今も生き残っているのが多い」
というのは、当たり前の話じゃないの?
>言語設計者 (designer) と呼ばれる、趣味でプログラミングを行う人によって生まれてたものであると論じており
かつてはコンピューターは高額な機械であり、使用するには大規模なプロジェクトを起こすしか無かった。
個人で趣味でコンピューターを占有するなど、夢にも思いつかなかった。
近年ではそれが個人で所有し、各種コンパイラやツールも無料で利用できるようになった。
その中に趣味で言語やOSを作ったりする人も出るだろう。
だから古い言語は大規模なプロジェクトで生まれることが多く、近年では個人が趣味で作る物も出てきたと。
単にそれだけの話では。
Re:えー、PHPやJavaScript? (スコア:5, 参考になる)
ラスマス・ラードフ(PHPの父)
・問題を解くのが好きなだけで、プログラミングは大嫌いです。
・いかにプログラミングを避けるかを考えていたら、コードを再利用するためのツールとしてPHPができました。
・僕はホンモノのプログラマではありませんから、やっつけ仕事ですよ。ホンモノのプログラマは、「動いてるように見えるけど、メモリリークだらけじゃないか。直す必要があるかもね」なんて言うでしょう?僕なら、10リクエストごとにApacheを再起動しますね。
・僕の発言に怒ってる人がいるようですね。僕がプログラマとしてひどいのは認めますけど、でも、多分あなたたちよりマシだと思いますよ(笑)。
Re:えー、PHPやJavaScript? (スコア:3, 参考になる)
言語仕様的には糞なPHPがこんなに人気ってのが、ある意味、この記事で一番言いたかったことなのかもね。
言語仕様の美しさなんて誰も気にしていない、とにかく簡単に書けるものを、と。
# Javascriptは、他に選択の余地がなかったという意味で、別な気がするけど。
1を聞いて0を知れ!
Re:えー、PHPやJavaScript? (スコア:1)
「人気がある」と「マニアの評価が高い」はイコールではない
Re: (スコア:0)
言ってることそのものは正しいと思うけど、この文脈でなぜその話が出てくるのかさっぱり理解できません。
Re: (スコア:0)
元コメ#2114337が、
>> PHP や JavaScript、Python、Ruby などの言語は使い勝手がよく人気がある
> PHPとJavaScriptは違うだろ。
> 言語仕様的には糞言語の部類に入る
と主張したのに対し、
#2114345が、
> 「人気がある」と「マニアの評価が高い」はイコールではない
と書いてるから、
「言語仕様的には糞」はマニアの評価であって、
一般利用者には人気があるよ、と指摘しているんだろ?
おかしなところは無いと思うよ。
#2114350でgreentea氏も
> 言語仕様的には糞なPHPがこんなに人気
って書いてるし、実際そうだよね。
「言語仕様的には糞」である事は「使い勝手がよく人気がある」を否定してない。
Re: (スコア:0)
「人気がある」は否定していないが
「使い勝手がよく人気がある」とはいっていない。
「言語仕様的には糞で使い勝手が悪い」であることは「人気がある」ことを否定していないけれど。
Re:えー、PHPやJavaScript? (スコア:1)
Re: (スコア:0)
"学術系研究者" と "言語設計者 (designer) " の区別がしっくりこないのもそうだが、".NETを言語と言っちゃってる"と言うのも、わたしも違和感をおぼえます。
# うまく説明できないので、誰かエライヒト…
Re:えー、PHPやJavaScript? (スコア:1)
>>Microsoft .NET
>>Microsoft社が2000年7月に発表した、ネットワークベースのアプリケーション動作環境を提供するシステム基盤
Re: (スコア:0)
フレームワーク、でいいんじゃね?
Re: (スコア:0)
説明してほしいのは
「"学術系研究者" と "言語設計者 (designer) " の区別がしっくりこない」
の方。
Re:えー、PHPやJavaScript? (スコア:1)
Re:えー、PHPやJavaScript? (スコア:1)
> 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.
んで、プログラミング言語研究に未来はあるのか?という話になる
Re:えー、PHPやJavaScript? (スコア:1)
>こっちは比較的新しい言語だよね。
.NetってのはたぶんC#なんだろうなと思うけど、
C#もJavaもヘルスバーグだのゴスリングだのっつー一人のデザイナが自分の趣味全開で設計した言語だよねw
Re:えー、PHPやJavaScript? (スコア:1)
PHPが利用されてるような分野では文法構造も実行時のメモリの扱いもユーザーは
「気にしなくていい」って言ってほしいのよ。優れた言語仕様なんて求められてないの。
サンプルをコピペして動きゃいいのよ。概念なんて求められてない。
PHP的には「カーチャン」が「ホームページ」にアクセスカウンター付けるのに「文法ガー」とか
「変数の宣言とメモリの確保ガー」とか「変数の寿命やメモリの解放ガー」とか意味不明な説明
読みたくないし、理解したくないってのが原点なわけ。
そこで客(ユーザー)つかんで進んで行ってる言語なんだから。
「メモリリークが起きる?プロセス再起動すれば良いじゃん。ページ表示する度に。」ってなもんよ。
そこに「PHPは言語仕様的には糞言語の部類に入ると思う(キリッ」ってやっても「人気のプログラミング言語」
って概念には屁ほどの価値も無いわけ。
「いかにPHPが文法的に劣った言語か」なんて語ってもPHPユーザー層には意味不明だと思うし。
言語の設計が「使い勝手」を決めるのは確かだけど、ユーザーの求める使い勝手は「いい言語仕様」ではなく
「俺(ユーザー)が面倒じゃない仕様」な世界もあって、PHPはそこでニーズに対応出来たってだけの話なのよ。
だからPHPがほめられると文法仕様の糞さを理由に腐すのは勘弁してほしい。人気への妬みにしか見えないから。
Re: (スコア:0)
そもそも人気があるとか廃れたとか、何を基準にして話しているのだろうか。
個人的な感覚では、Python・RubyよりもCの方が仕事は多い感じですらあるのだけれど。
それとも人気だけあればOKなのか?
Re: (スコア:0)
ヒント:スラド民にとって組み込み開発は開発ではない。
Re:えー、PHPやJavaScript? (スコア:2)
/.j に限らずどこにでもいるけどねw
Re:えー、PHPやJavaScript? (スコア:2)
自分が気に入ったものかどうかは別として全ての90%はクソ。
Re:えー、PHPやJavaScript? (スコア:1)
>まるで Windows が人気があって流行っている素晴らしいOSであるかのようじゃないか。
事実そうだが。。。
C# と JavaScript (スコア:2)
学術系研究者 vs. 言語設計者という軸の中で、
C# を作った Anders Hejlsberg や JavaScript の Brendan Eich をどちらに置くのかはわからないけれど、
彼らは多分同じ側なのでなんかおかしい。
あと、PHP はデザインしてるとは思えない
Re: (スコア:0)
> あと、PHP はデザインしてるとは思えない
さらにテストもしてないことがバレたし。まさにコードがすべて
進化に乏しい? (スコア:2)
だが最近のプログラミング言語のなかでも特に人気のある言語は進化に乏しいと述べている。
そりゃ人気のある言語ほど後方互換を保ったまま進めないといけないですから…
後方互換をばっさり捨てて言語を設計すれば劇的な進化はするでしょうけど、それはもはや別の言語となっているだけなんじゃないかと。
Re: (スコア:0)
後方互換をばっさり捨てて言語を設計すれば劇的な進化はするでしょうけど、それはもはや別の言語となっているだけなんじゃないかと。
Perl6のことかー!
# え?Perlに人気なんてないって?
そういうイメージは全くない (スコア:1)
「内部の整合性や正確さにこだわりすぎた」例として C 言語が挙げられているけど、そういうイメージは全くない。
むしろ手軽に事を運ぼうとしてグダグダになった感
Re:そういうイメージは全くない (スコア:3, すばらしい洞察)
こんなメタな議論が (スコア:1)
メタすぎてメタメタ。
議論を進めても、なにも得ることはないと思う
四の五のいうまえに、コード書けや。
#自戒
内部の整合性や正確さにこだわりすぎた言語 (スコア:0)
どういう意味?整合性が無かったりや正確でない言語って自然言語じゃないの?
抽象の度合いとか型付けとかの意味?
Re:内部の整合性や正確さにこだわりすぎた言語 (スコア:1)
「PHPは糞とか文法がどーたら言う言語マニアっているじゃん?
うぜぇからあいつら無視して現実の商売しようぜ!」
ってのが現状よ、って話。
カジュアル化の波には逆らえない (スコア:0)
ゲームもPCも言語も小難しいままじゃ規模の拡大に追いつけない
増やしてほしくない (スコア:0)
新しい概念を実現するのならともかく、既存の言語とほとんど同じ仕様の新しい言語はもういらないよ。
煩雑すぎる。
という意図が透けて見える、ような気がする。
ΩΩ Ω (スコア:0)
プログラミング言語を設計するのは少なくとも何らかの知性がないとできないよね。
つまりこれもintelligentなdesignerの計画だったんだよ!
On the Origin of Languages (スコア:3)
真に知性が設計に関与したなら、死屍累々の言語の歴史を説明できない。最初から完璧な言語が1つあるだけだったはずではないか。
# PL/I ? あいつは体躯がでかくなりすぎ、小惑星の衝突で死んだ!
現実には、環境やニーズに応じて細かい差異のあるさまざまな言語がある。つまり、使われ続け、かつニーズにうまく適応し続けられた言語以外が淘汰されただけな気もする!
Re:ΩΩ Ω (スコア:1)
誰かPHPでカーネル書いてー (スコア:0)
要するにどの分野のプログラミングが目立ってるかってだけの話なのに。
Re:なんかもう書きたい事だけ書いてやる (スコア:3)
いいたいことは分かります。
オッサンプログラマである私の言いたいことはただ一つ。
「全く同じことをオブジェクト指向に対して言っているコメントを20年前に見た」
------
Yoshige
Re:なんかもう書きたい事だけ書いてやる (スコア:2)
いやあ、私なんかにはとても思いつかないですね。
ただ、昔のオブジェクト指向もそういう状態だったので、
「きっとそのうちキラーアプリケーションが見つかるんじゃないかな」と
何の根拠もなく楽観視しているだけです。
私の場合、大学の同じ研究室の友人が Smalltalk を使っていたので、
「オブジェクト指向」という言葉になじみはありましたが、
世間では、まだ、「何それおいしいの?」状態だったように思います。
ですから当然、「GUIがオブジェクト指向のキラーアプリケーション」という認識も一般的ではありませんでした。
Windows 以前の当時の一般プログラマにとって、GUIとは X Window System か Macintosh ぐらいで、
そのどちらも、オブジェクト指向とまだ結びついていなかったように思います。
(私の記憶違いかもしれませんが)
でも、いつの間にかオブジェクト指向が当たり前になっており、
その頃になって、オブジェクト指向のキラーアプリケーションはGUIだった、と
言われるようになった印象です。
個人的には、関数型言語がオブジェクト指向の後継になるとまでは思っていませんが、
ある一定の分野を既存言語から奪うことはありそうに思っています。
凡庸なオッサンプログラマである私は、
きっと今回も、関数型言語やその他のパラダイムが一般的になってから
「~のキラーアプリケーションは~だった」と気づくのだろうな、と思っています。
------
Yoshige
Re:なぜSQLが出てこない (スコア:1)
の