がるの健忘録

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

「抽象」という危険な概念

コンピュータ(っつかIT業界)においても数学においても、っつかぶっちゃけ「現実でのあらゆるシーン」で、抽象化という概念やその考え方は大変に重要です。
で、まぁあちこちでその重要性はなんだかんだ叫ばれているのですが…その一方で「抽象化(類似品として、常識とか一般論とか)がもつ危険性」は、結構あちこちに全ラウンド方位的に山盛りであるわりに、あんまり叫ばれていない気がするので。
ちとその辺をまとめて。


先に、根っこを押さえておきますると。
「抽象化」ってのは、ようは「いらんぷいぷいな、余分なものをポイポイすることで。重要で大事で肝要なところをググっとクローズアップする」事なのですが。
なので、一般的には「大きかったり複雑だったりすることを完結に表し、考察する事ができる」はずなのですが。
また、そのために「客観的で、信頼に値するものになりやすい」はずなのですが(余分なものがない分、より公平に評価が可能)。


実際には、全然そんなことはなくて。
まず「なにが重要でなにが不要なのか」という、つまり「現実」を「抽象化」するさいに切り捨てる部分(捨象って言うです)で、これはもぉ大変に、たんまりとたっぷりつゆだく特盛りで「切り分ける人の意志と偏見と思惑と恣意」が入って。
なので、抽象化して物事を整理しようとしても、それは「恣意的な方向に向かう可能性」が山盛りで存在するわけです。
また、恣意的なので当然ですが「ちっとも全然全くのまるっきり、公平ではない」です。
そのあたりを「一番の基本」として念頭に置いていただいておくと話が早いです。


えと…手品師は「右手を高々と掲げて視線を誘導しながら、左手でタネを仕込む」のが常套手段なので*1
抽象化の弊害を、抽象化した人たちが見せたくない「捨象した部分」に着眼点を絞りながら考察したいと思います*2


設計時の抽象化:
捨象しているのは「実装すると面倒だったり矛盾したり不可能だったりする部分」です。
いやなんていうか「そこ捨てちゃだめだろ」とか思うのですが、捨てちゃうんだから仕方がない。
概ね…「前提条件が破綻して」「途中のロジックで実は矛盾があって」「実装には異様な手間がかかり」「リソースを狂ったように費やす」のが設計の基本です(マテ)。
ちゃんと「実際に動いてるよね」って状況まで(あるいはその状況においてですらなお)、設計なんてもんを信じちゃいけません。
特に「ものを実際に作ってないヤツの設計」は、そも「捨象するまえに把握していない、とりゃぶりゃ〜なえとらんぜ」が山盛りだったりもしますし。


ソースコードの抽象化:
大抵の場合、捨象しているのは「もの凄くリソースを食ったりセキュリティ的に危険だったり挙動的に不安定だったり仕様的に不明瞭だったりする部分」。結果的に「動いてるっぽいんだけど実は全くまともに動作していない」とかも以下略。
えと…このあたりの問題に対する対抗としては「だって便利だもん」という呪文が一般的に普及しています orz
だからいいから一度、C言語マシン語学んで、C言語だけで組んでみろそのロジック。その上で「この処理は軽いでしょ」言うんなら「この仕様で明瞭明確でしょ」って言うんなら話聞いてやっから(ぐれ〜てるモード発動)。
「動いてるっぽいけど動いてない」簡単な例としては、例えば「似たような単語の検索」ってのがありましたね。「"似たような単語"の定義ってなに?」って質問した瞬間に、美しい幻想が木っ端微塵に幻覚破壊され、何とも言えずに香ばしい「現実」がかいま見れます B-p


「数字にする」という抽象化
捨象しているのは「現実」…いやまぁ身も蓋もないですが。でもだって事実だもん。
以前にも書きましたがね( http://d.hatena.ne.jp/gallu/20090317/p4 )。小学生を束ねても「大学教授がようやっとクリアできる難問」は解決できないんだってばさ。
100人の「やっすいエンジニアもどき」投入するくらいなら。金額5割減らして「5人の[ウィザード | 変態 | 神 | 化け物 | 悪魔]レベルのエンジニア(顔見知り通し)」を雇ったほうが確実にイけるって。
とりあえず。一人、とにかく「超絶クラス」をひっかけて(多分、これが一番難易度が高い)。後は「これだけの金額払うから、あんたと同レベルかそれ以上の人間をあとn人あつめて」って一言告げれば多分それで人捜しは終了するし。


会話の抽象化:ぷらすして比喩
捨象しているのは「明確になっていなくて自分も把握していない部分」と「それがばれたら反論されちゃうかもしれないところ」。つまり「自分の理論展開の路線的に具合の悪い場所」各種。
便利な言葉( http://d.hatena.ne.jp/gallu/20090714/p2 )、なんてのを以前書きましたが。
会話が抽象的な「一般論」である限り、概ね流れる方向は見えるですよ。問題なのは「その一般論じゃ片付かない現実が多すぎる」事。
面白い事に、そういう人たちは必ずと言っていいほど。たいした母数の調査もないのに「世間の大多数はこうだからこれで問題ないんだ」って言ってくるんですね。
システム屋にとって(っつかほかの職業でもそうでしょうが)。相手にしなきゃいけないのは「目の前にいるお客様が遭遇している現実」であって。共通幻想とかっていうよくわからんものじゃないはずなんですがねぇ。


結論として。
「だからおいちゃんは常に会話を具象化する」です。
抽象的な一般論は、上っ滑りする言葉としては或いは面白いのかもしれませんが(おいちゃんはあんまり面白い思わないけど)。
実際問題、一般化するまでの仮定に「山盛りのてんこ盛りで恣意が混入している」以上、あんまり実のある会話に出来ないので。


なんてことを、つらつらとつれづれっと。

*1:余談ですが。詐欺師とかその系列の方々も同じような事をするので。彼らが「ことさらに注目させようとしている」所の逆側を見るようにすると、比較的ダマされにくくなります

*2:なにげにえげつない台詞だよねぇw