Tools

Matthias Endler

道具

物心ついた頃からずっと、コンピュータサイエンスの世界は宗教論争のような炎上に侵されてきた。

技術的な議論自体は健全なこともある。でも炎上は違う。もううんざりだ。自分の作業環境がいかに優れていて、速くて、素晴らしいかを語る人たちには飽き飽きしている。勝手に言えばいいが、正直どうでもいいことだ。道具なんて所詮は脇役でしかない。そもそもプログラミングにコンピュータすら必要ない。ドナルド・クヌースはメモ帳にアルゴリズムを書いた。アラン・チューリングは紙切れ一枚に最初のチェスプログラムを書いた。そしてそれは動いた。どうだ、参ったか。

一般的なユーザーにとっては、手頃な次のシステムで十分なことがほとんどだ。わずかなお金で、ウェブを見て、チャットをして、写真を整理し、文書を書き、音楽を聴き、映画を見るには十分すぎるほどの優れたハードウェアが手に入る。Pentium IVに256 MBのRAM、適当な最近のOSがあればそれができる(OSは大抵タダで手に入るだろう)。極端な話、古いCommodoreでもその大半はこなせる。コンピュータはもうずっと前から、その程度のことなら十分に枯れて信頼できるものになっている。Farmvilleのためにわざわざマシンを買い換える必要なんてない。古い車が何の問題もなく走るのに新車を買う理由がないのと同じだ。ソフトウェアだって同じで、多くの人が今でもOffice 2000やPhotoshop 8、あるいはVisiCalcを使い続けていて、別にアップグレードしたいとも思っていない。

プロだって状況は似たようなものだ。まあ、多少は多く投資するかもしれないが、それでもハードウェアにかかる費用は給料に比べれば驚くほど安い(そうであってほしいが)。完璧なものなんてないが、たいていはそれで十分なのだ。10年前に使っていたあのコンパイラ? 今でもちゃんと仕事をしてくれる。僕らがいまだに使っているプログラミング言語だって、コンピュータの石器時代の言語から少しだけ姿を変えた子孫に過ぎない。NASAで数値計算をしていたとしても、普段向き合っている作業環境はテキストエディタかIDEが動いているただのブラックボックスだ。

何を使って仕事をしようと、僕は気にしない。自分のニーズに合った環境を見つけて、満足して使えばいい。Lemote YeelongのネットブックでEmacsを使っていてもいいし(やあ、リチャード・ストールマン)、ワークステーションでVimを使っていてもいい。結局は同じことだ。金属の塊の上で動くテキストエディタに過ぎない。Nanoを使っても、edを使っても、TextMateを使っても、プログラマーとして劣ることにはならない。Notepadだって十分使える。ファイルを読み込み、保存し、その合間に編集させてくれる。ビル・ゲイツとポール・アレンがAltair用のBASICインタプリタを書いたときに持っていたものより、はるかに高機能だ。気に入ったものが見つかったら、それを使い続ければいい。ただ、それで論争を始めるのはやめよう。時間の無駄だ。

荒らしに餌を与えるな。ソフトウェアの話になったからといって、古臭いFreeBSD vs. Linux vs. Windows vs. お母さん、みたいな紋切り型にハマるな。その代わり、自分のコードについて語ろう。問題解決の腕前を見せてくれ。ここは現実的になろう。

口先だけなら安い。コードを見せろ。 - Linus Torvalds

どのプログラミング言語を使っていても僕は気にしない。Java? いいじゃないか。Visual Basic? 素晴らしい。Scala、Cobol、PHP、C++? どれもいい。Assemblerでもlolcodeでも好きに書けばいい。言語Xに機能Yがないなんて愚痴をこぼすのはやめろ。ライブラリを書くか、別のものを使えばいい。JavaScriptがおもちゃの言語だなんて言うのもやめろ。単に自分のニーズに合わないだけだ。その代わりに、君が作ったLispのアドベンチャーゲームを見せてくれ。Brainfuckのインタプリタを書いてみろ。何か作れ。何かを動かせ。

PHPについて、nirはHacker Newsでこう書いている

PHPについて皮肉めいたコメントを書くことなら、誰にでもできる。だが、PHPほどの影響力を持つコードを書ける人間はほんの一握りしかいない。

僕が好きだと白状したら、椅子から転げ落ちるだろうか? 確かにPHPの文法には粗いところもある(本当に$は必要なのか?)が、それより大事なのは、それでどれだけ多くのことができるかだ。PHPは長いこと、とりあえず一度だけ動けばいいようなスクリプトを書くときの僕の定番だった。見た目は少し野暮ったいが、どのサーバーでも動くし、膨大な機能が標準でそろっている。素早いプロトタイピングや、あれこれをつなぎ合わせるには最高だ。実際のところ、ソフトウェアを書くときに目指すべきはかなり良いソフトウェアであり、本当に達成しなければならないのは、ユーザーが満足してくれる十分に良いソフトウェアなのだ。

ゼド・A・ショーはLearn Python the Hard Wayのあとがきで、うまくこうまとめている。

僕はとても長い間プログラミングをしてきた。長すぎて、正直すっかり退屈している。この本を書いた時点で、僕は20ほどのプログラミング言語を知っていて、どれだけ風変わりなものでも1日から1週間あれば新しい言語を覚えられた。でも結局、それも退屈なだけですぐに興味を失ってしまった。この学習の旅の果てに気づいたのは、言語なんてどうでもいいということだった。大事なのは、それで何を作るかだ。実際のところ、ずっと前から分かっていたことなのだが、言語に気を取られては、そのことを何度も忘れてしまうのだ。学ぶ言語も使う言語も、どれを選んでも大した問題ではない。プログラミング言語をめぐる宗教論争に巻き込まれるな。そんなものに目を曇らされれば、面白いことを成し遂げるための道具だという本来の目的を見失ってしまう。

使う道具に感情移入するな。iPhoneは――がっかりさせて申し訳ないが――ただの電話だ。魔法でもなければ、「Think different」でもない。「でもあれは邪悪だ!」と誰かが言う。「オープンソースじゃないから」。まあ、Androidが存在するのは、Googleが急いでモバイルプラットフォームを開発する必要があったからだ。単にビジネス上の都合でしかない。そこに道徳なんてない。Googleだって、MicrosoftやAppleと変わらないただの一企業だ。

僕のMacBookは堅実な道具として役に立っているが、もし何か「より良い」ものが出てくれば、喜んで乗り換える。5年間使ったFirefoxも、Chromeの方が速いという理由だけで捨てたし、もっと良いものが見つかればChromeだって捨てる。Vimは僕にとってかなり良いと思っているが、もっと速くできる方法があるなら、ためらわずに捨てるつもりだ。むしろ手を汚して問題を直すか、何か新しいものを作ろう。

原文は Matthias Endler により に公開されました。

この記事は「muse-spark-1.2-contributor」を使用して翻訳されました。