好的代码和柏拉图的形式世界
好的代码和柏拉图的形式世界
我的一个朋友问我是否看到柏拉图的立体与理想的计算机代码之间存在联系,我的回答如下。
小号 比喻说,如果要求在节省材料的同时最大化罐子的体积,那么球体可能是最好的形式。然而,人类需要添加处理程序,并且罐子应该有一个用于液体的孔。软件也是如此。极致优化带来理想结构,但实际需求扭曲了美感。另外,不要忘记它有一个开发时间维度。当开发时间在(嗯……多维球体?)中定制时,可能会接受次优。然而,由于缺乏技巧而画一个正方形而不是一个圆形是没有一个像样的设计的糟糕借口。
人类是基于多层子系统的非常复杂的系统,因此柏拉图世界可能看起来比圆形和正方形复杂得多。然而,人类更好地理解简单形式,因此软件是由做复杂事情的矛盾驱动的(这反映了现实的某些部分——我们的问题领域),但需要以一种足够简单的形式为人类呈现(解决方案)。
好的代码也是为人类阅读而编写的人工制品,因此肯定需要它与柏拉图形式的相似性。至少我从来没有听柏拉图提到过意大利面。因此,代码需要是人类可读的并且长度最短:两种相反的力量。
大多数 Web 或应用程序开发人员处理的 95% 的代码都是如此。对于科学研究,计算机代码可能是一些数学方程的派生,它不是真正的源代码,尽管随着时间的推移,即使是数学家也在努力寻求更简单的概念。更快的矩阵乘法算法可能有助于从 CPU 中挤出所有汁液,但由于考虑到手头问题的某些特定属性(例如某些特定的稀疏矩阵形式),因此不一定很简单。
这在很大程度上是关于发现与发明的争论。通过说“达到同构”,数学家使结果看起来像是发现,而不是发明,尽管可能需要一些时间来……发现不同数学分支中的遥远联系。
必须用附加功能补充客户的故事与抽象代数和类别理论非常一致:您从客户那里得到一些拼图,然后将它们放入最小(数学上)有意义的结构中。例如,如果您实现了用于 CRUD 的 C,那么您可能也需要 R,除非您正在向另一个星系统发送消息……也就是说,如果您有连接,那么很可能您还应该有一个空字符串,重新发明 monoid .这就是盲目地遵循 YAGNI(“你不需要它”)原则是多么天真。
这就是为什么优秀的软件程序员经常访问柏拉图的世界。有时在那里找到的理想形式可以满足包括最终用户在内的每个人,为解决方案提供一个新鲜而简单的心理模型。无论如何,在源代码中使用理想形式对软件质量有积极影响。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明