2007-11-04

"高校数学でわかる半導体の原理" 竹内淳 著

アル中ハイマーは高校まで数学が得意だと錯覚していた。ところが、大学であっさりと挫折してしまう。以来数学は嫌いだ。「高校数学でわかる!」なんて、ブルーバックスもなかなか憎い企画である。酔っ払いは、三度もこの呪文の罠に嵌ってしまう。

おいらは半導体業界との付き合いがある。ちょうど先月から仕事が迷い込んできた。独立する前は、この業界にお世話になっていたこともあり、その流れで今でも年に一、ニ度ほど関わることがある。主な業務は、回路設計と検証環境の構築である。今、検証環境を作り終わって一息ついたところである。あれ?今月末完了って見積もったような?いや!まだ夜の社交場からのアクセスをテストしていない。それも、ほど酔い気分という暗号語はセキュリティレベルの調整が難しい。テスト中、うちの酔っ払いマシンは「君に酔ってるぜ!」とかぬかす始末。やはり月末までかかりそうだ。
アル中ハイマーは元来ハード屋なので、ハードボイルドに生きることをモットーにしている。しかし、昔から雑用係になることが多いため、多少コミカルな態度をとる。これもハードに生きる人間の隠蓑で、世を欺くための演技である。

ハードな世界も言語による設計が進み、随分ソフトになったものである。20年前、アル中ハイマーが社会人になった頃、まだまだアナログ全盛で増幅回路が分からないと馬鹿にされたものである。おいらはオペアンプなどのリニアICに逃げ込んでものだ。物理数学の苦手な人間には辛い分野である。その頃CPUが流行だした。プログラマブルデバイスも登場しベテランの技術者を混乱させていた。大した知識ではないのだが、論理式やアセンブラ言語に拒否反応を起こしている。こうした背景もあって、おいらはディジタルへ逃げたのである。しかし、いまや論理だけでは対応できない。線形数学の中に放り込まれている。アル中ハイマーは、いつまでも数学に追いまわさる運命にあるのか。

デバイスの話も苦手であるが、完全に避けていたわけではない。昔、Behzad Razavi著の「アナログCMOS集積回路の設計」を読んだ時は、それなりに理解したつもりである。ただ、いつもながらリフレッシュサイクルが追いついていかない。ある産学連携の企画で、アカデミック価格で開催されたアナログ回路の講義をこっそり受講したりもしていた。こうした企画は貧乏人にはありがたい。無駄な努力を面白半分にやっていたものである。本書は、そうした時代を懐かしく思い出させてくれる。そこには、半導体の基礎知識、ショットキーとPN接合、トランジスタ開発のドラマが語られる。高校数学でもなかなか難しいレベルもある。どうせアル中ハイマーの能力では厳密に理解することなどできない。しかし、その難しい部分でさえなんとなく理解した気分にさせてくれる。なかなか気持ち良く酔える味わい深い再入門書である。

本書は大半が科学の話であるが、トランジスタの発明については、そのいきさつにも触れている。ちょっとメモっておこう。
トランジスタは、PN接合を組み合わせることにより電気信号を増幅できる素子である。AT&Tベル研究所のウォルター・ブラッテン、ジョン・バーディーン、ウィリアム・ショックレーらのグループにより発明が報告される。
リーダーのショックレーは有能な研究者であったが人格的に問題があったという。自分自身の能力に自信をもっていて協調性を欠いていたらしい。優秀な人材には時々見かけるパターンである。
ショックレーが目指したものは、電界効果トランジスタのタイプ。半導体の両端に2つの電極を付け、中間にもう1つの電極を付けて、中間の電極に電圧をかけることにより両端に電流の経路を作るといったものである。当時は、この経路ではなかなか増幅作用が得られなかった。これをバーディーンとブラッテンが実験により克服する。半導体もシリコンからゲルマニウムを採用する。ゲルマニウムとプラスチックの三角形の頂点を押し付けられることから点接触型トランジスタと呼ばれる。1947年、真空を使わずに固体だけで増幅装置を実現したのである。
尚、バーディーンは、この実験にはショックレーの貢献はないと語っている。トランジスタの発明が公表されたのは1948年。ベル研究所はチームワークの勝利であると公表。記者会見ではショックレーが質問に答えたので発明の中心人物として映った。その後、特許論争でショックレーと二人の間に溝ができた。点接触型トランジスタは製造が難しく、量産しても不良の山を作る。力学的にも壊れやすいなどの欠点を持っていた。
ショックレーは、トランジスタの開発を主導してきた自負心の一方で、点接触型トランジスタの実験には関わっていない後ろめたさがあったのかもしれない。休暇を返上し、わずか1ヶ月後に接合型(バイポーラ)トランジスタを発明した。バーディーンとブラッテンは、特許からみても増幅作用がなぜ起こるかの明確なイメージを持っていなかったという。一方、ショックレーは、P型からN型、そしてP型へと戻る電流の経路から増幅作用が得られるという本質を見抜いていた。
1955年ショックレー半導体研究所が設立される。これが後年のシリコン・バレーの起源となる。順調にスタートしたかに見えたショックレー半導体研究所も、間もなく部下との対立が始まる。その中の、ゴードン・ムーアとロバート・ノイスはインテル社を設立する。ノイスは集積回路の発明者としても有名である。ムーアはムーアの法則を提唱した人である。ムーアは、ショックレーは半導体の中の電子の動きを直感的に把握する優れた能力を持っていたが、人を動かすのは下手だった。と評している。
ショックレー研究所は、やがて経営に行き詰まるが、シリコン・バレーという米国半導体の中核を生み出した貢献は大きいと語られる。

2007-10-28

"世界史の流れ" Leopold von Ranke 著

ある歴史小説を読んでいるとランケに触れられていた。なんとなく昔の記憶が蘇る。ランケの「世界史」が未完に終わったという話を知ったのは学生時代である。当時、ランケの全集に挑戦しようと大学の図書館をあさったものだが、思うように見つけられなかった。その頃を思い出してアマゾンを放浪する。岩波文庫の「世界史概観」あたりが中古で出ている。んー!いまいち酔えない。実は他にも探している歴史古典がある。アル中ハイマーが読みたい本はロングテールの法則にも従わないようだ。とりあえず本書でも読んでみよう。

時代は、フランス革命、ナポレオンを経て、君主制から共和制、そして人民主権へと流れる。1854年バイエルンの国王マクシミリアン2世は、ランケに世界史の連続講義を依頼する。国王にとっては、ヨーロッパで革命の気運が高まる中、君主制の危機に迫られてのことだろう。本書はその19回におよぶ講義録で、古代ローマからその時代までのヨーロッパ史を展望する歴史叙述である。キリスト教やイスラム教が生まれてヨーロッパで宗派が確立した時代でもある。本書を概観すると、ヨーロッパの歴史は宗教に基づいた歴史でもあることがうかがえる。著者は、ヨーロッパ諸国はキリスト教諸民族を一体化した一つの国家として考えられるべきであると主張している。なんとなくEU統合を予感させるような発言である。

著者は、世界史を講義するにあたって、どこまでさかのぼるべきか?という考えを大切に扱っている。要するに歴史から何を学び、現在をどう生きるかをテーマとしなければ意味がない。まず、時代の価値を考察する上での哲学から述べられる。歴史の講義はこうでなくてはいけない。そして、当時、影響が強かった古代ローマ帝国までさかのぼることへの意義が語られる。古代史はローマへ流れ込み、近代史はローマから流れ出ると評している。全ての道はローマへ通ずるというわけか。
学校教育にも歴史科目があるが、決まって石器時代やら猿人までさかのぼる。歴史から何を学ばせるかという課題は、教える側の腕の見せどころでもあろう。にも関わらず、受験に追われ必ず現代はおろそかにされる。全てを概観すれば中身が薄れるのは当然である。歴史は次から次に生まれてくる。現代人はますます苦悩が増える。ついには歴史をつまらないものにする。

