2009年02月19日 22:30 [Edit]

「○x言語はもう終わり」というプログラマは終わり

これ、

すでにJPAの中の人が完璧に論破しちゃっている

のだけど、お呼びがかかったので蛇足しておくことにする。


まずは各論から。

Perlはもう終り? | | プログラマ2.0日報 | あすなろBLOG
言語仕様が汚い。厳格にはサブルーチンの「引数」という概念がないし、変数はすべてグローバルで特に宣言した場合だけローカルになる...というあたりの仕様は、そりゃインタプリタの実装は楽チンだろうけども、美意識(とミスしにくさ)には欠けるよね。

汚いったって英語や日本語ほどじゃない。そして英語や日本語が汚い文章もきれいな文章もかけるように、自由度の大きな言語は汚くもきれいにも書けるものだ。その点において Perl 5 というのは、普及している中でもっとも自由な言語だ。

もちろん free (自由)は free (ただ)じゃない。他の言語だったらエラーではねてしまうものも、Perlはなるべく意味を通そうとする。リストの最後が,で終わっていても、"double"'single'でないq{quote}qq($interpolation)も受け付けてくれる。

実装が楽チンだって?だったらソースを見てご覧よ。正直、pythonやrubyなら仕様を貰えば私も何とか実装できそうな気がするし、実際 python や ruby は複数実装がある。だけど Perl 5 はお手上げ。実装の難易度はこの順番だと思っていい。

Perlはもう終り? | | プログラマ2.0日報 | あすなろBLOG
後付けのオブジェクト指向。何かヘンテコなやり方です...神の祝福が要る(bless)わけですが、「神の祝福」って何だろ?

私にとって Perl の一番すごいところは、○×指向をほぼ全て後付けできるところ。やり方が一つではないおかげで、別のやり方を考えるインセンティヴがすごくある。そして別のやり方を考えられるプログラマーの方が、縦(書きの仕様書)を横(書きのコード)にするだけのプログラマーよりずっと高い誇りと給与を得ている。

perl、すなわちプログラミング言語の実装が perl が bless しているのは変数、正確には reference だが、Perl、すなわち perl の利用者の文化が bless しているのは、 freedom なのだ。

Perlはもう終り? | | プログラマ2.0日報 | あすなろBLOG
3. 5.8(2002年) でマルチエンコーディングに(実質上Unicodeに)ようやく対応。これはタイミング的にはちょっと遅れを取った感が否定できなかったです....

わかってないにもほどがある。

マルチエンコーディングへの対応という意味で、Javaの罪は重い。一つはcharを16ビットにしてしまったこと。これのおかげで2 charsの文字が生まれてしまった。それがJavaだけの問題ならまだよかったが、この問題は JavaScript まで延焼してしまった。alert('𪚲'.length)が1じゃないのはなぜなのだ。悲しいことにPythonまでこれが1になるかどうかはコンパイル次第なのである。

もう一つはShift_JISとCP932の混同。問題の深刻さはこちらの方が低い代わりに、延焼範囲はより広い。私のところまで火の粉が飛んできやがる。

それらを総合的に見ると、この問題で合格点を出せるのは、普及した言語の中では Perl 5.8 以降のみだ。それも、辛うじて。Ruby 1.9以降はまだ普及していると言えないのでまだここに加えるのは早いだろう。

そうそう。文字列ではなくバイト列として扱うだけでいいのであれば、Perl 4の時にすら出来ていた。jcode.pl は偉大だ。しかし未だにそれを使っているのは化石だ。

で、総論。

一つ言えるのは、ことプログラミング言語に関しては手練ほど「死んだ」とは言わないことだ。MatzさんがAPLを取り上げたのはだてじゃない。その複雑さゆえに話し手がいなくなると消滅せざるを得ない自然言語と違って、それよりずっと単純なプログラミング言語は、一端普及するとそう簡単には死なないのだ。

