【要約】Alan Kay on the meaning of "object-oriented programming" (2003) [Hacker_News] | Summary by TechDistill
> Source: Hacker_News
Execute Primary Source
// Discussion Topic
本スレッドは、Alan Kay氏が2003年に語った「オブジェクト指向の本質」についての動画を巡る議論である。Kay氏はOOPを、メッセージングや動的結合を用いた分散システムのシミュレーションとして定義している。議論の論点は以下の通りである。
- 型と継承を重視するSimula学派。
- ・OOPにおける二つの学派の対立
- 型と継承を重視するSimula学派。
- ・現代のOOPの価値
- ・OOPの設計思想への疑義
// Community Consensus
コミュニティでは、現代のOOPがKay氏の意図した「メッセージング中心」の思想から離れ、Simula的な「型と継承」にシフトしているという認識で一致している。反応は、実用性を認める層と、複雑性を増大させるだけだと批判する層に分かれている。
- 特定のドメインにおいては、OOPは適合性が高い。
- 分散システムを模した複雑な抽象化は、保守性を低下させる恐れがある。
- 複雑さを導入することで、問題が解決されるという考えには疑問がある。
- ・肯定・受容的な視点
- 特定のドメインにおいては、OOPは適合性が高い。
- ・批判・懐疑的な視点
- 分散システムを模した複雑な抽象化は、保守性を低下させる恐れがある。
- 複雑さを導入することで、問題が解決されるという考えには疑問がある。
// Alternative Solutions
コメント欄では、OOPに依存しないアプローチが示唆されている。
- ・OOPを用いずにカプセル化やデータの保護を実現する手法。
- ・分散システムの複雑さを回避する、よりシンプルな設計思想。
// Technical Terms
Senior Engineer Insight
> 現場の視点では、我々が「OOP」と呼んでいるものの多くはSimula学派の派生であり、Kay氏の理想とは別物である。実戦において、メッセージングによる極端な動的結合は、デバッグの困難さと予測不能な挙動を招くリスクがある。一方で、カプセル化やインターフェースによる境界の定義は、大規模開発の不可欠な要素だ。重要なのは、分散システムを模した「複雑な抽象化」に逃げないことだ。設計が複雑さを増していると感じたら、それはOOPの恩恵ではなく、単なるオーバーエンジニアリングであると判断すべきだ。