講義は、精神の進歩における哲学から始まる。精神の進歩は個人では限界がある。人の寿命は短い。より高い精神を求めるならば、人類として受け継がなけらばならない。ただ、悲観的な話もある。著者は、人間の精神は常に進歩するわけではなく、精神の向上は歴史では説明がつかないと主張する。繁栄を極めた後に野蛮に立ち戻った例も多い。歴史は個々の時代で、その固有の価値を認めるべきだと語られる。
哲学では、プラトンやアリストテレスを凌駕した例を知らない。政治学では、基本原理は古代人によって示されている。歴史も同じで、トゥキュディデスより偉大な歴史家はいないと述べている。しかし、古代人よりも豊かな経験から、いろいろな試みができるのは確かである。歴史からは「進歩」という概念は否定されるべきであるという主張には、説得力がある。
では、歴史の復習を兼ねて泡立ちのよさそうなところを章立てて見よう。なぜかって?そこに泡立ちのいいビールがあるから!

1. ローマ帝国の評価
ローマ帝国はアレクサンドロス大王やその後継者たちによって建設されたギリシャ的、マケドニア的、東方的帝国である。その中でも東方主義の最も重要な諸要素をとり入れた帝国であると評している。東方とは、宗教上の対立が見られるユダヤ人とエジプト人、あるいはアッシリアやバビロニアと接している諸国である。東方では宗教上は対立していたが、政治的には一致してギリシャを敵と見なしていた。ペルシャは巨大な王国として君臨し、その支配を免れたのは遠方のカルタゴ人ぐらいなものである。ローマ人はユダヤ人と対立したが、ユダヤ人の中から世界宗教の理念が出現する。ユダヤ人は神を唯一性という理念を保持したが、それよりもむしろ一つの国民的な神とみなしたキリスト教が現れた。キリスト教はローマ帝国を席巻する。キリスト教を世界的言語で広め、世界宗教の地位に押し上げたローマの功績は大きい。しかし、本書は、世界的にローマの政治、法律などが広まったのは、二つの民族の侵入によるところが大きく、むしろ征服された後に開花していると述べている。民族の侵入とはゲルマン民族の移動と、アラビア人の侵入である。

2. 民族進入によるローマ文化の広がり
ゲルマン人については、世襲的忠誠の原理を評価している。主従関係こそローマに見られない強固な団結力であるからである。ゲルマン民族の移動は、最初のはずみはゴート族から生じる。黒海沿岸でフン族と紛争を起こす。フン族は東ゴート王を倒し、西ゴートを圧迫する。西ゴートはローマ帝国に避難所を求め、ローマはこれを拒まなかった。西ゴートは、ローマ属州が提供した食糧と引き換えに小児や家畜を取り上げられて紛争を起こす。そして、ローマ皇帝ヴァレンスは殺され、ゴート族が勝利する。この大混乱の間に、ゲルマン諸族はそれぞれなんらかの運動を開始する。ゲルマン民族の侵入によりローマ帝国は破壊されたが、属州民はなんらかの形で平和裡に征服者と結びつき新しい諸国民が生まれた。ゲルマン民族の侵入は、東方から完全に分離し近世ヨーロッパの原形を成す。
アラビア人の侵入については、イスラム教徒の影響を物語る。6世紀に、ユダヤ教やキリスト教、その他の宗教にも親しもうとしない一派が生まれた。マホメット率いるイスラム教である。彼らは、東ローマとペルシャの両方と戦いを続ける。東方では、イスラム教に屈従するのが原則で、イスラム信仰を公言しない者は国政にも軍事にも参与できない。西方では教会と国家が国民化されるが、東方では国家も教会も人民の低層にまで及ばない。東方の発展に対して西方が優勢になったのは、この点が大きいと考察している。東方も栄華をみせたが西方の発展は実質的である。キリスト教の活動は比較的低階層の人々においている。これが近世ヨーロッパと、トルコを含む中東の二つの基本社会の枠組みである。

3. 皇帝と教皇の争い
カノッサの屈辱は、神聖ローマ皇帝、と言っても強固なドイツから選ばれているので、ドイツ皇帝とローマ教皇の意地の張り合いである。結局皇帝側が頭を下げるのだが、イギリスにおいても、教会と皇帝の間で似たような覇権争いが起こり、教会側が勝利している。ヨーロッパ各国で教会側の覇権が強い時代となる。11世紀になると西欧キリスト教の指導者は皇帝ではなく教皇であった。かつてイスラム教が侵略勢力として登場し、ローマ帝国の領土を席巻したことを思い浮かべて、侵略された地域を奪還しようという考えが生じる。これが十字軍である。十字軍の意義は、西欧の諸帝国の東方に対する偉大な共同事業であると考察している。エルサレムを征服し一連のキリスト教公国が建設されると、教皇の権力を著しく増大させた。しかし、二次、三次と十字軍は全アジアに一致して抵抗されたため、パレスティナは再び失われる。十字軍の失敗は、むしろ教皇たちにとって好ましい結果だったのかもしれない。というのも、引き続きヨーロッパを動かす理由を持ちつづけることができるからである。15世紀から17世紀にかけて、大航海時代に入るが、いずれも宗教的に制覇しようとしたもので、いずれイスラム教の地を挟み撃ちにでもしようと企んだものである。ゲルマン風西方宗教と、アラビア風東方宗教の争いの歴史である。その中で皇帝と教皇の覇権争いは、西方キリスト教の内部紛争である。ヨーロッパの歴史は、政治や宗教の歴史であり、歴史的にみても政教分離とは程遠いもの思える。

4. ルターの本質
現代においても、カトリック派とプロテスタント派は、国連決議などで意見が対立するのをよく見かける。プロテスタントの源流を作ったのはルターであるが、その本質を語ってくれる。カトリックの教権の基礎をなす教説、すなわち教皇の決定や宗教会議の決議には直接神の考えが現れるという教説に反対していただけで、教権は聖書に基づくべきであると主張したにすぎない。ルターは聖書を重んじただけであり、なにも伝統に反対したわけではない。もちろん新しい宗教を興そうとしたわけでもない。教皇組織の横暴な振る舞いに対して聖書に立ち返り、改革しようとしたものである。また、聖書を現実化しようとしたのでもなく、聖書に反するものを除こうとしただけである。最初から一つの教会を樹立しようとしたものではないと語られる。
カトリック教会は横暴さは科学にも向けられる。科学者も一つの異端教徒とでも考えたのだろう。天動説を否定したガリレオは処刑された。

5. 列強の登場
17、18世紀になると宗教の争いから哲学や自然科学へと進展する。精神は神学から離れる傾向をとる。自由で制約を受けない立場で物事の本質を研究する時代がくる。スペイン無敵艦隊は、カトリックの発展と振興を主目的としていた。その意図が失敗に終わって次第に崩壊する。その頃オランダが通商貿易によって台頭する。通商や産業はスペイン人にとって性に合わない。この頃スペインを屈服させたフランスが列強となる。フランスは、かつてヨーロッパにない君主制を発展させる。ルイ13世が君主制の確立者である。ルイ14世は、全ヨーロッパにわたって侵略をほしいままにした。彼はフランスの堅固な国境を作ろうとし、優れた実務家でもあり、その功績は大きい。自制というのは何人も抵抗することのできないような絶対的独裁権力にとっては危険な存在である。ルイ14世はこの自制を問題にもせず自らの利害の欲するままに行動した。著者は、以下のように評している。
「もしルイ14世にして、度を過ごすことがなかったならば、あらゆる時代の最大の偉人の一人として仰がれたであろう。」
この頃は、5つの列強が肩を並べた時代でもある。カトリック的君主制の原理に立つフランス。ゲルマン的、海上的な、また議会制の原理に立つイギリス。スラブ、ビザンツ的原理に立ち、物質的な面で西欧文化を摂取しようとしたロシア。カトリック的、君主的、ドイツ的原理に立つオーストリア。ドイツ的、プロテスタント的、軍事的、官僚的原理に立つプロイセン。

