Categories |
CPUの創りかた |
Modern Compiler Implementation in ML |
NerdTV |
PDP-11シミュレータで古代のUNIXを動かしてみる |
The Yakumo Project |
やさぐれ読書録
最近のツッコミ:1.Dominic(2008-06-23 05:05)
2.CheapestCheapOEMoem(2008-06-17 03:00)
3.NewDownloadCreativAdobOEM(2008-06-12 20:00)
最近のトラックバック:1.濃縮還元オレンジニュース:プロ.. (2006-12-22 22:02)
今週は先週の実装の見直しと仕上げを行った後、"Coalesce"本体へ攻め込む。一気に勝負をつけるはずが、あっという間に息切れして討ち死に。ほとんど進まずに終わる。
先週からまたグラフの形が変わっているが、これは実装していない(=他の部分で吸収している)アルゴリズム("AddEdge")をグラフから削除したため(なんか間違い探しみたいになってきたな)
5月5日から読んでいた"The Business of Software"(Michael Cusumano)を読了。日本語版のタイトルは「ソフトウェア企業の競争戦略」。「未来のいつか/hyoshiokの日記」の記事と、そこで紹介されていた「『ソフトウェア企業の競争戦略』読書感想文」シリーズを読んで購入を決めた本。
■ 「何を作るか」
この本のタイトルには"Business"という言葉が入っているけど、僕が突然ビジネスに目覚めたとかいうワケではない。とはいえ「何を作るか」にもちゃんと目を向けないといけないということを最近痛感しているのも確かである。
(「何を作るか」が大事であるというのは研究の場合でも多分同じだ。売れる(ウケる?)モノを作るにはそれなりに調べたり考えたりすることが必要なワケだし)
まず最初に目を引いたのが、この本のなかでの「ニッチ(niche)」という用語のとらえかた。ニッチといえば普通、「すき間」とか「細々と」というイメージとともに使われることが多いものだが、この本のなかでは決してネガティブな意味では使われていない。他にも参考になりそうなトピックはいろいろとあるのだが、そこはまた追い追い書く(つもり)。
■ Microsoftの開発の姿
UuidCreateSequentialみたいな仕様がデザインレビューを通過して(いや、そもそもトラディショナルなデザインレビューをやっていない可能性も排除できないかも)APIに追加されるというのが(善し悪しを超えて)マイクロソフトのすごいところだと思います。
う〜ん、やっぱりウチのカイシャでこんなカンジのAPIが無事にレビューを通るとは思えんなぁ。QA(品質保証)部署に叩き落とされそう。
と書いたのだが、実際のところMicrosoftでの開発プロセスと、僕らの開発プロセスは具体的にどこまでが同じで、どこからが決定的に違っているのかをもう少し深く掘り進めてみたいと、最近特に思うのであった。"The Business of Software"の中にもMicrosoftでの開発の様子が垣間見られるような文章がある。
Microsoftのマネージャーやプログラマーのほとんどは、伝統的な日本のソフトウェア工場やCMMのレベル4、レベル5で見られるような規律的な環境を避けている。
(…中略…)
(マイクロソフトの開発)プロセスでは(大体、3人から8人のデベロッパー、そしてデベロッパーと「バディ」として共同作業に当たる、同数のテスト担当メンバから構成される)小さなチームが個別の「機能(feature)」を担当し、そのような小さなチームが複数集まったものが、比較的大きなチームとして活動する。Windows2000のような非常に大きな製品では、15から20、あるいはそれよりも多くの機能担当チームが並行して作業を行う。
("The Business of Software"p.147, やさぐれ訳)
なるほど、CMM的なプロセス管理は行わず、一方で開発者と同数のテスト要員(!)を確保して開発を進める、というワケか。同書では他にも開発体制や進めかたについての記述はいくつか見られるのだが、やはり、これだけでは足りない。Windows NTの開発の様子を克明に描いた本としては"Showstopper!"(日本語題「闘うプログラマー」)ってのが有名だが、実際のところ、アレってMicrosoftに引っ越してきたDigital Equipments(DEC)の開発チームの物語だったりするのだよね。僕としてはもう少しMicrosoftの「根っこ」に近いところを知りたいのであるよ。
■ 「クスマノ・シリーズ」
ということで、「クスマノ・シリーズ」と勝手に命名した以下の本のまとめ読みを敢行することにした。
最初の"The Business of Software"は今回読んだ本。2冊目の"Competing on Internet Time"はNetscape社の話が中心だが、とりあえず押さえておく。
本命は3冊目の"Microsoft Secrets"と4冊目の"Japan's Software Factories"だ。どちらも今となっては少し古くなってきてはいるが、Microsoftのあの『自由奔放さ』の原点と、(かつて「ソフトウェア工場」と呼ばれていた)今の職場の『プロセス重視』の原点との対比が浮き上がることを期待しつつ、読み比べることにしたい。
友人からの推薦図書、ドイツ発のファンタジー作品「鏡のなかの迷宮:水の女王」(カイ・マイヤー)を読む。ドイツのファンタジーと言えばミヒャエル・エンデがまず最初に浮かぶ(ちなみに「はてしない物語」は一度読んだはずなのだが物語のオチが思い出せない…)が、他にもいろいろな作家がいるみたい。作者のカイ・マイヤーはサスペンス・スリラーからファンタジーまで手がける作家とのこと。(思わず宮部みゆきを連想したが、作品のテイストは多分かなり違う…はず)
この本は三冊シリーズのうちの第一作。架空の19世紀に存在するヴェネチア共和国はエジプト帝国の軍勢に30年以上包囲されながらも『水の女王』の庇護によりかろうじて独立を保っていたが…というあたりから物語は始まる。「クスマノ・シリーズ」の合間をみながらニ冊目、三冊目に進む予定。
コンパイラの処理の後半、最終目的となるコードを生成する部分のことをバックエンドと言う。現在僕が作っているコンパイラでは、バックエンドにGCCを使う(正確に言うとコンパイラはIA-32のアセンブリコードを出力し、これをGCCに食わせて機械語を生成する)予定であるが、世の中にはほかにもいろいろなバックエンドがあるようだ。
4月のRHG読書会の席でも「バックエンドにC--を使うのはどうでしょうね」とか言われていたが、「ほぅほぅ、それは結構ですねぇ」とその場ではイイカゲンな返事をしたまま、今に至るまですっかり忘れていたのだった(どうしようもないヤツだ)。ところが2ヶ月も経とうかという今ごろになって、突如「あれは一体なんのコトを言っていたのだろう」と、気になったので真面目に調べることにした、という次第。
…ええと、まずはC--から。実は説明のほうはまだきちんと読んでいないのだが、普通のアセンブリ言語の代わりに、アーキテクチャ独立な、Cに似た記法で記述できるようにしてやろうという試みらしい。処理系として、Quick C--というものが存在する。Quick C--はOCamlで記述されているようだ。フロントエンド処理系もいろいろ作られている模様。ちなみにC--のページを良く見ると"MLRISC"というキーワードが見える。これは何だろうとリンクをたどって調べてみると…
MLRISCはStandard ML for New Jersey(smlnj)の処理系に標準で含まれているバックエンドであることが分かった。Standard MLで記述された、MLTREEと呼ばれる中間言語を入力とし、そこからAlpha, IA-32, MIPS, Sparcなど、7種類以上の機械語の生成に対応しているらしい(恐るべし)。Standard ML for New Jerseyも、これを使って機械語の生成を行っている(smlnjは2年以上使っているのに気づかなかったよ…)コード生成に先立っていろいろな最適化技法を駆使しているなど、かなり奥が深い。要チェックか?
今回のRHG読書会はプログラミング言語"HSP(Hot Soup Processor)"の作者、おにたまさんと「なでしこ」の作者であるクジラ飛行机さんの2名をゲストに、根掘り葉掘り聞いてみるという企画だ。開始早々、よそでは絶対に出ないような、鋭く深い質問の連続。あわれ、エリア51で何人もの科学者にとり囲まれ、ありとあらゆる実験を受ける2人の異星人…いや、逆だ。UFOにさらわれ、異星人に囲まれてありとあらゆる実験を受ける2人の地球人といった雰囲気の会合となった。
HSPはプラグインの充実ぶりが目を引く。3Dグラフィックス系のライブラリを使ってロボットが画面を動き回るデモなどを見ると、やっぱりゲームを作ってみたくなるのだな。うん。
なでしこ」には『それ』という変数(perlで言うところの$_に相当する)があるのだが、ちょっと突っ込んだ議論をしようとすると、
「この場合、『それ』には何が入るんですか」
「それは場合によるんですが、『それ』は〜なので」
とか、良くわからない会話となり、かなり愉快なことに。「もうここからは英語で議論しましょう」とかいうmputさんの発言に一同爆笑。英語圏の人たちがプログラミング言語について話をするときにも同じような目にあうのだろうか、という話も出た。少なくとも英語圏外のヨーロッパ系言語の人たちについては、プログラミング言語自体は英語であった方が分かりやすいという話を以前に聞いたこともある。以下2003年8月の日記、Bertrand Meyer氏とのQandAから:
Q:「フランスとかドイツ語圏の人たちって、プログラムに自国語とか使ってたりするんですか?」
A:「使ってるケースは結構あるよ。プログラミング言語のキーワードと自分たちの書く部分の区別が出来るのはある意味便利だからね。英語で全部書くと両者の区別がつかず、(彼らにとって)少し分かりづらくなるみたいだ」
「なでしこ」にも高階関数があると良さそうだけど、日本語での表現は少し難しいかなという話も。遅延評価とかどうすればいいだろうという話題になって、「仮に何にも定義してない名詞について書いていて、最後にその名詞とは何かという文にすればいいんじゃない」とshelarcyさん。「そうなると論理型言語一歩手前まで来てしまいませんか?」と言いながら、僕は『論具』という言語を紹介する。そうこうしているうちに読書会の議論も収束し、そのまま皆飲み会へ移動。
飲み会でも面白い話題は出たのだけれども、これはまた思い出したときにでも書く。
本日は"Coalesce"本体の残りの実装を力づくで書き上げる。コンパイルは通るが、正しく動作するかは全く別の話。
今朝になって突然、購入から4年目を迎えるThinkPad(iSeries 1124)が2回連続でブルースクリーンを表示して止まった。いずれもブート画面(Windowsのロゴが表示される画面)の手前で発生し、"APMなんたら"というメッセージを出しているところからすると、どうもソフトウェアの不具合ではないようだ。その後正常に起動したので、まぁいいか、と思いながら作業していると再びブルースクリーンで停止。とうとう年貢の納め時が来たようである。
乗り換えるマシンを探すべく、川崎のヨドバシカメラへ。候補はあらかじめ、PanasonicのLet's Note R4とIBM(もはや今はLenovoだな)のThinkPad X40かX41に絞られている。Let's Noteは重量990グラム、バッテリ駆動時間9時間という売り文句が目を引く。かたやThinkPad X40/X41は、重量1.2キロ、バッテリ使用時間3時間強(モデルにより異なる)という点で不利であるものの、おなじみの最強なキーボードと最強なトラックポイント、そして最強な黒いボディがある。スペック上はLet's Noteが有利なのだが、いざ店頭でLet's Noteをさわり出したあたりから迷いが出てきた。Let's Noteのキーボードの小ささとタッチパッドの操作感は慣れるまで少々時間が必要になりそうだが、今は慣れるまでの時間も惜しい。ThinkPadのバッテリ駆動時間の短さは、いざとなれば(重量は増えるものの)大容量バッテリを買えば解決することだし、値段的にもThinkPad X40の方が5万円ほど安い…ということで、ThinkPad X40(2371-AEJ)に決定。
僕が今まで買ったノートマシンは、ThinkPad 230Cs(1995-1997), ThinkPad 535(1997-2001), ThinkPad iSeries 1124(2001-2005)と、3台続けてThinkPadであったが、このThinkPad X40で4台目となる。マシン名は、初代230Csから使われていた名前を襲名し、四代目"eagle"と決定。ちなみに"eagle"は、アポロ11号の月着陸船の名前。自宅のデスクトップマシンには同じくアポロ11号の指令船である"columbia"という名前が付いている。
自宅に戻ってすぐに、先代ThinkPadと新ThinkPadを有線でつなぎ、データ移し替えを行う。不安定になっている先代からのデータ転送はいつ止まってもおかしくないということで不安ではあったものの、3時間ほどで必要なデータは新マシンへの移動が完了した。
新しいモノを手に入れたというワクワク感はない代わり、買ったばかりのマシンでも数分で、10年以上使ってきたかのような気分になれる、という一貫性はやはりすごいことだと思う。これは他の機種にはない感覚であるし、僕がThinkPadを使い続ける理由もここにあるのだろう。四代目ThinkPadもその期待を裏切らないマシンである。
# さー。 [はてしない物語、後半は哀しい話だったような。 でも、やはりオチは思い出せず…。 ]
# 島野 [この前はありがとう。読んでくれたんだ。一巻だけだと? がいっぱいなことでしょう。はてしない物語の最後はむこうの世界で..]
# 福盛 [今日「鏡のなかの迷宮」の2巻目と3巻目が届きました。続きが楽しみ。 「はてしない物語」はハッピーエンドということで、..]