djbとは、qmailとかその辺のソフトを作った、アメリカの某大学の先生の事。
その人が、「ソフトウェアは、その外側の何かは何も信用して書いたらいかん。性悪説で書かんといかん」みたいな事を色々と言っていて、そのポリシーで書かれたのがdjbwareとか呼ばれる一連のソフト。
もう作られて結構経つので、最近の状況に合わない部分が出たりもしてはいるものの、まだあちこちで使われているし、自分も愛用している。
そして、そのポリシーを思わず連想してしまった。


ただ、この「(ソフト自身以外の全ての)他人を信用しない態度」を、普通の人向けに言う時に何て名前で言えばいいのかは自分も分からない。
ただ、自分の働いている近辺でなら、「djb式」と言えば、そこそこ通じるとは思う、多分。


追記。
書いた後で読んだら、ちょっと分かりにくかったので直した。
参照元の文章にも書かれてるが、その「ソフト自身」「ライブラリ自身」って概念は、擬人化無しにはできないから、擬人化概念が苦手な人は、それを「コード書いてる人自身」と読んでしまうようだ。
それだとdjb式に反してしまう。
例えば、自分でライブラリを二つ書いて、その二つが相互参照だか通信だか呼び出しとかするとして、「この二つは自分が書いたから大丈夫。だから、それ以外の外部のものは信用しないようにしよう」っていうのはdjb式にはアウト。
「ライブラリAとライブラリBは確かに自分の書いたものだが、それでも互いに外側なのには間違いない。だから、この間でも性悪説を前提にした方がいい」みたいなのがdjb式にはベターだと思う。


あと、当然、プロトタイプ作る時はdjb方式はやらない方がいい、というのも、分かってる人には分かってるだろうが一応追記。




非常に話は変わる。
以下は草稿扱い。あとで清書してどこぞに張るかもしれない(面倒になって張らない可能性も高いが)。


「擬人化」は、すごくいい表現だと思う。
プログラムとかアプリとかってのは、ユーザから見れば結局、「自分のやってほしい事を代わりにやってくれる何者か」なんであって、そういう見方をすると、「プログラムやアプリ」は、その「ユーザの代理人」、つまりエージェントと見る事ができる。
具体的に行くと、テキストエディタは文書を作成する意志の現れ、お絵描きソフトは画像を作成する意志の現れ、ウイルスやマルウェアはユーザに害をなす意志の現れ、みたいな。
(ちなみにゲームは何だろう。世界を模倣する意志の現れ?そうじゃないゲームもあると思うが。 http://www.geocities.jp/steppersstop/ のくもりクエストとか遊んでると、とりあえず擬人化しても、それほど間違ってはいないような気はするが。)
で、そういう風に、何かの意志っぽく見ているのを、そのプログラムとかアプリとかを更に細分化して、ライブラリやモジュールやクラスといった設計段階にまで分けても、まだ、それなりに有効だと思う(ただ、ある程度以下のコード片にまで分解してしまうと、なくなってしまうとも思うが)。
そうすると、インスタンスを擬人化して動作を考える、というのは、結構正しい方向の考え方だと思う。
例え、ウイルスやマルウェアのように、あからさまに害意を持った存在がライブラリレベルには居ないとしても、ついうっかりミスをして迷惑をかけるような人(=バグのあるライブラリ)が居る可能性は消せないし、本人自体は正しく動いていても通信プロトコル(会話内容)を勘違いしている可能性(引数間違いとか)もあるし、社会(=ライブラリ同士が結合して動作するアプリレベルのサイズの存在)が大きくなればなるほど、含まれる人間の数は大きくなる訳で、そうなればなるほど、「他人を全員信頼する」性善説よりは「他人を全員疑う」性悪説の方が上手く機能する。


……という事を、擬人化によって分かりやすく説明できる、んだろうか。多分。
なんか、自分でも、この説明自体を書いてて微妙にこじつけ?っぽい部分は感じるんだが(ここがそうだ、というのはどこか分からんが)、大筋としては間違ってはいないと思う。
て言うか、自分自身も既にこういう考え方をしているので、大いに賛成したいところだが、それをすると思考放棄方向になりやすいので自戒すべきところだ。
それから、参照元の文章の内容から、ちょっとかけ離れ気味だ。