Erlang初学:Erlang的一些特点和个人理解总结
我对Erlang编程理念的理解:以分布式架构师的角度写代码。
函数式编程
Erlang里面的函数是数学里面的函数:必须有返回值。只要是函数必然有返回值,函数是一个过程,以英文的句号为函数结束符。函数结束之前的表达式就是该函数的返回值。所以这也是在Erlang里面的函数不会看到任何return语句的原因。C++等其他语言的函数和函数之前可以通过共享变量来实现消息传递。Erlang里面的函数不可以,消息的传递通过函数的传入和传出。也只是为什么Erlang号称天生之处并行处理的原因,因为他们不共享变量,也就不需要加锁。
很多人听到函数式编程都会觉得高大上或者晦涩难懂。因为函数是编程没有for循环语句,但是在我看来,关键在于会使用【列表推倒】和【尾递归】来进行循环遍历。说到函数式编程就会拿快速排序说事,下面这个示例是Erlang版本的快速排序:
-module(sort).
-export([qsort/1]).
qsort([])->[]; qsort([Pivot|T])-> qsort([X||X<-T,X<Pivot] ++[Pivot]++ qsort([X||X<-T,X>=Pivot]).