6. 改革の時代から立憲政治へ
君主制から共和制に移り変わるころ、権力は下から生じるべきものという意識が高まる。世襲的権利から大衆から生まれる権利への転換期であり、アメリカ独立戦争やフランス革命として育てられる。フランス革命時に、反対派はことごとく処刑される。意見の合わないものも処刑する。まさしく恐怖政治である。人民主権は一見耳に優しい響きであるが、実体は少数派を弾劾するなど、人間の本質である残虐な集団心理が働いた結果である。そして、一度大幅に振れた振り子は元に戻ろうとする。ナポレオンの登場で君主制の復活を見る。彼は王政復古など考えもせず自ら皇帝となる。ナポレオンの失脚後、ヨーロッパで君主制と民主制の対立しない国はなくなった。君主制と民主制、上からの世襲的傾向と下からの自治的傾向、これら二つの原理を結びつける努力が始まる。こうして生まれたのが立憲政治である。この頃、ブルボン家が立てた旧憲法では秩序を維持することはできなかった。

ランケは、人民主権のみを主流的傾向として捉えるべきではないと主張する。君主制と人民主権の二つの原理の緊張感にこそ、これからの政治の傾向があると見なしている。君主は人民権を育て、人民の主張が君主の意識を高める。そこには、政治と宗教の関わりもある。民主主義の発達のみが、人間の精神を高めるものではない。時代が後になれば道徳的に程度の高い人間が増えるということは必ずしも認められない。現世代が前世紀よりも知性の高い人の数が多いとは思わないと語る。
最後にランケの言葉をメモっておこう。
「人は、歴史に過去を裁き、未来の益になるよう同時代人を教え導くという任務を負わせた。しかし、本書の試みはそのような高尚な任務を引き受けるものではなく、ただ、事実は本来どうであったかを示そうとしたに過ぎない。」
感情論に支配された歴史には、どんな重大事項であれ色あせてしまう。水のような原酒にこそ味わい深いものがある。ただ、アル中ハイマーはこれに「熟成」という概念を加えたい。

2007-10-21

"ゲルマーニア" タキトゥス 著

歴史の叙述というのは、アル中ハイマーが昔から好む分野である。岩波文庫の古代叙述はなるべく読みたいと思っているが、絶版などで入手の難しいものもある。中古品ではべら棒な値がついているものもある。酒と同じで熟成されると価値は上がるようだ。本書は、ゲルマン民族の大移動が現在のヨーロッパの原形を成したという意味で、昔から注目していた。ただ、古文風で読みづらい印象があるのでいまいち踏み込めないでいる。それも読書の秋にまかせて読んでみることにする。ところが、印象とは随分違って簡潔な表現で読みやすい。むしろ、本文よりも注釈の方がやや複雑で読み辛い。覚悟して挑んだが拍子抜けである。

タキトゥスは古代ローマの歴史家である。
本書には、ローマ側から観察した北方地方ゲルマーニアの報告書風の感がある。ゲルマン民族の野蛮性を暴くと同時に強力な敵として一目置いており、いずれローマの災いとなることを予感しているかのようである。素朴なゲルマーニアと対比して腐敗したローマを嘆いているようでもある。ローマの軍隊は厳しい軍律に基づくが、ゲルマーニアの軍隊は人格的世襲的な忠誠の原理を基盤としている。主従関係こそローマには見られない強固な団結力であると評している。帝政ローマが、繰り返しライン川を東へ渡り、ゲルマーニア侵攻を試みたのも、この地の平定が必要に迫られたいた様がうかがえる。
そして歴史は、ローマ帝国を滅ぼすことになるゲルマン民族の大移動を見ることになる。

ゲルマーニアというと単にドイツ系種族をイメージしてしまう。しかし、本書ではその限りではない。ここで叙述しているゲルマーニアの領域は厳密に規定されていない。その定義は、ゲルマン語を使用し、ゲルマン風の習俗を持ち、しかも自立的でローマの主権に従っていない民族である。その住地は、今のフランス地域に住んでいたケルト族から小アジアまでも含まれ、その解釈は幅広い。もともと移動性に富む彼らの住地を規定することはできないようだ。あまりに多い諸族の存在に地図を眺めるだけでもアル中ハイマーはベロンベロンに酔ってしまう。

1. 容姿
アル中ハイマーには、ゲルマン民族は勤勉で誇り高く容姿も整っているという印象がある。本書は、異民族との通婚による汚染を蒙らず、身体の外形が同じ純粋な種族と述べている。鋭い空色の眼、ブロンドの頭髪、堂々とした体格で、労働には忍耐がなく、渇きと暑熱には少しも堪えることができないという。勤勉なイメージとは異なるようだ。ただ、寒気と飢餓には、その気候と風土のためによく訓化されているという。ローマ人からみて容姿に憧れている様もうかがえる。

2. 経済
金銀に対してそれほど執着をもっていない。牛の数が唯一にして最も貴重とする財産であると分析している。それでも、ローマ帝国の近くに住んでいる人々は金銀の価値をわきまえているなど交易もあったことがうかがえる。

3. 統帥
王を立てるには門地をもってし、将領を選ぶには勇気をもってすると述べられる。王には無限の権力はなく、将領も権威よりは自ら模範となる人物でこそ人を率いることができるという。規律のある集団であることがうかがえる。そして高度な政治理念を有すると評している。勇気を重んじ、戦死を恐れるのは恥辱であり、戦列を退いて生を全うすることを恥辱と考える。よって、永い平和で英気を喪失している場合、進んで戦争を行うために部族を求めて出かける。アングロサクソン系もゲルマン人がグレートブリテン島に渡ったのが源流のようだ。このあたりはローマにとっての脅威を物語っている。強壮にして好戦的であるが、平和時には、生活を女性や老人に任せ自ら怠惰を求め無為に過ごすという。この性質を不思議な矛盾であるとも評している。

4. 住居
都市を作らない。住居が互いに密接することを好まない。泉、野、林がその心に適うままに、散り散りに分かれて住居を営むとある。ドイツの地名で泉 -born、川 -bach、野 -feld、林、森 -waldを末尾に持つものが多く残っているのは、この特徴からもうかがえると注釈されている。建造技術が発達していない点も指摘している。家屋のまわりに空地をめぐらすのは、敵襲による兵火の災害を小さくするためでもある。常に他部族の襲来を前提としており、密集型のローマとは反対の光景が語られる。

5. 女性の地位
女性の地位は意外と高い。また、貞操感は強く夫を一人と決めて未亡人でさえ再婚は珍しいという。人口の巨大さにも関わらず姦通は極めて少ない。その処罰もたちどころに執行され夫に一任される。一旦貞操を破ると、鞭を打って村中追いまわそうが、髪を切って裸にしようが、無惨な行為がなされる。
奴隷への扱いも、鞭打ったり、鎖でつながれるなどはごく稀であると語る。奴隷については、様々な能力から評価をランクされるなど合理的な様子もうかがえる。