もちろん、絶滅の可能性はゼロではない。HyperTalk はすばらしい言語だったが、HyperCard という「場所」がなくなったのと同時に事実上絶滅した。特定の「場所」、すなわち環境に特化した言語というのはこのように絶滅のリスクがずっと高まる。PHPはその点ちょっと心配している。JavaScriptやActionScript(Flash)のおかげで、MVCのVをサーバー側でやる必然性が下がりつつある現在、PHPの魅力もまた下がっているからだ。もっともPHPは他の言語が「こりゃまずったわい」と思っていることを新たに取り入れるという、実にまれな言語でもあるので、むしろ下火になってからの方が好事家を呼び寄せるかも知れない。私とか?否定しません:)

Perlは、ここ10年のうちで最も多くを他の言語から盗み、そして最も多くを他の言語に盗まれた言語ではないか。それが今もなお続くプロセスであることに、毎日使っている私も驚かずにいられない。私は言語をdisるプログラマーであるより、disられるほど豊穣な言語を育てるプログラマーでありたいと願う所以だ。

Dan the Polyglot

おまけ:

一行QuickSort。Haskellの有名な例もこう書ける。@_とはさみも使いよう。

[Run via codepad]
sub qsort{my$p=@_?shift:return;qsort(grep{$_<$p}@_),$p,qsort(grep{$_>=$p}@_)}

この記事へのトラックバックURL

この記事へのトラックバック
404 Blog Not Found:「○x言語はもう終わり」というプログラマは終わり
404 Blog Not Found:「○x言語はもう終わり」というプログラマは終わり【】at 2012年01月21日 09:36
一つ言えるのは、ことプログラミング言語に関しては手練ほど「死んだ」とは言わないことだ。MatzさんがAPLを取り上げたのはだてじゃない。その複雑さゆえに話し手がいなくなると消滅せざるを得ない自然言語と違って、それよりずっと単純なプログラミング言語は、一端普及す
2009-02-22【Yet Another But Open】at 2009年02月22日 22:43
この記事へのコメント
>Perl のことを「ひでぶ」、「あべし」としか形容できない技術者なんて、
>もう死んでいるも同然じゃないかと思う。
こんな比喩だけ見て技術者として生・死を判別できるあなたはエスパーなの?(笑)

真実で言うと、Parlも終わりじゃないし技術者も死んではいない。
本当に終わるときは、誰も見向きもしないで自然消滅するものさ。
話題にある内は死ぬわけが無い。

そもそも「○x言語はもう終わり」と言ってる奴にほとんど当てはまるであろう"本当の意図"を教えてあげよう。
他の言語を貶めて"自分の好きな言語のシェアが伸びるように"情報操作したいだけなのさ。
Posted by ズズキのKei at 2009年03月02日 09:18
> 悔しかったら存在価値のあるアプリ書いてみろよ。

存在価値とはまた大きく出たものだ。
シェイクスピアだってモーツァルトだって、不朽の名作を書こうなどという意識は
殆どなかったものと想像する。どうにか食べていくための仕事をこなしていたに過ぎない。
ただし、出来上がったもののクオリティについて、誰にも負けないという自負心だけは
持っていただろうけれどね。
「存在価値」などという面倒なものは、きっと自分の死後に誰かが決めてくれるだろうと
考えることにして、世間様の要求と技術者としての自負心とがどうにか折り合うように
淡々と良い仕事をしていく、というアプローチの方が良いだろうと思う。
Posted by Kei at 2009年02月26日 19:38
つまるところ、仕事でどうでもいいアプリ書くために
仕方なくいろんな言語使ってるプログラマが多い。
大した問題解いてるわけでもないのに
単なるツールである言語がどうのこうのとか
本末転倒でバカバカしいし。
悔しかったら存在価値のあるアプリ書いてみろよ。
Posted by dokata at 2009年02月26日 16:10
PerlはLispのように物好きが使う言語になりつつあるのかも
Lispが言語として優れていようが仕事では使わないように
PHPが糞と言われようと仕事で使われるように
Posted by ほげ at 2009年02月26日 13:00
>> PHPは他の言語が「こりゃまずったわい」と思っていることを新たに取り入れる
> これって何でしょうか?

