研究テーマ: Leaky Abstraction に関する ケーススタディ |
put(k,v); v = get(k);
SELECT * FROM User, Group WHERE User.Gid = Group.Gid;
a[x,y]
が使えるよ!leak = diff(仕様, 実装)
leak = diff(仕様, describe(実装))
仕様
… 日本語put(k,v); v = get(k);
を提供する」
実装
… プログラミング言語
desc(実装)
… 実装を日本語で説明したものput(k,v); v = get(k);
をオープンハッシュ法で、
100要素分の配列を使って提供する」 (赤い部分がリーク)
つまり、仕様できちんと説明されていないもの。
parseInt(s)
… s
が実際に数のとき。
fopen
はファイルを開く」
KeyEvent
は、
コンポーネント中でキーストロークが起きたことを
表すイベントです」
オーバーヘッドが小さい (人間が気にかけるレベル)
memcpy
rand()
オーバーヘッドが中程度 (人間はときどき忘れることがある)
fork()
std::string
オーバーヘッドが大きい (ほとんどの場合、人間は詳細を把握しようとしない)