重复性管理——抽象的重要性(下)

接着上一篇的谈论,继续谈论抽象在重复性管理中的重要作用。

好的抽象与糟糕的抽象?

通过前面的一些例子,你可能形成了一个印象:所谓抽象很多时候就是把一些代码封装到一个方法中。

继续阅读“重复性管理——抽象的重要性(下)”

重复性管理——抽象的重要性(上)

什么是抽象及它在重复性管理中的作用

Haskell 语言的设计者之一 Paul Hudak 曾说过一句略带夸张的话(overstatement):编程中最重要的三件事是:抽象,抽象,抽象

abstraction, abstraction, abstraction”are the three most important things in programming。

如果你去问一些资深开发者,程序员最重要的的能力之一有哪些?那么“抽象的能力”是绝对能排得上号的。

继续阅读“重复性管理——抽象的重要性(上)”

重复性管理——从泛值到泛型以及泛函(下)

在前面我们谈论了重复性管理上的一些具体做法,重点探讨了泛型范式泛函范式在解决重复性问题上的应用。因为前面的篇幅有很多被具体的代码例子占据了,所以留到现在这篇做一个归纳总结。

与数学的渊源

应该说,编程与数学还是颇有渊源的,或者说它们之间有很多相通的地方。数学的一个突出特点,那就是数学家总是在不断寻求更加一般化的表述,更为抽象的表达。我们来看一个具体的例子。

数学上有所谓的勾股数,最知名的就是我们所熟知的“勾三股四玄五”了。具体而言就是 3^2 + 4^2 = 5^2. 继续阅读“重复性管理——从泛值到泛型以及泛函(下)”

重复性管理——从泛值到泛型以及泛函(中)

在前面,我们探讨了泛型范式在解决重复性问题上的应用,在这里,将继续探讨泛函范式在解决重复性问题上的作用。

注:关于“泛函(functional)”这一名称,前面说了,泛型的本质是“参数化类型”,那么,按照这一思路,泛函的意思也可以理解为“函数的参数化”或者现在时髦的所谓“函数式编程(functional programming)”吧!

当然,你可以有自己的看法,这里用这种比较概括性的说法可以使得标题等比较简短,我也承认,很多时候,想取一个简短又准确的名字是不容易的。

继续阅读“重复性管理——从泛值到泛型以及泛函(中)”

重复性管理——从泛值到泛型以及泛函(上)

为什么用泛型以及它到底解决了什么问题?文中用大量例子介绍了重复性管理的一些具体做法,重点分析了泛型范式在解决重复性问题上的应用。

在之前,我们谈论了计算机科学是什么,我们知道了计算机科学重点在于复杂性的管理,然后在复杂性管理与重复性管理里我们又谈到了复杂性一个重要来源,也就是重复性。软件开发的一个重要主题就是要管理重复性,或者简单说,减少重复。 继续阅读“重复性管理——从泛值到泛型以及泛函(上)”

复杂性管理与重复性管理

探讨了简单重复性所带来的复杂性。

在前面我们说到了所谓的“计算机科学”,重点在于如何控制大型系统的复杂性。

复杂性本身当然也是个很大的话题,而一种常见的复杂性的来源则是重复性,即是由不断的重复所带来的复杂性。

重复性带来的复杂性常被人忽视,大概是因为一开始它是不起眼的,而当人们意识到它的存在时可能已经陷入了泥潭。

继续阅读“复杂性管理与重复性管理”

DRY 原则—Don’t Repeat Yourself,不要重复

Don’t Repeat Yourself,不要重复你寄己~

很遗憾,标题本身就重复了,“Don’t Repeat Yourself”与“不要重复”语义是一样的,但是是两种不同语言的实现。(英文和中文~) 继续阅读“DRY 原则—Don’t Repeat Yourself,不要重复”