アル中ハイマーが、こうした歴史叙述を好むのは、現在の情景に照らし合わせながら読めるところである。これは、人間の道徳観や価値観が古代から進歩していないからであると考えていた時期もあった。しかし、古代の残虐さや傲慢さがそのまま現在の価値観と比較できるはずもない。いくら女性の地位が高いとか自由な精神とか語られたとしても奴隷制の時代である。
しかし、文章だけ読むと現在においても違和感がないのはなぜだろう?
そもそも人間扱いされていない種族や奴隷は残虐に扱われるのが当たり前で記述すらされないだろう。人間は相手をどの位置付けにするかで態度も豹変する。相手を人間ではないと認めれば残虐な態度も平気でとることは歴史が示している。民族間紛争や宗教紛争も、自分の種族、自分の宗派が優れているという認識が根底にある。自分よりも見下したいとか、自分を持ち上げたいという意識は人間の本質なのだろうか?向上心や努力というものは、人を見下すための行為なのか?自分を人の風上に置きたいと思う意識とはなんだろう?
身分の上下関係にしても、時代によって相対的には大して変わっていないかもしれない。おいらが言う身分の上下関係とは、税を徴収する側とされる側である。そうとでも考えないと、現在においても、不平等な予算、不適切な資金流用、不透明な会計システムがまかり通ることへの説明がつかない。
人間の過剰なエリート意識とは、見下せる人間の存在を意識することなのだろうか?どんな立派な理念が語られた時代であっても、記述すらされない非道徳なタブーな世界が存在する。30世紀あたりには、人間の価値観は20世紀前後まで進歩しない時代であり、社会堕落と道徳観もない野蛮な時代として語られているかもしれない。
おっと!小さな哲学という酒には、自問自答上戸というわけのわからん酒癖を宿らせる呪術力がある。

2007-10-14

"文章読本" 三島由紀夫 著

アル中ハイマーには文学センスが全くない。それも幼少の頃から諦めている。特に日本文学は、句読点すらつけない!妙なカタカタ表現!と難しいテクニックを披露してくれる。意地悪されているような気分にすらなる。海外ものばかり読むと翻訳語に毒されていく。もはや、なにが日本語かもわからない。アル中ハイマーとはそうした病である。それでも、読書の秋だ!たまには日本文学を嗜むぐらいのことをしてもいい。と思っていると、ある系譜を思い出す。

日本文学に「文章読本」という書物の系譜があることを知ったのは何年前だろう?偶然にも、中条省平氏の「文章読本」を読んで思い出した。
「文章読本」とは、著名な作家が自ら名文と評した文章を集めて解説をほどこしたものである。戦前の谷崎潤一郎に始まり、菊池寛、川端康成、伊藤整、三島由紀夫、中村真一郎、丸谷才一、井上ひさし、向井敏と名を連ねる。中条氏は、近代日本に口語体を提供できたのは、明治維新以後の小説家の貢献であると述べている。現代の口語文が、日本古来の文章体と輸入された西欧語の文脈とが互いに融合した結果であることは容易に想像がつく。日本語の伝統が蝕まれる時代に、文章とはいかにあるべきかという問題意識を持ちつづけた作家たちの苦悩がうかがえそうである。とは言っても、さすがにこの系譜を全部追っていく元気はない。気が向いた時にでも一つ一つ読んでいければそれでいい。谷崎潤一郎氏に始まるものは「いかに書くか」を説いているらしい。そこにはプロの真髄が凝縮していると想像している。対して、三島由紀夫氏は「いかに読むか」という視点に立っているらしい。素人に、なまじな文学の書き方など伝授するにはおよばないと考えたのだろう。アル中ハイマーが小説を書くことなどありえない。読者の立場から三島氏を読んでみることにしよう。

本書は、日本語文章史の概観を巡ってくれる。
日本文学の特質は女性的文学と言っていいようだ。平仮名で綴られた平安朝の文学は、ほとんどが女流であることからもうかがえる。平安朝時代には、漢字が男文字で、平仮名が女文字と言われていたようだ。
通念では、女性は感情と情念が豊かで、男性は論理と理知を重んじる傾向があると言われる。日本の歴史からして、論理と理知は外来思想に頼ることが多く、純粋な伝統文学という観点からは女性の文化であるという。日本人が論理的思考に弱いと言われるのは、こうした背景があるからかもしれない。政治や外交戦術で意義主張を叫ぶわりには決定的な論理の裏付けがない。数字を出せば証明できると勘違いしている人もいる。数字の信憑性は論理で武装しなければ説明できない。感情論に持ち込みやすい分、世論扇動しやすい国民性なのかもしれない。逆に、季節の移り変わりを情緒的に楽しんだり、五七調の韻律を楽しむ特質があると言える。言語の持つ特性はその民族の特性を表現する。
日本人は外国文学や外国文化の概念が一つ一つそのまま日本語に移管できるという幻想を抱いているという。日本ほど翻訳の盛んな国はないだろう。これも感性に自信がある表れかもしれない。いまや翻訳文の乱立で、どこまでが本来の日本語の文章かを区別することは難しい。アル中ハイマーは翻訳本を読むことが多い。日本文学が読み辛いと思うのは、既に翻訳調に毒されていると言える。ある小説はおもしろいという感想は持てても、この文章はすばらしいという感想を持つことはあまりない。文章を味わう習慣が無いということが認識できたことはありがたいが、ちょっと寂しい。

文章表現で難しいのはリアリティの追求ではないだろうか。
その技術として修飾語の使い方や、比喩などがあると思っている。これが技術論文や専門文献ならば、厳密性が要求されるので意識することはない。本書は、良い文章とはどんなものかを、森鴎外の知的文体と、泉鏡花の感覚的文体を対比して語る。
「明瞭な文体、論理的な文体、物事を指し示す修飾のない文体、ちょうど水のように見える文体にひそんでいる詩には、実は全体的な知覚がひそむ。」
現代風の修飾をベタベタと貼った文体は悪い文章であると言っている。では、その対極にある比喩や隠喩は否定されるべきものなのか?これも伝統的手法に思えるし、韻律の効果、文字の凸凹による視覚効果もまた文学的テクニックに思える。本書は、そうした文体を批判しているわけではない。
「物事を直接指し示すよりも、物事の漂わす情緒や、事物のまわりに漂う雰囲気を取り出して見えるのに秀でている。流れを持続し、その流れに読者を巻き込む性質がある。」
こうした技術は文学的伝統を感じるとも言っている。くどくど過ぎる文体も悪いのだが、うまく芸術の域に達するバランスもある。それぞれの立場は、文学者によって意見が分かれるところだろう。形容詞は最も古びやすいものと言われている。森鴎外の文章が古びないのは形容詞を節約している効果であろう。しかし、形容詞は文学の華でもあり、比喩的表現と親しい関係にある。こうした手法は文学的価値を高める効果もあるので一概には否定できないだろう。

ここで、文学を嗜むのも酒を嗜むのも似ていることに気づかされる。
限りなく水に近い純粋な原酒もあれば、分量が絶妙で混じりあったカクテルもある。文章に酔うにしても、いろいろな酔い方がある。熟成した香り、カストリの癖、スイートからドライまで、低級な悪酔いもあれば、高級過ぎて酔っているかもわからないものなど。また、人にはいろいろな酔い方がある。気持ち悪くなる者、笑い上戸、泣き上戸、説教も始まる。ちなみにアル中ハイマーは謝り上戸である。初対面の人にさえも。よほどの悪戯を働いているのだろう。酔っ払いの潜在意識を覗くことなどできない。
本書は、評論も立派な文学作品であると語る。気軽にブログを書いているアル中ハイマーには頭が痛い。古い格言に「文は人なり」というのがあるが、これは真理だと語られる。文章が人となりを表す。酔っ払って誤魔化す文章も人となりというものである。

2007-10-07

"鴎外随筆集" 森鴎外 著

