Tools

Matthias Endler

道具

原文は Matthias Endler により に公開されました。 このブログを購読する

物心ついた頃から、コンピュータサイエンスの世界は宗教戦争のようなフレームウォーに侵されてきた。

技術的なトピックについて議論するのは健全なことだが、フレームウォーはそうではない。もううんざりだ。自分の作業環境がいかに優れていて速いかなどを語る人たちには本当にうんざりしている。そう思うのは勝手だが、正直どうでもいい。機材が果たすのは所詮脇役にすぎない。そもそもプログラミングにコンピュータすら必要ない。ドナルド・クヌースはメモ帳にアルゴリズムを書いた。アラン・チューリングは一枚の紙の上に最初のチェスプログラムを書いた。そしてそれは動いた。文句あるか?

一般的なユーザーにとっては、そこそこのシステムで十分なことがほとんどだ。わずかな出費で、ウェブを閲覧し、チャットをし、写真を保存し、文書を書き、音楽を聴き、映画を観るのに十分すぎるほどの優れたハードウェアが手に入る。Pentium IVに256 MB RAM、そして最近のOperating System(おそらく無料で手に入る)があれば事足りる。いや、古い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. お母さんといった古臭いクリシェに陥るのはやめよう。その代わり、自分のコードについて語ろう。君の問題解決能力を見せてくれ。ここは現実的になろう。

Talk is cheap. Show me the code. - Linus Torvalds

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

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

誰でも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は僕にとってかなり良いと思うが、もっと速く物事を進められる方法があるなら、躊躇なく捨てるつもりだ。その代わり、自分の手を汚して問題を直すか、何か新しいものを作ろう。

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

コメント