生死有命富贵在天
工具
人月神话中“没有银弹”章节关于人工智能辅助编程的观点:
“自动"编程。近四十年中,人们一直在预言和编写有关"自动编程"的文字,从问题的一段陈述说明自动产生解决问题的程序。现在,仍有一些人期望这样的技术能够成为下一个突破点。
Parnas 暗示这是一个用于魔咒的术语,声称它本身是语义不完整的。
一句话,自动编程总是成为一种热情,使用现在并不可用的更高级语言编程的热情。
他指出,大多数情况下所给出的技术说明本质上是问题的解决方法,而不是问题自身。
可以找到一些例外情况。例如,数据发生器的开发技术就非常实用,并经常地用于排序程序中。系统评估若干参数,从问题解决方案库中进行选择,生成合适的程序。
这样的应用具有非常良好的特性:
问题通过相对较少的参数迅速地描述出特征。 存在很多已知的解决方案,提供了可供选择的库。 在给定问题参数的前提下,大量广泛的分析为选择具体的解决技术提供了清晰的规则。
具有上述简洁属性的系统是一个例外,很难看到该方法能普及到更广泛的寻常软件系统,甚至难以想象这种突破如何能够进行推广。
重用
重用需要良好的设计和卓越的文档,非常罕见的优秀设计如果没有好的文档,还是无法做到重用。
对于重用,现有理论几乎是整体缺乏的。时间证明了要使模块能够重用,其成本非常高。**一个良好的经验法则是,可重用的构件的工作量是‘一次性’构件的两倍。
当一个构件可能被三次使用(三部件共用)时,再考虑重构?