Diary?::2006-08-22

20:11

夏バテだからって何も食わんと体が持たないので、吐きそうになりつつも松屋のビビン丼を食べてきた。流石に自分で料理を作る気力は無いっす。

ところで今日の昼飯でちょうど冷凍食品のストックが尽きたので一通り補充したのだが、それが合計で 1372 円。ご飯と付け合せの野菜含めて一食あたり 200 円を切るためには、 10 食以上はこれで食いつなぐ必要がある (米と野菜のコストはきちんと計算してないけど) 。これは割りとなんとかなりそうだ。

21:23

「宮崎駿 = イングヴェイ・ヨハン・マルムスティーン」という説を思い付いた。

21:53

いつも思うのだが、檜山さんは本当に説明が上手いなあ。何気に圏論やらホーア式やらのシリーズ、楽しみにしてます。

23:25

俺は割りと昔のハードロックも好きなのだが、あんまりここでは書いてない (つもり)。というのも、過去の名作という名のバックカタログはあまりにも膨大で、いちいち消化しようと思ったら新しい音楽を聴く暇が無くなってしまうだろうから。

だから俺は CD を購入する際の優先順位は新譜を圧倒的に優先していて、時代が古くなるにつれて優先度を下げている (例外ケースをもあるけど)。要するに、いつまでも古い世代を崇めてるんじゃねーよってことなんだが。俺はこれを過去の遺産に押し潰されると表現している。確かに 70 年代の Judas Priest も格好いいのだけど、だからって最初にそこに遡って聴かなきゃいけない理由は無いはず。

そして計算機科学の世界は、実は過去の遺産に押し潰されそうな面が早速出てきているのではないかと感じるときがしばしばある (ていうかもう潰されてる?)。 OS 、アプリケーション、プログラミング言語、文字コード、ファイルシステム、ネットワークプロトコル、 etc 。勿論過去のこれら全てが無駄だったわけではないだろうし、もうしばらくは何でもかんでも HTTP で済ませる時期が続くのだろうとは思う。でも、そのうち少しずつでも抜本的な変化が、それこそもっと大々的に起こらないと先行きは暗いかもしれない。

特に今はアセンブラでアプリケーションが書けていた時代とは全然違うからな。今ではハードウェアの知識無しに結構なアプリケーションが作れたりするのだが、じゃあ必要とされる知識の総量は減ったかというと全然そんなことはなくて、例えばオブジェクト指向プログラミング言語のほとんどは事実上ポインタだらけの言語なわけで、結局はメモリ関連の知識が必要になってくる (加えて言語処理系のメモリ管理の知識も必須なのだ。ガベージコレクタがほぼ大前提だからな。あとマルチスレッドも普通に出てくるし)。それがわからないとパフォーマンスが全然でなかったり、変なバグを作りこむ恐れが出てくる。

さらには高階関数やクロージャは Python や JavaScript 、そして殆どの関数型言語でプログラムを組む際には常識といってもいいと思う。少なくともこれらやオブジェクト指向プログラミングを一つも知らない奴が、まともに近代的なプログラム言語でプログラミングできるわけが無い。そしてそれらの知識は決して目新しいものではなく、実は昔からずっと存在していた物だ。ただ、ここ数年で急に日が当たってきたものがあるってだけで。

だから高級言語でプログラミングを行うのは低級言語でプログラミングを行うのとは又別の難しさがあり、はっきり言えば Python よりも Java の方が言語として扱っている複雑さの度合は遥かに低い。そして Java よりも C の方が、ずっと。たしかに文法や言語仕様は洗練されて罠になりそうな部分は減ってきているが、それは今までとは別の過去からの問題がやってきているに過ぎない。事実、俺は Haskell などのハードコアな関数型言語の示した世界に全然追い付けていない。そして関数型言語もまた、過去からの遺産で (ちなみに過去の遺産の代表である C でのプログラミングはかなり昔とは様変りしてるっぽい)。

だから俺たちは快適な環境でプログラミングが出来る代わりにそれら過去からの遺産の山をどう捌くかってところにも気を回さないといけなくて、中にはいい加減時代にそぐわないだろうって物もあれば、先人の尻拭いじゃねーのこれってのもある。それら全てを吸収して消化するのは土台無理な話で、過去からの遺産の中から風化しそうもない物をどうやって探すのかが肝になる (また、あえて風化しそうな部分を探して橋渡しをすることも必要だったりすると思うけど)。

例えばアルゴリズムの知識はまず風化しそうもないが、じゃあ CPU のベンダ固有部分の知識とかは? 微妙だけど、流石にベンダが頑張って保守しそうな気がする。オブジェクト指向プログラミングはしばらく滅ばないだろうけど、斜陽のパラダイムにならない保証は無い。少なくとも、俺はそんなこと保証できない。だから Python を勧めるときには、あまりそういったパラダイム云々の話はしなことにしている。そうそう、コードの可読性は人間がコードを書いている限りは風化しないよ。

だから過去からの遺産のうち、どう考えても惰性が転がってきただけだろこれってものは出来るだけ捨て去りたいのが本音だったりする。山のようにあるよ、そういうのは。そこまでいかなくとも鵜呑みにするのはどうかと思うものもある。過去の常識は今の非常識であり、今の常識は未来の非常識である。もっとも未来を予想するのは不可能と同義なぐらい難しいので、俺を含めてみんなが自分の思い思いの未来を作りにいこうと画策している気がするが。少なくとも、いきなり未経験の新卒を雇って Java の研修をさせている会社が跳梁跋扈している現状は大いに間違っていると思う。

……しかし長くなったなあ。仕事で文字コード回りのあれやこれやを調べて「ふざけんな」ってぶちきれた勢いだけで、よくぞここまで書けるもんだ。

23:50

とりあえず身近な所から改善させていこう。というか、 UNIX 系 OS のいい加減どうにかしたい部分。前に書いた気がしないでもないけどまあいいや。

/etc 以下全部
Gentoo は健闘してると思うけど、それでもまだ難あり
/usr 以下全部
どこに何が置かれているのか、絶対に初学者が混乱すると思うし俺も未だにあれどこにあったっけと思う時がある。要するに重複しすぎでアプリごとに恣意的過ぎ
/var 以下全部
あまりにも恣意的過ぎる
X のフォント周り
さあ設定ファイルの海に漕ぎだそう。そして遭難しよう。マリーセレスト号になろう。未だによくわからない
./configure (ってか autotools か)
必要悪、なのかな?
vim あるいは emacs
だって慣れちゃったし、結局必要だし。でもいい加減、他の人に薦めるのはやめにしよう。最近のエディタはプラグインとかでいくらでも改良できるだろうし
TeX
実はそれほど使った経験はないのだが、院に進んだ先輩が煮え湯を飲まされているので
設定ファイルごとに微妙に、時にはダイナミックに違う書式
時々間違えてゲンナリ。 XML とかを考案した人の気持ちがよくわかる
シェルスクリプト
B シェルも C シェルも文法が明らかに終わってる
GNU とそれ以外の差異
cp -a が無いよぉ…… ls のカラー表示が無いよぉ……オプションの指定方法が違うよぉ……
ディストリビューションごとの差異
未だにディレクトリ構成なんかを間違えそうになる

こんだけ不満があるのに、そしてまだまだ不満がるのに、なんでお前は UNIX から離れないのかって? Windows よりはずっとずっとマシだからだ。 Mac? どうせあれも中身は殆んど UNIX でしょう。それに高いし。

Written by Kuwata Chikara
Creative Commons