10月はいつもよりハッスルする月である。それもアル中ハイマーの誕生日という大イベントがあるからだ。それにしても不思議である。通常誕生日というものは祝ってもらうものではないのか?なぜか出費が多い月でもある。金の切れ目が縁の切れ目ということか?アル中ハイマーは悲しい男の性と奮闘する運命にある。
夜の社交場へ行く時は、いつも「鴎外通り」を通る。お気に入りの隠れ家がこの辺りに集中しているからだ。昨夜飲み歩いていてふと思う。森鴎外を記事にしないのは失礼な話ではないか。記事にする方が迷惑だと知りつつも無理やりこじつける。というのも読書の秋はやはり文学作品に浸りたい。せっかく秋らしくなってきたのだ。全く文学センスのないアル中ハイマーは、こうした動機でもないと文学作品など読もうはずもない。中でも明治の文豪となると旧文章体にイライラさせられるのでまず読むことがない。それでも「舞姫」は学生時代に読んでいる。明治の文豪に手を出すのはそれ以来だろう。20年以上?そう思うと力んで純米酒のピッチも上がる。

本書には、随筆18作品が収められている。
その中で1899年, 1900年に書かれたものが4つほどあるが、古い文章体で読むのが辛い。これぞ芸術の域というものなのだろう。他の作品は、1910年前後のもので現代風の口語体に近く普通に読める。これにはいささか驚かされる。口語調が急速に庶民化した時代ということだろう。そこには社会風刺や論評が綴られるが、現在にそのまま置き換えられる主張がなされることに感動してしまう。言わんとすることに余分な飾り付けをしない明瞭な文章であることが息の長いものにしているのだろう。鴎外流は写実主義と言う評価がなされているが、そう簡単には片付けられない。アプローチは語学的、哲学的、社会的、心理的などあらゆる方面から知的で、ひとことで言ってかっこええ!明治の文豪がこんなにおもしろく読めるとは思ってもみなかった。もしかしたら、アル中ハイマーの中に文学センスが育ちつつあるのかも?と錯覚してしまう。一冊読んだだけで、酔っ払いの勢い恐るべし!今宵の純米酒は一味違う。

1. 近代化する礼儀
近代化の中で礼儀に対する形式と意義の乖離を嘆いている。葬礼を例にあげて、神葬もあり、仏葬もあり、キリスト教の葬式もある。それはそれで自由信仰だから良いのだが、人それぞれの信仰ではなく事に応じて選択されている様を嘆いている。
「人生のあらゆる形式は、その初め生じた時に意義がある。礼をして荘重ならしむるものはその意義である。」
日本人のおもしろいのは、普段信仰心すらないのに葬式になると突然信仰心が現れる。重病に喘いでいる人に、インフォームド・コンセントなんて言っても、日本人には理解が難しい。命が最も重要!死んだらお終い!と強調されれば、自分の命が最も重要で他人の命は二の次、三の次となる。そのようなエゴから不治の病を告知すれば、される側とする側で互いに惨さを助長する。また、子供の教育にお寺さんが説教すれば、きっと良い話を語ってくれるだろう。こういう役割を医療機関や教育機関が担うだけでなく、お寺さんにも加わってもらえばきっと癒してくれるような言葉をかけてくれるはずだ。お寺さんが、なまもの(生きた人)は扱いません!では、もはや火葬仏教、葬式仏教である。
どんな世界でも、伝統を重んじると称して形式にこだわる風習を良く見かける。喪服一つにしても大正時代は旅立ちの衣装として白装束を着ていたではないか。伝統とは、受け継がれた道徳観や倫理観を表現するものであり、意味もわからず従う形式ではないと、アル中ハイマーが発言したところで酔っ払いの戯言でしかない。

2. 東洋と西洋の調和
ある学者が、日本人はアーリア人種であると論断したものがある。こんな軽率な事を言っていいのかと呆れているくだりはおもしろい。ちょうど東洋文化と西洋文化が衝突して渦巻いた時代がうかがえる。著者自身がドイツ留学の経験からか、作品にもドイツ色が見え隠れする。東洋と西洋それぞれの文化に長けた学者は多いが、二つを調和した学者が必要であると力説している。
「東洋学者に従えば保守になりすぎる。西洋学者に従えば急激になる。」
二次大戦前からドイツ一色に突き進んだ時代があった。今では親米色が濃い。一つの国一色に突き進む傾向は危険な香りがする。グローバル化とは一つ国に肩入れして突き進む政策ではないだろう。

3. 嘲を帯びた義憤
ある国民にはある言葉が欠けている。それはある感情が欠けているためであるという。その例は感動ものである。アル中ハイマーは「当流比較言語学」と題したこの随筆が一番のお気に入りだ。
ドイツ人は「Sittliche Entrustung」という言葉を使うらしい。訳すと道徳的(Sittliche)憤怒(Entrustung)となるのだが、嘲を帯びた意味で使うという。これを鴎外流では「義憤」という言葉にあてている。例えば、ある議員に不祥事沙汰があると、必ず「けしからん」と捲くしたてる連中がいる。この「けしからん」が「義憤」である。日本人はよく義憤で世間を賑わす。しかし、人の事言えるほど道徳心がおありか?言えないのに言っているとしたら嘲笑されるだけである。こうした意味の言葉をドイツ人は持っているが、日本人には欠けている。日本人はそんな感情は当り前に持っており、道徳上の裁判官になる資格を持っているのだろうと皮肉っている。当時は、新聞の社説や雑報に「けしからん」という文字が乱れ飛んだ光景を絶妙に表現している。
国民には欠けた感情の言葉が存在しないという話では、ある映画のシーンを思い出す。映画「誇り高き戦場」で、アメリカ人捕虜がドイツ人将校に向かって、ドイツ人は相手に苦痛を与えることによって性的快感を味わうと皮肉る。その将校は、サディズムの語源はフランスでありドイツ語にはないと反論する。日本語では加虐性愛とか訳すようだが、いまいち表現しきれていないような気がする。ちなみに、おいらはMである。

4. 芸術主義
鴎外自身、芸術に主義というものは本来ない。芸術そのものが一つの大なる主義であると述べている。その中に、思うがままに書いてきた様子がうかがえる。言うならば自然主義ということなのだろう。この時代には新しい風潮が流れ始めている様子も伝わる。個人主義への論説では、芸術そのものは個人的であって、個人主義が家族や社会を破壊するものではない。利己主義は倫理上排斥しなければならないが、個人主義という広い名の下に排斥するのは乱暴であると主張している。あらゆる概念を破壊して、自我ばかり残すものを個人主義と名づけるという社会風潮を批判している。
「学問の自由研究と芸術の自由発展とを妨げる国は栄えるはずがない。」
いつの時代でもこのような風潮はある。いろいろと枝分かれする思想を一つの言葉で一緒くたにする手法は、世論を扇動する側にとって処理が簡単である。

本書のような、自然体で説得力を感じる文章を読むとある映画のシーンを思い出す。映画「小説家を見つけたら」で文章の書き方を伝授する場面がある。
「とにかく書くんだ。考えるな!考えるのは後だ!ハートで書く。単調なタイプのリズムでページからページへと。自分の言葉が浮かび始めたらタイプする。」
という台詞を吐きながらショーンコネリーがタイプライタをリズミカルに叩く。アル中ハイマーはこの前後5分ぐらいのシーンが好きである。

2007-09-30

"C++ Coding Standards" Herb Sutter & Andrei Alexandrescu 著

じっくり読もうと思っていても肌が合わなくてパラパラっとめくって終わるものもあれば、その逆もある。本書はその逆のパターンである。それもいい感じで酔えるからである。
アル中ハイマーは、規則を固めるよりもメンバーの意識を共有できる方が効果が高いと思っている。特に、大組織に支配されるような宗教じみたコーディングルールに縛られることは嫌いである。それは、規則を守りたくても守る能力がないからである。アル中ハイマー病とはそうした病である。ただ、メンバーに共通意識を持たせるための手段としてガイドラインを提示するのは良いだろう。手段を目的と勘違いしていることはよくある。前書きにこう記されている。
「良質のコーディング標準は、単なるルール以上の良い習慣や原則を育てる。」
本書は、C++言語固有の作法に留まらず、組織運営、設計スタイルなど、チームの共通意識として持っておきたい事なども記されている。アル中ハイマーには昔からのC言語の癖がしみついているようだ。こうした古臭い作法にも気づかされる。かなり高度なものもあるが、酔っ払いでも参考にできる部分が多い。
また、当り前かもしれないが、前記事のスコット・メイヤーズ著「Effective C++ 第3版」と重複している項目も多い。では、せっかくのアドバイスを忘れないうちに、ざっとメモっておこう。