http://schlueters.de/blog/archives/94-Goto-your-Christmas-presents-with-PHP-5.3.html

これじゃねかな? 確かに吹いた。
速攻で "finallyがありゃいいんじゃね?"とツッこまれとる。
Posted by shou at 2009年02月25日 09:58
こんなところでカキコしてないで仕事しなさい。
そんなていたらくだから、日本のエンジニアのお給料は
バカみたいに低いんでしょう?
Posted by みんな at 2009年02月25日 03:32
> 便乗して無茶苦茶言うな!と。

Lisp で美しい QuickSort というと、
http://swisspig.net/r/post/blog-200603301157
みたいな形だろうか。この例が適切であると仮定すれば、
「大差ないな」と私は思う。
Posted by Kei at 2009年02月24日 17:22
使ってた奴が、やめたいって言ってるんだから、ご丁重に退場願えばいいだけなのに、みんな、どうして生暖かく見守ってやれないかねー?
挙証データだって無茶苦茶じゃん?
年間コミットがピーク時で8回なのと直近が2回なの比べて、もうおしまいとかさ。
どう考えても、成熟した証であって、終わってる証しじゃねーし。
必用な仕様を満たした上で、バグもほぼ潰しつくしてるけど、不具合見つかればちゃんとメンテやってますって以外にどう解釈すんだよ?あれ?
もう、やめたい奴がやめる理由探してるんだけなんだから、そっとしといてやれっての。

>1行QuickSortの美しさ
つ Lisp系
雑音まみれの劣化コピーにしか見えない。
便乗して無茶苦茶言うな!と。

俺は Perl 嫌いだけど、言語なんて適材適所だし、たまには Perl で書きたくなることもあるわ。
Posted by とおりすがり at 2009年02月24日 14:55


>ずっと高い誇りと給与を得ている。

・・・とかね、もう必死すぎて・・・。
ご自分の中で「終わり」に反応してしまう点があるからこそ
必死でそれを打ち消したいのですね。お疲れ様です。



Posted by お疲れ様です at 2009年02月24日 02:52
Perl のことを「ひでぶ」、「あべし」としか形容できない技術者なんて、
もう死んでいるも同然じゃないかと思う。
Posted by Kei at 2009年02月23日 06:36
「もう終わり」

という言い方が刺々しい。
どんなクソ言語だって、それで書かれたシステムが動き
使われている以上、誰かがしばらくは管理していくことになる。

でも、ある言語がつかわれていても

「おまえはもう、死んでいる」

状態だということは自覚して、フェードアウトさせることも
進歩にとっては重要なことだと思う。
Perlは単なるプログラミング言語であって文化ではないから、
使われず、実用性が低ければ、死んで然るべきもの。
Perlは「ひでぶ」、「あべし」状態なわけだから、
このままお引き取り願った方が良いと思います。
Posted by 断固外 at 2009年02月23日 05:41
結局『Perl最強だよ。ほかの言語クソだよ。』って聞こえるんだが。

Perl(CGI)しか使えないならそれになるしPHPしか使えないならそうなる。
それでもPerlが最強なのか?
クライアントアプリを作るのにPerlなんてアホすぎだしそれこそ『終わっている』。
Posted by tak at 2009年02月22日 22:12
小飼さんが批判しているのは、「○×言語はもう終わり」という言い方の使用ではなく
濫用なんだと思う。たとえば「Perl 4 はもう終わり」と主張することに、少なくとも
私自身はまったくためらいを感じない。だが、今でもしっかり生きているものを、
たとえば「Tcl/Tk はもう終わり」みたいに主張すれば、それなりに識者から批判を
浴びる可能性はある。
Posted by Kei at 2009年02月22日 17:52
ブログ主さんより優れたプログラマであるダイクストラ先生だっていろんな言語を批判していますよ。
Posted by abc at 2009年02月22日 15:22
> 縦(書きの仕様書)

