设计可理解的软件(实际上,设计任何东西)的关键属性之一是开发一组好的抽象。如今,这些抽象包括函数、类、接口、递归和高阶函数等。但还有什么?我们如何进一步抽象我们的设计,这样我就不需要考虑我直接的直接目标了?现有技术尚未利用哪些新颖的抽象?
另请注意,我列表中的大多数项目(也许递归除外)也是用于代码重用的工具。代码重用不是这个问题的主题,也不是我认为好的抽象的必要方面。函数作为抽象很有用,因为它们将它们正在做的事情隐藏在一个描述性的名称后面,而不是因为我可以从几个不同的地方调用它们。
一个糟糕的想法:一个只调用一系列其他函数的驱动函数,不维护自己的任何状态,真的和函数一样吗?我们把它写成一个函数,把它称为一个函数,但也许它代表了一个不同的概念?这在某些语言中通过区分返回值的过程和不返回值的过程来反映。但也许有更好的方式来看待这种差异,一些不同的方式来抽象相对不相关的步骤序列?
所以重申一下,未来的编程语言如何更好地促进抽象?