1. 時期尚早な最適化は行わない
どのコードが速くあるいは小さくなるか?どこがボトルネックになっているか?といった判断をプログラマはひどく苦手にしていると語る。CPUは複雑化しており、その上にコンパイラがいる。コンパイラもハードウェア性能を引き出すよう最善を尽くす。このような複雑な仕組みの頂上にプログラマがいる。よって最適化は測定と分析が必要である。また、CPUのみならず、メモリ、ネットワーク、周辺装置、データベースなど周辺環境も含めて総合的に判断しなければならない。部分的に最適化されても、全体としての効果がなければ意味がない。まずは、すっきりしたコードを書くことに専念すべきである。

2. 実行エラーよりも、コンパイルエラーとリンクエラーを歓迎する
コンパイラがチェックしてくれるようなコードを書くように薦めている。動的チェックも大切だが、静的チェックも利用しようということである。

3. 変数は全て初期化しよう
配列も、char path[MAX_PATH] = {'\0'}; 全ての文字を0で埋める。

4. 基本クラスとして設計していないクラスからは継承しない
子供ができることを好まないクラスもあるだろう。といっても、誰かに勝手に継承されることはある。完全に避妊する方法ってあるのだろうか?クラスの設計とは、型(子供)を設計しているようなものである。

5. 安全なオーバーライドを見に付けよう
オーバーライドは明示的にvirtualを指定して再宣言する。基本クラスにあるオーバーロードが隠蔽される場合もある。派生クラスにusing宣言すれば隠蔽されたものが使える。

6. 静的ポリモフィズムと動的ポリモフィズムを賢く組み合わせよう
動的ポリモフィズム?コンパイラが判断するのだから静的ではないのかい?
動的ポリモフィズムは、仮想関数を持つオブジェクトをポインタや参照により間接的に操作する形で生じる。アル中ハイマーは、どんな型がこようとも、発酵型だろうが蒸留型だろうが受け付ける。特に熟成型に弱い。

7. STLコンテナは決まった目的がなければ、まずvectorを使おう
更に、シーケンスに要素を追加する時は、どこでもいいならpush_backを使おう。いきなり唐突な表現である。このぐらいの言い分の方が、ド素人のアル中ハイマーにはありがたい。おいらが使うのも、vectorかstringぐらいなものである。

これで、今月の目標だった、積みあがった専門書20冊ほどの処理が終わった。すっきりした気分で温泉旅行に行けるというものである。真面目に読んだのは数冊だったような気がするのは、酔っ払いの錯覚である。呪文を唱えてスピリタスを一気に飲み干せば96%の仮想空間は現実となる。

2007-09-23

"Effective C++ 第3版" Scott Meyers 著

目の前に積みあがった専門書の中で一冊の本に目が留まった。パラパラっとめくってみると、落ち着いた色合いでなんとなくピート香がする。これはシングルモルト気分で飲めそうだ。
本書は、C++でプログラミングするためのガイドラインを提示してくれる。そこには、一般的なデザインやC++の使い方などが記されている。例えば、テンプレートと継承、public継承とprivate継承、メンバ関数と非メンバ関数、値渡しと参照渡しなど、それぞれどちらを選択するかについてのヒントを与えてくれる。また、奇抜なテクニックなどなく、むしろ基本から抑えられている点は感銘を受ける。哲学風な要素も含まれ、最近のプログラム思想も味あわせてくれる。但し、あくまでも効率的に使うためのアドバイスであり、よく吟味して使わないと味が薄れるであろう。アル中ハイマーには、いい感じに酔える本である。

C++を概観すると、複数言語の連合であると語られる。大まかな領域は4つである。1つはC言語の領域。2つはオブジェクト指向としての領域。3つはテンプレート。4つはSTL。
アル中ハイマーが関わっているのは、2つ目までの領域である。テンプレートは悪酔いのもとであり、STLはコンテナを使うぐらいなものである。
では、せっかくのアドバイスを忘れないうちに、ざっとメモっておこう。

1. プリプロセッサよりもコンパイラを使おう
#defineよりも、const、enum、inlineを薦めている。
#defineで定義したリテラルは、コンパイラが持つシンボル表には登録されないので、コンパイルエラーで混乱することもある。シンボリックデバッガでも同じことになる。
これは、高林哲氏著の「BINARY HACKS」でも、最近のプログラム手法として、#defineはなるべく使わないようにすると記されている。そこでは理由は記されてなかったが、本書では明確に記されている。

2. なるべくconstを使おう
constは、特定のオブジェクトについて「こうしてはいけない」という制約を明確にできる。メンバ関数へのconstには、物理的な不変性と論理的な不変性の意味がある。物理的な不変性は、オブジェクト内部が1ビットも変更しない場合にconstを付けるべきであると主張している。この長所はコンパイラが知らせてくれるのでルール違反もわかる。

3. オブジェクトを使う前の初期化
コンストラクタで初期値を代入しても、オブジェクト生成時に初期化されるわけではないのでオーバーラップした動作を定義していることになる。したがって、メンバ関数の初期化リストを使うと無駄な動作が省ける。

4. コンストラクタ、デストラクタ、コピー代入演算子
コンストラクタ、デストラクタ、コピー代入演算子は、宣言しなくてもコンパイラが自動生成する。もし、コンパイラが自動生成することを禁止するには、対応するメンバ関数をprivate宣言すれば良い。例えば、コピー代入演算子をprivateで宣言しておけば、このオブジェクトはコピーできない。

5. リソース管理
メモリ確保には必ず解放が必要である。よって、new/deleteは一式で使うことになるが、途中で例外処理が発生したりして解放を忘れることもある。この場合、スマートポインタなどのオブジェクトを使うと良い。そして、リソース管理クラスには、リソースへのアクセスする方法を提供しておく。つまり、メモリ解放時は、デストラクタで自動的に破棄させるように仕向ける。

6. 関数と変数の受け渡し
値渡しより、const参照渡しの方が効率的である。
関数にオブジェクトを渡したり、関数からオブジェクトを受け取る場合、関数の仮引数は、実引数のコピーとして初期化され、戻り値はコピーを受け取る。これはC言語から受け継いだもので、おいらの嫌いな性質である。これらのコピーはコピーコンストラクタによって生成されるので、参照渡しの方が効率が良い。但し、組込み型とSTLの反復子、関数オブジェクトには適用されない。これらは通常値渡しが適当である。

7. カプセル化の思想
データをなるべく遠ざけることにより、変更の柔軟性と機能拡張性を増すことがカプセル化の思想である。よって、データの近くにメンバ関数を置くよりも、メンバでもfriendでもない関数を使うと良いという。こうすれば、変更は限られたクライアント以外に影響を与えない。
個人的には、データを扱うメンバ関数は、データの近くに置くのが整理しやすいと考えていたが、カプセル化の主旨からは外れていると指摘されてしまった。この助言も分からなくはないが、その按配も状況に応じて考えたい。

8. 継承とオブジェクト指向
オブジェクト指向で最も重要なルールは、「public継承はis-a 関係を意味する」であると語る。基底クラスに適応できるものは、全て派生クラスにも適用できるようにしなければならない。コンポジションは、has-a関係と実装関係になる。非仮想のメンバ関数を派生クラスで再定義しない。継承された関数のデフォルト引数値を再定義しない。
おいらは、コンポジションを多く使う。というより自然とそうなってしまう。それと、public継承ぐらいしか使わない。酔っ払いには、この2つで充分である。

