Haskell 语言的设计者之一 Paul Hudak 曾说过一句略带夸张的话(overstatement):
编程中最重要的三件事是: 抽象, 抽象, 抽象.
"abstraction, abstraction, abstraction" are the three most important things in programming.
如果你去问一些资深开发者, 程序员最重要的的能力之一有哪些? 那么"抽象的能力"是绝对能排得上号的.
什么是抽象及它在重复性管理中的作用
Haskell 语言的设计者之一 Paul Hudak 曾说过一句略带夸张的话(overstatement):
编程中最重要的三件事是: 抽象, 抽象, 抽象.
"abstraction, abstraction, abstraction" are the three most important things in programming.
如果你去问一些资深开发者, 程序员最重要的的能力之一有哪些? 那么"抽象的能力"是绝对能排得上号的.
泛型和泛函, 以及一般化(泛化)过程的总结, 还通过一个数学层面的例子进行了对比.
函数式编程的精髓在哪里? 为什么用泛函以及它到底解决了什么问题? 文中用大量例子介绍了重复性管理的一些具体做法, 重点分析了泛函范式在解决重复性问题上的应用.
在前面, 我们探讨了泛型范式在解决重复性问题上的应用, 在这里, 将继续探讨泛函范式在解决重复性问题上的作用.
注: 关于"泛函(functional)"这一名称, 前面说了, 泛型的本质是"参数化类型", 那么, 按照这一思路, 泛函的意思也可以理解为"函数的参数化"或者现在时髦的所谓"函数式编程(functional programming)"吧!
当然, 你可以有自己的看法, 这里用这种比较概括性的说法可以使得标题等比较简短, 我也承认, 很多时候, 想取一个简短又准确的名字是不容易的.
为什么用泛型以及它到底解决了什么问题? 文中用大量例子介绍了重复性管理的一些具体做法, 重点分析了泛型范式在解决重复性问题上的应用.
在之前, 我们谈论了 计算机科学是什么, 我们知道了计算机科学重点在于复杂性的管理, 然后在 复杂性管理与重复性管理 里我们又谈到了复杂性一个重要来源, 也就是重复性. 软件开发的一个重要主题就是要管理重复性, 或者简单说, 减少重复.
你也许听过所谓的 DRY 原则: Don’t Repeat Yourself. 别重复(你自己)!
之前的一些都是侧重于理论方面, 现在来看一些具体地例子.
探讨了简单重复性所带来的复杂性.
在前面我们说到了所谓的"计算机科学", 重点在于如何控制大型系统的复杂性.
复杂性本身当然也是个很大的话题, 而一种常见的复杂性的来源则是重复性, 即是由不断的重复所带来的复杂性.
重复性带来的复杂性常被人忽视, 大概是因为一开始它是不起眼的, 而当人们意识到它的存在时可能已经陷入了泥潭.