一言でいえば、「自分に報い続けたいから」ということになる。
私の職業生活でもっとも多くの時間を注いだのがソフトウェア作りだ。その作業に対して、実際のところ、好きとか嫌いとか一言で割り切れるはずがない。複雑な感情を持っているというのが正直なところだ。
以下に照らし合わせれば、その複雑な感情とやらそのものがお嫌いなのだろう。
私の職業プログラマのとしての最大の欠点は、ソースコードに対して強い美意識を持たずにいられなかったところだろう。生来の生真面目な性格が災いし、私の基準で美しいとはいえないソースコードを敵視しすぎた。
で、何をもって美醜を決めているかといえば、コルモゴロフ複雑性と、そこからの距離をお使いのようだ。
うるう年を計算するアルゴリズムを考えてみる。
"Hello, world!"やFizzBuzzなみに使い古された例であるが、それではこちらはどうだろう。
(Shift_JIS|EUC_JP|ISO-2022-JP)とUTF-8を変換するアルゴリズムを考えてみる。
問題がこうなったとたん、最も「美しい」実装も「見るに耐えられない」ものとなる。(Shift_JIS|EUC_JP|ISO-2022-JP)が元としているJIS X 0208をはじめとする「JIS X 02XX規格」とUTF-8が元としているUnicodeの間には、うるう年のような「美しい」変換規則などないからだ。よって変換テーブルを使うこととなる。何万文字もあるので、当然ソースコードも大きくなる。元記事の「美しくない」事例など、大便の前のフケひとかけらに過ぎないほど。
私は Perlというプログラミング言語で、まさにこれを行うソフトウェアモジュールのメンテナを務めている。元発言主からみたら、汚穢屋(死語?)にも匹敵する醜い仕事であろうことは想像に難しくない。
我ながら思う。よくぞまあこんな「便所掃除」を引き受けたな、と。それも無給で。それどこか、Perl 5.8の開発が佳境だったその年の私の年収は60万円ちょっと。それも独身貴族というのであればとにかく、仕事辞めたて、次女生まれたて。阿呆にもほどがある。
結論からいうと、これは私が今までした「仕事」の中で最も報われたものの一つである。まず私自身が報われた。
UTF-8のベトナム語から声調記号を落す - Rails で行こう!@@map_source =<<EOS A 0041 A 00C1 A 00C0 A 1EA2 A 00C3 A 1EA0 # 以下140行略 EOS
というような「醜い」コードを書く日常茶飯事、いや日常用便時からまず自分が解放されたのだ。
次に、私が最も尊敬する人物の一人と友人になれた。あの Larry Wall である。
404 Blog Not Found:身内には言えない「頑張ってるね」もあるotsukaresama deshita!
この一言が一プログラマーにとってどんな意味があるのか想像力を働かせられない人は、ただちにプログラマーをやめるべきだと断言する。弾言でなくて。
もうこれだけで一年あまりを「棒にふった」経験は「元が取れた」のであるが、「儲け」はこれに留まらない。EncodeがPerlの標準モジュールとして全世界のWebサーバーに普及することによって、文字コード問題というのは「できれば解決しておきたい」ものから「解決しておいて当然」のものとなった。本blogの文字コードはEUC-JPであるが、そんなことを気にせず記事をかけるのは、WebサーバーとWebブラウザの方でよきに計らってくれるからで、そしてサーバー側でよきに計らってくれるようになったのは、サーバーを構築するソフトウェア技術者たちが、「汚水槽」に手足をつっこまなくとも私が作った「ユニットバス」を設置して「配管」するだけでよくなったからだ。
しかし、他のどんな成果よりもうれしかったのは、Perlコミュニティという、プログラマーのコミュニティの中では最も魅力的なコミュニティの一つの中で、かけがえのない地位を得たことだ。
コンピュータと心が合体するような「対コンピュータモード」は、非コミュだった少年時代には、それほど嫌ではなかったが、それなりの社交性を身に着けてきている現在では、たいへん苦痛になってきている
プログラマーほど社交的な人種を、私は知らないのだが。ウソだと思うならYAPCに一度来てみるといい。今年も来月東工大で行われる。
「対コンピュータモード」「対人モード」と2つのモードがあり、これらは相互に排他的
というのがいかにガセかがいやがおうでもわかるから。
ソフトウェア技術者は私にとって報われない職業であった
ご愁傷さま。もうこの時点で間違っている。
ソフトウェア技術者というのは、まず誰より自分に対して報いる仕事なのだから。
自分に報いることが出来なくて、どうして人様に報いることが出来ようか。
私が一目置くソフトウェア技術者たちは、まず誰よりも自分に報いる人々であったし、あるし、これからもそうでありつづけるだろう。私自身、人に報いようと思ってやった仕事がうまく行った試しがない。たかがblogの記事一つでさえそうなのだ。
自分に報いるのであれば、どんな醜い仕事でも「はい、喜んで!」やれる。
世の中が美しいのは、そうやって自分に報いている人々が、その過程でゴミ拾いを続けて来た結果なのではないか。
なのだとしたら、ゴミを拾わぬ人に、美の何たるかを語って欲しくはないものだ。
Dan the Janitor
>> プログラマーほど社交的な人種を、私は知らないのだが。
その根拠って?どうやって測定したの?
それとも個人的なフィーリング?
それなら正しい間違っているを議論しても不毛だ。
> ソフトウェア技術者は私にとって報われない職業であった
>> ご愁傷さま。もうこの時点で間違っている。
上に同じ。これも感じ方なので正誤を議論するべきものではない。
ま、個人のブログなので何を論じても別にいいけど。