9. テンプレートのジェネリックプログラム
操作しているオブジェクトに依存しないジェネリックプログラムが脚光を浴びているようだ。例えば、STLのfindやmergeなどがそれである。テンプレートは進化している。もともとは、コンテナのためだったのだろうが、多様な使われ方をしている。ジェネリックプログラムやコンパイル時にコンパイラ内で実行できるメタプログラミングの手法など。もはやコンテナはテンプレートの一部に過ぎない。ますます悪酔いしそうな世界へと広がる。アル中ハイマーはどう転んでもテンプレートプログラマになることはなさそうだ。

2007-09-16

"C++標準ライブラリの使い方 完全ガイド" 柏原正三 著

買ったはいいが、まだ処理してない専門書がいくつかのグループに分かれて積みあがっている。中でも一番隅っこにあるグループは、なんとなく異様な香りを漂わせている。その中で一番近寄り堅い分厚くて真っ黒なところから処理するとしよう。アル中ハイマーには、美味いところを後に残す癖があるのだ。

いきなりサンプルコードのless()は、std::lessとぶつかるなあ。名前空間で逃げとこう。名前空間は嫌いな機能ではない。ただ、無名の空間で、データをグローバル化するのは肌に合わない。スコープは明確に、しかも狭められた方が好きである。のぞき穴から局所的に覗くからハッスルできるのだ。

もともとはコンテナの情報が欲しくて購入した本である。大量データを扱うにはコンテナは便利である。一見良さそうな本だと思ったんだけどなあ。リファレンスとしてもいまいちかなあ?妙に詳しく書かれた部分もある。読んでみると、なんとなく波長が合わない。だんだん読むペースが速くなる。というよりめくるスピードが上がってくる。アルゴリズムにおもしろそうなものがある。収穫はこのあたりかあ。それにしてもSTLは随分と多様化したものだ。
どうせ読むならBjarne Stroustrup著「プログラミング言語C++(第3版)」を読み返すべきだった。まあ、そう悲観しなくても辞書として使えばいいのだ。ネット検索でもええような気がするのはきっと悪酔いしたせいである。
著者の経歴に経済学部卒とある。へー!おもしろそうな人生を送ってそうだ。アマゾンでは、高い評価をしている人が多い。優秀な方々が読む本のようだ。無能なアル中ハイマーが読む本ではないのかもしれない。皆さんのお邪魔虫にならないように心がけなければならない。
これでSTL嫌いが更に進行しないことを祈りたい。
ああテンプレート!悪酔いさせるテープレート!これ以上おいらに呪文をかけないでおくれ!

この積みあがっていた専門書のグループは直感的に避けていた領域かもしれない。人間の直感は案外正しい!というのをどっかの本で読んだ覚えがある。
ということで、このグループは読んだことにしよう。いや、読んだのだ。
呪文を唱えてスピリタスを一気に飲むと、96%の仮想空間は現実となる。

2007-09-09

"The Art of UNIX Programming" Eric S.Raymond 著

立ち読みしていると、おもしろい酒肴(趣向)を見つけた。
「Unixは口承文学だ!」アル中ハイマーはこの宣伝文句にいちころである。本書は専門書風哲学書である。おいらはUnixオンチであるが、勉強意欲がわく。哲学書はこうでなくてはいけない。ただ、美しい思想ばかりではない。醜い部分もさらけ出してくれる。哲学書はこうでなくてはいけない。

文化を語るには、その歴史を振り返るのが一番である。
Unixは幾度となく危機に直面する。BSDとSystemVの内部紛争に始まり、かつてMac文化にユーザ思想を持ち込まれ、今や豊富な物量を武器にMS文化に圧倒される。パソコン市場を支配するMS信望者からは、カルト集団という差別扱いを受けている。しかし、現在ではLinuxを始めとするオープンソースの逆襲は見逃せない。Linux自体はUnixの系譜とは違って最初から書き直されたOSだが、本書では、Unix標準と同じ動作をするという意味で同列に扱っている。
本書は、Unixの生命力の長さは初期段階で開発者達が下した設計上の判断が正しかったことを意味すると語る。また一方で、古いUnixコミュニティが失敗してきた罪も見逃さない。IBMやAT&Tと同じくらい将来見通しを欠いていたこと。旧来の企業組織、金融資本、市場論理の命令機構を全て受け入れたために、プロフェッショナルの自覚を失ったこと。などが語られる。

Unix思想を表す有名な言葉は、
「K.I.S.S.」Keep It Simple, Stupid!
Unixというよりはソフトウェアエンジニアの心得が語られている。
どんなOSにも文化的偏向が見られるだろうが、ここで簡単に特徴を挙げてみよう。
・APIの基本思想で最も重要なのは「すべてはファイル」という考え方。
・マルチタスク機能をサポート。
・プロセス間通信が簡単でパイプやフィルタを可能にする。
また、Unixは、第三者ユーザの入りこむ余地を防いでいる。
・MMUによるアドレス空間の侵入を防ぐ。
・マルチユーザをサポートするための特権グループが存在する。
・重大な影響を及ぼす特権的プログラムを限定している。
ここで、Word, Excel, PowerPointなどのプログラムは互いの内部構造にベタベタの知識を持っていると皮肉っている。Unixでは具体的な通信相手を想定することなく通信できることを前提としている。Unixだからというわけではないが、アル中ハイマーがプログラムI/Fを考える時、基本はテキストストリームである。酔っ払いは単純なものしか受け入れられない。頭が悪いからモジュール構成も簡単である必要がある。よって、単純なコマンドストリームは好きである。
本書では、GUI環境が整っていないOSは問題であるということに異論を唱える人はほとんどいなくなった一方で、CLI環境が整っていないのは、GUI環境が整っていないのと同じくらい問題な欠陥であると語られる。
この見解は同感である。よって、おいは、WindowsにまずCygwinをインストールしている。

データ駆動プログラムとオブジェクト指向の違いについて語られる。
正しいデータ構造を選びうまく構成できればアルゴリズムはほとんど自明なものになる。プログラムの中心はアルゴリズムではなくデータ構造である。こうしたデータ構成が中心である考え方は共通であるが、オブジェクト指向と混同してはいけないと述べている。データ駆動プログラムは、データは単にオブジェクトの状態であるのではなく、実質的にプログラム制御を定義している。オブジェクト指向がカプセル化に関心を持つのに対し、できる限り固定されたコードを少なくすることだ。Unixの伝統はオブジェクト指向よりも深いものをもっていると語る。