って一度も見たことないんだけど?

Posted by Mr.hoge at 2009年02月22日 09:26
「この記事へのソーシャルブックマーク 」欄のはてなブックマークのリンクがおかしいです。

「xx users」のリンク先がはてなじゃなくこのブログになっています。
Posted by Ms.link at 2009年02月22日 09:19
データベースを使わないサイトなら、マッシュアップとJavaScriptで十分なわけで、
CGIはHTMLファイルを置くサーバーに必要なかったりする。知識は必要かもだけど。
Posted by ゴッデス at 2009年02月22日 09:16
そろそろ多言語スイッチ言語?が出ても良いとおもうんだけどな
自由な範囲で言語を切り替えて使うような。
ま、特定の言語にとらわれちゃってるのはさみしいね。
Posted by ああ at 2009年02月21日 20:37
> 正直、pythonやrubyなら仕様を貰えば私も何とか実装できそうな
> 気がするし、実際 python や ruby は複数実装がある。だけど
> Perl 5 はお手上げ。実装の難易度はこの順番だと思っていい。

機能拡張を続けて肥大化した言語の末路ですね。
Posted by Kazu at 2009年02月21日 13:09
>読んで理解できないコードは大抵醜悪に見える。
それを理解できるように書くのが良いコード。
ゼン○リコードなんて理解したくもありません。

>コードの美しさの基準が外部にある人は、そこまでの人だ。
コードの美しさの基準が「内部だけ」にある人は、そこまでの人だ。
コードの美しさの基準は内部・外部両方にある。

目的と手段が入れ替わっている事に気が付いて下さい。
コードを書くためにコード書いてるわけじゃないんだよ?
Posted by ズズキのKei at 2009年02月21日 11:57
> Perlはもう終り? | | プログラマ2.0日報 | あすなろBLOG
> 3. 5.8(2002年) でマルチエンコーディングに(実質上Unicodeに)ようやく対応。
> これはタイミング的にはちょっと遅れを取った感が否定できなかったです....

元記事のこれに誰も突っ込まないんだね。
PHPはいまだに、(言語構文としては)マルチエンコーディングに対応してません。単にマルチバイト関数という「拡張機能」で対応しているだけです。
言語構文としてはPHP6で実装予定。そのPHP6もいつリリースされるやら。なんせ、2007年にリリースされる筈だったPHP5.3すら、いまだに出ていません。
Posted by ウサギの耳 at 2009年02月21日 09:41
PHP の名前空間の区切りは \ に変更されていたのか....
JIS X 0201 の後遺症に悩まされている国民には優しくない決定だ。
Posted by Kei at 2009年02月21日 09:41
>受け手の思考力に応じて豊かな想像の元にもなり得るし、
>そうならずに豚に真珠という場合もある。

Keiさんは単なるスノッブだと思うけど、
上記の点には同意だな。
ブタ(pig)に真珠(Perl ww)なんて
一文字(a)抜けちゃうけど、
あまりに的を得すぎているwwww
Posted by パッパラパーのパール at 2009年02月21日 04:19
> PHPは他の言語が「こりゃまずったわい」と思っていることを新たに取り入れる

これって何でしょうか?
Posted by Do at 2009年02月20日 22:20
おかげで、Perl/.Net や Perl/JVM でなければ再現しないバグレポート、
などという厄介なものから解放されているという側面もある。
Posted by Kei at 2009年02月20日 20:43
手を加える必要がない、というのは言い過ぎであって、
文字列と看做してASCII順にするとか、もしかしたらUNICODEとして
正規化した上でソートするとか、いくらでも拡張のタネはある。

