| 研究テーマ: 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
オーバーヘッドが大きい (ほとんどの場合、人間は詳細を把握しようとしない)