Arantium Maestum

プログラミング、囲碁、読書の話題

SICPの勉強 Lecture 2B-1

www.youtube.com

37:40からの質問への答えがすごい。

Q: What does this "delayed decision through abstraction layers" do to the maxim of "do your design before any of your code"?

A: Well that's someone's axiom, and I bet that's the axiom of someone who hasn't implemented very large computer systems very much

まあそれはそうだよな。と思いつつ、ウォーターフォールが完全に主流になっている大多数のシステム開発を、よくここまでバッサリと斬れるものだなー。

レクチャーの主眼は、オブジェクト指向にも通じる抽象レイヤの重要性。ちゃんとモデル化して、より高い抽象性のプログラミングを行うときは、その下の具体的な実装には決して触らないようにする。整数から有理数からベクトルから線、と真下の抽象レイヤの概念のみ使って定義していく。