注册

函数式编程:Erlang的处世之道

对本书的许多读者而言,函数式编程可能还是个新概念。对另一些人来说则不是。函数式编程绝对算不上Erlang的决定性特征--并发才是--但它仍是该语言的一个重要方面。近年来越来越多的人意识到,函数式编程及其背后的观念天然适用于并发与分布式编程问题。(单提一下Google MapReduce就够了吧?)

要对函数式编程做一个总结的话,其主要思想就是将函数看作和整数、字符串一样的数据;运用函数调用而非while或for这样的循环结构来表达算法;以及不修改变量和值(参见附录B中对引用透明性和列表的讨论)。这些看似人为设置的约束,从工程角度来看却具有非凡的意义,Erlang程序本身也因此极为自然而可读。

Erlang并不是一门"纯粹"的函数式语言--它仍仰仗副作用。但仅限于一个**作:复制式消息传递 。每条消息都会对外界产生影响,同时外界也通过向进程发消息来影响它们。但每个进程本身运行的基本上都是纯函数式的程序。遵循这个模型的程序比C++和Java这类传统语言写成的程序更易于分析,同时又不至于像Haskell那样迫使你在程序中使用monad。

在下一章,我们会介绍Erlang编程语言中的关键部分。估计不少读者会觉得这个语法很别扭--它主要借鉴自Prolog而非C。虽然异于常规,它却并不复杂。忍上一段时间,它就会成为你的第二天性。待熟悉之后,你便能够看明白大部分Erlang内核模块的代码了,这才是真刀真**的语法**:看看你最后能否看得懂?

已邀请:

要回复问题请先登录注册