しかしながらこれはコードの形を借りたメッセージなのだから、
受け手の思考力に応じて豊かな想像の元にもなり得るし、
そうならずに豚に真珠という場合もある。
Posted by Kei at 2009年02月20日 20:33
複雑な実装のせいで、pythonやrubyみたく.netやjvmで動かないんだかな。多様性を失ってるような
Posted by $_ at 2009年02月20日 20:24
好きな人はどこまでいってもその言語好きだしな。
誰かが好きな限り終わりはしないだろう。

ソートアルゴリズムに限って言えば、手を加える必要が無いんだから1行でも問題ない。
Posted by !P at 2009年02月20日 19:06
Perl を終わった言語だと評したい人も、Perl という言語を頑に守り通したい人も、五十歩百歩ですがな。
君は左か右かなんて愚問でしょ?どっちでもええよ。成果さえ出し続けられればね。
Posted by . at 2009年02月20日 18:49
ついでに余計なことを言っておくと、
コードの美しさの基準が外部にある人は、そこまでの人だ。
Posted by Kei at 2009年02月20日 16:15
↑素晴らしいオナニスト登場

簡単に書けば簡単に分かるもんを
わざわざ分かりづらく記述するのは
ポストモダンなプログラマだからですかw
Posted by パッパラパーのパール at 2009年02月20日 16:13
読んで理解できないコードは大抵醜悪に見える。

そこまでで終わりの人は、そこまでの人だ。
Posted by Kei at 2009年02月20日 16:04
>1行QuickSortの美しさに感動しない奴のコメントは読むに値せず。

ごめん、全然感動しないや。
役に立つ物ではないし、生産性に全く関係ないし。
技術的にもじゃあ何処でそれ使うの?って感じ。

これに感動する奴はセン○リ状態(いわゆる自己満足)
Posted by ズズキのKei at 2009年02月20日 16:02
>1行QuickSortの美しさ

あほやなー
Pythonじゃあるまいし
改行なくせば
見た目が1行のコードなんて
他の言語でいくらでも書けるって
上のqsortだってそうやがな
詰め込んで可読性が落るだけ
Posted by パッパラパーのパール at 2009年02月20日 15:47
1行QuickSortの美しさに感動しない奴のコメントは読むに値せず。
Posted by Kei at 2009年02月20日 14:59
○×言語が死んだというのは明らかにおかしい。要はそれは使ってる本人の問題なわけで処理系が使われる限り死にはしないと思う。

ただ、Perlはもう業務などに使うには仕様が複雑かつ多様すぎて使いにくい。
個人ならいいが、Perlの仕様をかなり分かってる人でも他人の書いたコードは読みにくいし、コーディングルールも厳密に決めないと痛い思いをするっていう点で、なるべく関わりたくない言語。

Perlは「書きやすく、拡張性が高い言語」であるけど、「読みにくくなりやすく、分かりにくい言語」。

だから、嫌がることが多くて、それを簡略的に「死んだ」と言ってしまうのではと思った。
Posted by Lyiase at 2009年02月20日 14:34
http://www.google.com/trends?q=Perl%2C+Visual+Basic&ctab=0&geo=all&date=all&sort=0


PerlはVBと同レベルワロタwww
Posted by 死に際は潔く at 2009年02月20日 14:17
Perlのうちで僕のお気に入りなのは、
write関数とFORMATであって、
新しい機能にはあまり興味がない。
Posted by at 2009年02月20日 13:00
常に便利な言語が使われて残る、ただそれだけ。
どの言語が残って、どの言語が廃れるなんていう話は全くもって「どうでもいい」話。

言語に対して色々うるさい事言う人って、たいてい「自分が好きな言語をひいきにしたいだけ」な事が多いんだよなぁ。

