早晨看到一个讨论一个关于AI的流行观点,其实是错误的,很多人不认同文中定义的复杂性。这里要区分一个东西,就是蛋白质构造分析和预测本身不复杂,以前手工实验做是效率问题。而发明alphafold是一个复杂问题,这个从哈斯比斯自传可以看出来,他们研究了很多种方法和实验。关于软件复杂性我一直在思考,总结了不少东西,很多都在知乎上。复杂性应该是我写的文章中非常高频的词语,但是解释这个词本身就是非常复杂的一个东西。复杂性定义通过阅读书籍和文章,也收集了不少定义观点:* 来源《A Philosophy of Software Design》Complexity is anything related to the structure of a software system that makes it hard to understand and modify the system:
* 西蒙(Herbert Simon)发表了一篇著名的文章——《复杂性的结构》
文中西蒙提出一个系统的复杂性可以用层次度(degree of hierarchy)来刻画:“复杂系统由子系统组成,子系统下面又有子系统,不断往下。 西蒙认为,复杂系统最重要的共性就是层次性和不可分解性。软件也是不同层次的结构一步步组合而成。
A complex system that works is invariably found to have evolved from a simple system that works. The inverse proposition also appears to be true: A complex system designed from scratch never works and cannot be made to work.
I would describe complex systems as multivariable nonlinear systems. And multivariable nonlinear systems are very hard to predict. They can behave one way for a long time, and then one variable can switch and they can behave another way—the weather, stock markets, all these things. There are consequences that can be first, second, or third-order. You can't just think with a linear model or just think about one variable because things can go way off the path. You need to be aware that if you make a change here, it could change something here, which could change something there, and it has to be the whole system. You've got to be really conscious of the consequence and not get too deterministic about a single metric or a single variable.