14.4_第十四章小结

14.4 第十四章小结

 

    在这一章,我们回顾了以函数方式写并行应用程序的三种方法,其中两个是基于函数式编程的基本方面。

    声明式编程是适宜于数据并行化,PLINQ 使之特别容易。我们可以在 C# 和 F# 中使用,包装器模块使 F# 代码更符合语言习惯,比直接使用 PLINQ。C# 和 F# 都使用高阶函数来表示要做的工作,既可以直接,也可以通过 C# 查询表达式。

    第二个方法是基于任务的并行度。通过使用在函数式编程中常用的、不可变的数据结构,使之更简单。我们可以大量产生多个任务,计算结果中的不同部分,然后,只是组装这些子结果(subresults);不可变性保证了任务可以独立工作,并不会彼此损坏。

    我们还学习了如何并行化应用程序,使用可变的状态,但保持变化在本地。这是一种有效和有用的方法,使我们能够以函数的方式使用数组。当我们创建一个新数组,保存操作的结果,可以并行初始化这个数组。我们看到,辅助函数如何能够使之更简单,我们实现了数组的并行版本,映射在 Array2D.Parallel 模块中。

    当代码是应用程序的一部分,才有用,因此,在这一章中,我们讨论了两个完整的应用程序。当以函数方式设计应用程序时,从一开始,需要引入并行度的改变是相对简单的。事实上,我们可以使用这一章的技术,并行化所有应用程序,在第 7 和 8 章中讨论架构时创建的。

    在下一章中,我们要离开异步和并行化计算的领域,看一下如何可以尽可能明确地表达逻辑和行为。由于有了比如 lambda 函数和扩展方法的功能,F#的某些方面使它如此富于表现力,也可以应用在 C# 3.0 中。我们将看一下著名的函数式方法,来创建动画,作为我们的主示例,但是,同样的想法也可以在其它域中。

你可能感兴趣的:(编程,表达式,应用程序,休闲,包装)