Archives

All posts for the month May, 2014

初识Erlang

最近读完了《Erlang程序设计》。

比较有感触的还是函数式语言程序设计。个人认为最重要的两点是:

(1) 变量不变。

在命令式编程的体系下,同一个函数,即便是在传入参数相同的情况下,在并行的环境的下很有可能产生不一样的输出。

变量不变给函数带来了确定性,这与数学中的函数确定性是一致的。这也就意味着函数式编程是无副作用的,因而极大的降低了并发编程的难度,我们平时提倡尽可能使用消息来通信而不是共享内存来通信其实也是这个道理。

Erlang通过CSP(Communicating Sequential Processes)来降低了并行程序的难度:执行次序的不确定性,共享变量引起的竞争条件。 某种程度上,其实也是一种actor模型吧。

(2)函数是First Class, 函数就是一切。

函数是First Class不仅仅是函数式语言才有的,但是这些非函数式的语言并没有把函数当作最重要的一个元素来看待。

在函数式语言中,函数作用机制非常强大,象程序的控制结构都可以用函数来实现。