PHPを悪く言う人たちが多いが、個人的にはPHPはまだまだ残っていく言語だと思っている。
絶滅するならこんなに使ってる人多いわけないよね?
「良い物」が必ず一番になるわけじゃなくて「使いやすい物」が一番になるんだよ。
※こんな事書くとPHP使いと思われそうだけど、Python使ってます。
Posted by 単純に at 2009年02月20日 12:34
Javaほど汚い言語はないですよ。
一瞬見ただけでめまいがする。
Posted by C言語育ちですが at 2009年02月20日 12:33
書きようによりますが、Perlは数ヶ月たってもわかります。

>>自分で書いたコードも数ヵ月後には暗号みたいで何やってんだかわけ分からなくなる
恥ずかしい限りだ
Posted by piraki at 2009年02月20日 12:26
自分で書いたコードも数ヵ月後には暗号みたいで何やってんだかわけ分からなくなる

↑こんなことはずかしくて僕は言えない。
もちろん僕はPerl 使い
Posted by はずかしいだけ at 2009年02月20日 12:09
すみません。補足です。

現場は弾先生のようなレベルの高いプログラマー
だけではないので、そう簡単にPHPからPerlやRuby
には変わらないのでないかというのが実感です。
実際にRubyを使用することにはなかなか許可が
下りない現場が多いですし。

C言語も一時期は「時代遅れで終わった言語」と
言われていたこともあったような記憶があります。
Posted by C言語が好き at 2009年02月20日 12:08
>レガシーコードをメンテする人がいなくなったら、プログラミング言語自体が終了

普通の言語のレガシーコードならともかく、自分で書いたコードも数ヵ月後には暗号みたいで何やってんだかわけ分からなくなるPerlは、俺様も大っ嫌いだしメンテしたくない。
Posted by もれもPerlは嫌いさ at 2009年02月20日 10:44
よらしむべき、しらしむべからず
みたいな
どっちも
Posted by at 2009年02月20日 10:23
>JavaScriptやActionScript(Flash)のおかげで、MVCのVをサーバー側でやる必然性が下がりつつある現在、PHPの魅力もまた下がっているからだ。

PHPerながらもこれは感じる。
だって出自がテンプレートエンジンだからHTMLとの共生ってとこが魅力だったのに、結局JavaScriptとかFlashのほうが表現力高いんだもの。

だったら、サーバサイドもPerlとかRubyの方がパワフルだなーとかなる


>こんなレガシーコードをメンテしなけりゃいけない
>コボラーならぬ時代遅れパーラーは可哀相だね。

レガシーコードをメンテする人がいなくなったら、プログラミング言語自体が終了だと思うんですがねぇ


コメントがあまりにもアレだったので、思わず反応してしまいました。
Posted by aniki at 2009年02月20日 10:15
結局Perlのコードは汚いという事を自ら示しただけか。
自分のおかーちゃんを馬鹿にされて怒るのは分かるが。
Posted by 脊髄反射 at 2009年02月20日 04:11
だんさん、みっともないよ。
言語は死なないから後の世代が不の遺産を継ぐわけだけど
本来死ぬべき言語を使うプログラマーは確実に死んでいく。
最後の汚らしい一行コードがPerlの運命を物語ってる。
こんなレガシーコードをメンテしなけりゃいけない
コボラーならぬ時代遅れパーラーは可哀相だね。
Posted by パッパラパーのパール at 2009年02月20日 03:28
>JavaScriptやActionScript(Flash)のおかげで、MVCのVをサーバー側でやる必然性が下がりつつある現在、PHPの魅力もまた下がっているからだ。

んーと。そうですか?
なんかPHPならどんな攻撃も許されるという感じですね。

「○x言語はもう終わり」というプログラマは終わり
には激しく同意なのですが。
PHPだけは例外ですか?

Posted by C言語が好き at 2009年02月20日 01:52
よく言うよ。これがPHPに対してだったら尻馬に乗ってたくせに…
Posted by Dan the パーler at 2009年02月20日 00:27
perlが蛇足。
Posted by 弾とタメ at 2009年02月19日 23:02