首页 > 代码库 > 第一章 不同的思维

第一章 不同的思维

第一章不同的思维

 

本章介绍

■理解函数式编程

■用函数式思想提高生产力

■写出阵高效、可读性强的代码

■实现第一个 F# 应用程序

 

 函数语言非常富于表达,能用短小、简洁、具可读性的代码,实现强大的功能。之所有这些是可能的,是因为函数语言提供了更加丰富的方式,来表达抽象的概念。我们可以隐藏代码是“如何”执行的,只要指出所需的“结果”,并且这样的(指出如何实现结果)代码只要写一次。由于具有丰富的抽象能力,我们可以把所有的复杂性隐藏在库函数中。

这种不同的编程方法深远地影响着实际的应用程序。这种表达逻辑的方式使程序更可读,更容易理解,从而可以理解并修改以前不了解的代码。函数程序易于测试和重构。不过,尽管函数语言有这样的好处,现在为止,还是被主流开发人员极大地忽视了。今天,我们面临着新挑战,需要编写能处理大型数据集的程序,且可扩展到大量的处理器上,需要处理比以往任何时候都更大的系统,所以,我们要更好地掌控其复杂性。这些趋势打开了通往函数语言的大门,但这远不是使用函数式编程的唯一原因。

因此,现在有许多主流语言都包括一些函数式功能。在 .NET 家族中,C# 2.0 的泛型就深受函数语言的影响。函数语言的一个最基本功能,就是能够在需要时产生函数值,而不用事先声明。这相当于 C# 2.0 中的匿名方法,在C# 3.0 中,lambda 表达式使之更容易。整个 LINQ 项目的基础就是函数式编程。

随着主流语言的追赶,函数语言也真正受到了更多的关注。这方面最明显的例子就是 F#,从 Visual Studio 2010 开始,成为官方的、完全受支持Visual Studio 的语言。.NET 上函数语言的这种演变,很大程度上是由于有了通用语言运行库(common language runtime,CLR),它使开发人员能够:

    ■ 在开发 .NET 应用时,可以混合多种语言

    ■ 访问丰富的、来自新语言的 .NET 库函数,像 F#

在所有的 .NET 语言之间共享库函数,使得学习新的语言更容易了,因为你已经积累的、所有的平台知识,在新函数语言中仍可使用。

在本书中,我们将探讨最重要的函数式编程概念,并用 .NET 的实际示例来演示。我们将先讲解观念,然后,转到以函数方式开发大规模的、实用的 .NET 应用。在本书中我们将同时使用 F# 和 C# 3.0,因为有许多观念可以直接适用于 C# 编程。但是,并不是说一定特别需要用函数语言,才能使用函数概念和模式。但是,看一下 F# 代码写的示例,将有助于深入理解它的工作原理, F# 往往使表和实现解决方案更容易。

但是,我们已经抢跑了。毕竟,这是一本关于函数式编程的书,从讲解术语开始不是更好吗?