本書は言語の紹介もしている。
アル中ハイマーは、すっかり、CやC++でプログラミングする機会が無くなった。最近は面倒なのでスクリプト言語で済ませる。酔っ払いには、動的な記憶管理などランタイムに任せるのが身のためである。
シェルについてはUnix伝統でもあり触れられるのは当然である。ただ意外な一言があった。
「これらの中でもっともよく知られているのは、おそらくcshだが、これはスクリプトを書くのに適していないことで悪名高い。」
へー!おいらはbashを主に使っているが、周りにcshを使っている人も少なくない。
Perlは、行指向のテキストをパターン処理する組み込み機能は強力である。この点はPerlを凌駕するものは今のところないようだ。おいらも時々使う。ただ、表現が醜い。自分で書いたコードでさえ暗号文に見える時がある。そこで、Pythonに興味を持っている。本書でも紹介しれくれる。
Pythonはモジュール化のための優れた機能を持ちクリーンでエレガントな設計になっているそうだ。Perlと比べても癖は強くないらしい。これだけで勉強してみる価値がありそうだ。標準Pythonディストリビューションには、インターネットプロトコル(smtp,pop3,ftp,imap,http)のクライアントクラスとhtmlのジェネレータクラスが含まれているという。ネットワーク管理ツールの構築に適しているようだ。これで更に興味を持つ。その分重そうでもある。
Javaは一度勉強したことがある。ただアル中ハイマーは政治的な話が嫌いである。SCSL(Sun Community Source License)には多くのプログラマが失望しているようだ。OSに依存しない独自環境というのは魅力があるので再挑戦したいと思っている。しかし、Java1.2とJ2EEEで分裂の話を紹介してくれるだけでもやる気は失せてしまう。
Emacs-Lispは、Emacs上でmewを動かすために数十行書いた程度で全く勉強したことがない。Paul Graham著の「ハッカーと画家」では、Lispの魅力を述べている。Lispハッカーはデータ構造を柔軟に持つことの価値を知っているという。アル中ハイマーには、こうしたリスト型言語を避けてきたところがある。一度は踏み入れてみようという意欲がわく。
makeの話も出てくる。おいらの好きなツールの一つだ。ただ、許せないのがコマンド行の先頭にタブを置く思想である。これは、Unixの歴史で最悪の設計ミスの1つだと認めてくれている。そうだろう!そうだろう!
インターフェースの醜さでは、アル中ハイマーはもう一つ言いたい。正規表現がそれである。まるで暗号文である。慣れれば良いとしても、ものによって微妙に表現が違うのは許せない。

Unix文化の問題点も明記している。
そこにはコミュニティ問題としてエリート主義の克服が語られる。Unixはもともと専門家相手に発展してきた経緯がある。特に年長者は自分の方が賢いという強い意識があるらしい。一方、Mac文化はエンドユーザが限りなく素人であることを念頭においている。ただ、恐ろしくインフラストラクチャーが脆弱である。Unix文化はインフラストラクチャーが全てである。Mac文化はUnix文化を取り入れ始めている。Mac OS X はUnixを基盤としている。逆に、Unix陣営は、これからはMac文化の一意的な合理性を認められるかどうかであると述べている。オープンソースの世界では、GNOMEやKDEなどのプロジェクトに力を注いでいる。これらの文化は融合されていくように見える。
Unix文化は、あまりに長い時間、非技術系のユーザを無視してきたために、MS文化がソフトウェアの品質の標準を酷く押し下げる横行を許した。
「今までは、Unixのハッカーの負けに賭けると短期的には賢く、長期的には愚かだという結果になってきた。」と締めくくる。
本書のおまけに、Master Fooの話もある。これは禅の世界へ連れて行ってくれる。哲学書はこうでなくてはいけない。

本書はUnixの話だけに留まらない。中でもオープンソース運動には魅力がある。ベンダーが握っていた主導権から市民権を獲得した感がある。道徳とは、コミュニティの中で育つ規定であり、一部のエリートが定めた法からは生まれないのである。自然のコミュニティから生まれた暗黙の規定にこそ説得力がある。技術者は上司に押し付けられた規定よりもエレガントなものを取り入れたがる。そして、良いものはコミュニティを通して広がる。
おいらは、使うツールまでもが規定されるような宗教じみたコーディングルールに縛られることを嫌う。それは、ルールを守りたくても守る能力がないからである。アル中ハイマー病とはそうした病である。

2007-09-02

"BINARY HACKS" 高林哲 他4名 著

憂鬱である。買ったはいいが、処理しきれていない専門書が20冊ほど積みあがっている。アル中ハイマーにはネット注文でついでに専門書をもぐらせるという悪い癖がある。更に悪いことに専門書を読むのがおもいっきり遅い。1ページを理解するのに下手すると半日かかることもある。右脳は酔っ払っているが左脳はもう死んでいる。論理的思考などはるか彼方へいってしまっているのだ。
本屋ではこんな行動パターンもある。高価な分厚い専門書を立ち読みしていると欲しい情報を数ページ見つける。これだけのために一冊買うのはもったいない。必死に目に焼きつける。帰って実践すると微妙に記憶が辿れない。そして、翌日買いに行く羽目になる。記憶プロセスもはるか彼方へいってしまっているのだ。
温泉旅行の前に数冊でも片付けないと落ち着かない。まずは目の前のオライリー君を本棚深く沈めてしまおう。
ただ、アル中ハイマーにとって専門書の良書をブログの記事にするのは最悪だろう。だって、自分自身の無能ぶりをさらけ出すようなものである。だからと言って隠し立てをすることもないだろう。もっと恥ずかしいことを普段からさらけ出しているではないか。あんなことや、こんなことまで。それを記事にすると思えば、恥ずかしさなどはるか彼方へいってしまうのだ。どっかの本ではないが、歳をとると鈍感力が養われるものである。

それにしても、なになにhacksという本が随分と増えたものである。hacksという言葉は、技術レベルを高めてくれるような異様な香りがする。しかし、こう多いとありがたみを感じないものである。
本書は低レイヤ(ハードウェアに近い領域)のプログラミング技術を紹介してくれる。gccの最適化手法からセキュアプログラミング、OSやプロセッサの機能を利用したものなど満載である。ただ、ド素人のアル中ハイマーがここまではやることはないだろう。
西田亙氏の「GNU Development Tools」を読んだ時はなかなか味わいがあった。本書はなかなかこくがある。
さっそく忘れないうちに、思い立ったところを摘んでおこう。

1. gccのビルトイン関数による最適化の項
文字列リテラルへポインタを宣言する時の注意点として、即値が埋め込まれずに高速化されない場合の例を示してくれる。
その中で気になる一文がある。
「最近のプログラム手法として、#defineはなるべく使わないようにする。というものがある。」
なぜだろう?その理由は書かれていない。確かに、マクロ展開そのものはエラー診断をわかりにくくしたり、引数があると意図した形に展開されないなど注意はいろいろとありそうだ。

2. TLS(スレッドローカルストレージ)という技を紹介
複数のスレッドで同じ名前の変数を共有しても、格納する場所はスレッド毎に独立できる。

3. ヒープ上に置いたコードを実行できる
最近のプロセッサやOSはメモリ保護がしっかりしているから、まずやることはないだろう。
ただ、mprotectシステムコールを使えばやれる。その延長上で自分自身の挙動を書き換えるプログラム例を紹介してくれる。ちょっと遊んでみると、これがなかなかおもしろい。アル中ハイマーは調子に乗って作ったものをウェブで公開しようと思ったが、こんなもんはメモリリークのテロリストのようなものだ。

4. プロセッサのメモリオーダーリングの話はおもしろい
複数のスレッドがクリティカルセクションに入る時、CPUの仕組みによって同時進入の可能性を紹介してくれる。最近のプロセッサではほとんどの場合問題になるようだ。パフォーマンス向上のために命令順とは異なるメモリアクセスを認めているからである。メモリアクセスのためのWAR,RAWなどの機構がそれである。これはマルチスレッドのプログラムを作る時は意識しなければならない。対処方法として、メモリバリア、アトミック命令を使った例を紹介してくれる。現在では、C/C++言語レベルではインラインアセンブラや組み込み関数でしか対応できないようだ。今後言語レベルやAPIでサポートされることを期待するとある。

5. ランタイムHack
elfバイナリが実際に実行されるまでの手順や、システムコールの呼び出し手順などを解説してくれる。このあたりは読み物としてもおもしろい。

本書は全般的に知っていて損はないだろう。アル中ハイマーが避けていたマルチスレッドの勉強でも、少しはやってみようかと思ってしまう。スレッド間のメモリ共有などは酔っ払いには辛い。まさしくチャンポンで悪い酔いしそうである。
また、細かいところで、アル中ハイマーは結構抜けたことをやっていることに気づかされる。もしかしたら、過去に作ったものの中に偶然動いてるものがあるかもしれない。なんとなく煙臭い。いや、そこに熟成されたスコッチがあるからだ。