Skip to content

Instantly share code, notes, and snippets.

@yosuke-furukawa
Forked from cookrn/links.md
Last active August 29, 2015 14:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yosuke-furukawa/772bdf0dd1fcea0a1b25 to your computer and use it in GitHub Desktop.
Save yosuke-furukawa/772bdf0dd1fcea0a1b25 to your computer and use it in GitHub Desktop.

私はほとんど全てのソフトウェアが大嫌いだ。あらゆる層において不必要で複雑だからだ。そういったソフトウェアが起こしてきたクソの上で問題をすばやく、シンプルに解決する人を賞賛する事、それだけが私がやってきた精一杯のことだった。私が好きな唯一のソフトウェアは私が簡単に理解できて、私の問題を解決できるものだ。私が我慢できる複雑さの量は問題解決の量と均等でないといけない。

以前、私はFile デスクリプタやプロセスがCによって組織化されている、Unixの考え方を理解した。それはすごく美しい理想の考え方だった。そこには互いに影響しあうものはなく、複雑さは含まれていなかった。その代わりに、D-Busや /usr/lib や Boost や ioctl や SMF や signalや volatile変数やプロトタイプ継承やC99_FEATURESやdpkgやautoconfといったものを扱う必要があった。

これらのシステムの上で構築された我々のソフトウェアは複雑さを追加しつづけている。今、あなたが理解しなければならないのはシステムを動作させるための $LD_LIBRARY_PATH だけではなく、 $NODE_PATH も理解しなければならない、そう、あなたが知らないといけない複雑な環境変数を私は追加したのだ。webページを見たいだけのユーザーはそんなこと気にしない。ユーザーは /usr 以下の構造がどうなってるのか、ゾンビプロセスがあるのか、 bashのタブ補完がどうとか、zlib がNodeに対してdynamicリンクなのかstaticリンクなのかとかそういった事は全くもって関心がない。我々の既存システムの複雑さは新しいシステムを作ることの複雑さよりも大きくなると計算される分岐点がある。その分岐点に到達する時、この全てのクソシステムは削除されるべきだろう。boostやglibやautoconfはトイレで流し、再びそれらを考えないようにしないといけないのだ。

プログラミング言語の詳細を学ぶことの楽しさを発見することもあるだろう、NaNのイコールやnull比較するかどうかといった事を楽しく語る事もあるだろう、しかしあなたは全てのソフトウェアが以下にクソなのかをまだ理解していない。コード内にあるイコール記号を揃えている時、windowマネージャやエディタの設定に時間をかけている時、テストランナーが出すチェックマークのunicode記号を書いてる時、あなたが不要な階層構造をコードに追加している時、問題解決の先にある何かをしている時、いかにそうした事が無意味でクソな行為だったのかを理解していないのだ。誰もglibオブジェクトモデルに対してクソだって言わないんだ。

ソフトウェアの唯一の関心事項はユーザーの体験だけなんだ。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment