Abstract
Complexity is the single major difficulty in the successful development
of large-scale software systems. Following Brooks we distinguish
accidental from essential difficulty, but disagree with his premise that
most complexity remaining in contemporary systems is essential. We
identify common causes of complexity and discuss general approaches
which can be taken to eliminate them where they are accidental in
nature. To make things more concrete we then give an outline for
a potential complexity-minimizing approach based on functional programming
and Codd’s relational model of data.
读后感
复杂度很大程度源于可变的状态;
状态和逻辑分离;
冷热分离;
数据的存储和访问分离;
避免过度抽象;
一切都是为了简洁;
减少特定的控制流;
不同的问题不同的解决方案;
领悟还不够深刻,需要过段时间再回溯。