Harmful stuff

自分で紹介しといて気付いてなかったんだ。

「Batch Programming Considered Harmful」ということを主張する良い記事はないだろうか」、というのは「DOS が(最低でも)エンジニアを名乗ろうとする者の心からは綺麗さっぱり消え去るべきである」という願いである。そして私が知っていた「Csh Programming Considered Harmful」を探したら「cat -v | harmful stuff」に辿り着いた、というのがまず流れ。

その目的の記事だけで満足してそのサイト自体をよく観察してなかったんよ。「cat -v | harmful stuff」って、なんだこれ、「Harmful コレクション」サイトなのね。共感出来るのも出来ないのもあるけどさ、「Software」カテゴリだとこんなのを「Harmful」言うておる:

サイトのノリはいわゆる「太郎さんも花子さんも」流儀なの。有名人や有名サイトなどの発言集。だから件の csh のもそこに含まれると。の割にはカーニハンの Pascal がなかったりと、収集ポリシーはいまいち良くわからんけれど。

こうした「嫌いだ!」は、それぞれ発言者の個人的な理由、特に感情が伴うことが多いのでね、あなた自身が「~さんも言ってる!」になってはいけないよ、て話は前にどっかでしたな。Linus とコーヒーの話をしたと思う。こういうのって、基本的にはやっぱり「自身で体験したもの」以外のものについては絶対に鵜呑みにしちゃダメだし、あと、「時代性」についても意識的に読まなきゃダメよ。

てのはいつもの前置きとして。

ちとね、Java のが、不覚にも笑っちまった。ワタシ自身は、どの言語に対する場合でもそうなんだけど「言語そのもの」と「文化」「取り巻き」の3つをはっきり区別し、とりわけ「文化」「取り巻き」が原因で嫌いになることが本当に多い。java はまさに「取り巻き」。あーあれだ、アニメなんぞの「アンチ/信者」を思い出してもらったらいい。java は信者の圧が凄まじく、それだけで嫌いになるには十分だった。だからはっきりいってワタシにとっては「java言語の良し悪し」なんかかなり二の次だったんだけれど、ここに列挙されてる攻撃や皮肉は言語そのものの性質に言及するものも結構ある。

それでもまぁやっぱり「C++ is history repeated as tragedy. Java is history repeated as farce. – Scott McKay」。これが一番シックリくるなぁ私には。あと「Like the creators of sitcoms or junk food or package tours, Java’s designers were consciously designing a product for people not as smart as them. – Paul Graham」「Java is the SUV of programming tools. A project done in Java will cost 5 times as much, take twice as long, and be harder to maintain than a project done in a scripting language such as PHP or Perl. … But the programmers and managers using Java will feel good about themselves because they are using a tool that, in theory, has a lot of power for handling problems of tremendous complexity. Just like the suburbanite who drives his SUV to the 7-11 on a paved road but feels good because in theory he could climb a 45-degree dirt slope. – Greenspun, Philip」。これに尽きるという感じもする。(「ホワイトカラー指向」みたいな言い方ってなかったっけ? それだと思うよ。「Java is the new COBOL.」。それな。)

「If you think programming in java is a good idea, then please stop programming.」。言い杉。でもまぁ気持ちはわかる。根本の部分でワタシが絶対に java を好きになれないし信頼出来ない理由は「java が人間不信であること」。というよりは「俺たち以外は信じるな」圧がほんとうにほんとうに鬱陶しい。それ以外の原因を無理に探すとするならば、「リアルワールドを向いてない指向」であることかな。はっきり言ってしまえば java 界隈を端的に表現するなら「ライブラリビジネス」もしくは「設計ビジネス」なんだよ。ともに「ソフトウェアを作ること・設計すること」が「目的化」し、決して現実世界を向かない、そんな感じ。いやもちろんちゃんと実稼働してるシステムがあるんだから、実世界で使われてないということではないんだけれど、「ソフトウェアを美しく作ること」に重きを置き過ぎなんだよ、とワタシは思う(クラス図がビューティフルであることこそが至上命題、てことね)。

java については、「根絶されるべきだ」なんてことは全然思わない。ただ単に私がそれを嫌いだ、というだけの話。Android が普及してる以上、java のフィールドはまだなくなる気配はないし、別になくなる必要もない。でもさ、Stack Overflow Survey の結果って、java 目線で追っかけるととても興味深い結果になってるんだよね。「loved」1位の RUST、10位の GO なんだけどさ、これ、わかってみると「RUST は C++ の後継」「GO は C の後継」、つまり java が熱心に攻撃した2つを「正しい考え方でより良いものにした」2つなんだよね。つまり、RUST と GO って、まさに「Java がなれなかったもの」なんだわ、「java の代わりになるもの」として考えることも出来る2つなの(8 位の swift も C/C++/Objective-C の後継)。そう考えると、もしかしたら java も本当に淘汰されて消えていく言語のひとつ、にもなりうるのかもしれんぁ、と最近思い始めてる。そこまで思ったことはこれまで一度もなかったんだけれど。

無論こうしたものって「何十年」というスパンで考えなければならないものなので、今言えるのは「30年後にはレガシー資産以外では使われなくなっている言語かもしれない」ということが言える程度。FORTRAN が今でも現役で使われ、COBOL が今でも大規模に需要があるなんて、50年以上前の誕生時に、誰が予想出来た? java も30年後に「根絶」されてる可能性は、万に一つも考えられない。世界大戦だの人類滅亡的なイベントでもない限りは。

ちなみに今日これを読み返したのはこれがキッカケ:

全部に共感出来るわけじゃないけど、このビデオ、結構衝撃的なことも紹介してる。FizzBuzzEnterpriseEdition は実物みると想像以上。