リーキーアブストラクションの法則
The Law of Leaky Abstractions – Joel on Software(2002)
All non-trivial abstractions, to some degree, are leaky.
すべての非自明な抽象化は、ある程度リーキーである。
抽象化によって低レイヤーの複雑さを隠蔽しようとしても、完全に隠蔽することはできず、複雑さが「漏れ出してくる」ことが必ずあるというニュアンス
具体例がたくさん書かれている
2002年の記事だが2024年の今の「AIがプログラムを書くことが現実的になった時代」にもフィットしている
いい日本語訳が思いつかない。案: 漏れる抽象化の法則 / "抽象化には漏れがある"法則
Code generation tools which pretend to abstract out something, like all abstractions, leak, and the only way to deal with the leaks competently is to learn about how the abstractions work and what they are abstracting. So the abstractions save us time working, but they don’t save us time learning.
何かを抽象化するふりをするコード生成ツールは、他の抽象化と同様にリークする。そしてリークを適切に処理する唯一の方法は、抽象化がどのように機能し、何を抽象化しているかについて学ぶことです。つまり、抽象化は作業時間を節約しますが、学習する時間を節約するわけではありません。
抽象化は作業時間を減らすが学習時間を減らさない
And all this means that paradoxically, even as we have higher and higher level programming tools with better and better abstractions, becoming a proficient programmer is getting harder and harder.
そして、これらすべては、逆説的ですが、より優れた抽象化を備えた高レベルのプログラミングツールがますます高くなっているにもかかわらず、熟練したプログラマーになることはますます難しくなっていることを意味します。
なぜなら抽象化レイヤーによって隠蔽されて、低レイヤーを目にする機会が少なくなるからである
抽象化される前は、日常の業務をやる中で自然と目にしていたものが、抽象化によって目につかなくなる
しかし「熟練」は、その抽象化自体の理解によってしかもたらされない
And while these great tools, like modern OO forms-based languages, let us get a lot of work done incredibly quickly, suddenly one day we need to figure out a problem where the abstraction leaked, and it takes 2 weeks.
これらの優れたツール、例えば最新のオブジェクト指向フォームベースの言語など、多くの作業を信じられないほど迅速に行うことができますが、ある日突然、抽象化が漏れた問題を解明する必要が生まれ、それには2週間かかります。
これから数年でAIが多くの作業を信じられないほど迅速に行うようになり、そしてある日突然、抽象化が漏れた問題を解明する必要が生まれ、それには2週間かかる。この解明に1週間かかるか4週間かかるかは、抽象化がどのように機能し、何を抽象化しているかについて理解している度合いによって変わる。
抽象レイヤー
抽象化レイヤー