トップ «前の日記(2013-03-28) 最新 次の日記(2013-03-31)» 編集

日々の破片

著作一覧

2013-03-30

_ SD総集編(2種類の複雑さ)

2001-2012総集編をゲットした(寄稿していて再録されたから受領したわけなので献本というのとは違う気がするけど、語義としてはこういうのも献本なのかな?)。

で、紙の部分には何が載っているのかなと読むと、Linuxの歴史やディストロ紹介で、おおなんか昔っぽい特集で懐かしい雰囲気と読み始めたのは良いが疑問も湧いてくる。

Software Design 総集編 【2001~2012】(SoftwareDesign 編集部)

P.55「UNIXのカーネルは……さまざまな機能を1つに詰め込んだ複雑なソフトウェアです。そのためバグも忍び込みやすく、一部の機能に問題がおきただけでも全体が止まってしまいます。」という問題への解決策としてマイクロカーネル(手元のMINIXオペレーティングシステムではこの用語は出ていないのが興味深いけど、OSタイプ4(クライアント/サーバー)として(MINIXがそうなので)当然記述はされている)が示されている。

P.56「彼はもっともシンプルな設計で80386CPU用のUNIX互換カーネルであるLinuxを開発したのです」

あれ、複雑なんじゃないの? とここで気づく。

P.58「マイクロカーネルはモノリシックカーネルに比べて複雑で、(Hurdの)開発作業はなかなか進まず、あとから開発が始まったLinuxに先を越されてしまいました」

はて、最初の前提はどこへ行ったのか?

回答に近いものはP.55にあって、マイクロカーネルは「移植性や信頼性」に優れているから、ということになる。既に指摘されているように、「複雑さ」はポンチ画上はマイクロカーネルのほうが低く、実装上はマイクロカーネルのほうが高い。

そこから、初期実装の複雑度と(移植性、信頼性、保守性(を追加する))の複雑度は反比例するのではないか(直交ではないと感じる)という考えが浮かび、そしてその考えはおれの経験上では正しい。

というわけで、使い捨てプログラム(実装効率が高いほうが良い)と長期稼働プログラム(信頼性と保守性が高いほうが良い)は、まったく異なる、むしろ正反対の実装方法が必要ということになる。

どちらか片方しか知らないと偏った考えになるのもむべなるかな。


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|11|

ジェズイットを見習え