[Erlang开发之路]回顾总结二、Erlang的特性

2019-07-26  本文已影响0人  循环不计次

一、面向函数的语言

Erlang是我第一个接触的面对函数的语言,对象是面向对象的第一型,函数式编程语言也是一样,函数是函数式编程的第一型。函数是Erlang编程语言的基本单位,在Erlang里,函数是第一型,函数几乎会被用作一切,包括最简单的计算。所有的概念都是由函数表达,所有操作也都是由函数操作。

二、天生高并发

Erlang编程语言可以支持超大量级的并发性,并且不需要依赖操作系统和第三方外部库。Erlang的并发性主要依赖Erlang虚拟机,以及轻量级的Erlang进程。

三、分布式

Erlang的分布式特性是由Erlang在语言层面上支持的,可以使用语言内置的API函数,在远程节点上创建Erlang进程,继而执行指定的模块函数。
同样,还可以使用Erlang的RPC模块,调用远程节点的模块函数。需要注意的一点是,在分布式Erlang系统中,节点指的是,一个可参数分布式Erlang事务的运行着的Erlang系统。
Erlang节点之间的相互调用,跨节点远程模块函数执行都是异常方便的,Erlang节点之间的通信完全是由Erlang编程语言在语言层面上支持的

四、热更新

Erlang系统,允许程序代码在运行过程中被修改,旧的代码逻辑能够被逐步淘汰而后被新的代码逻辑替换。在此过程中,新旧代码逻辑在系统中是共存的,Erlang“热更新”的特点,能够最大程度的保证Erlang系统的运行,不会因为业务更新造成系统的暂停。

五、单次赋值、模式匹配

  1. 因为变量的状态不可更改,所以如果变量值出错,只可能在第一次赋值的地方出错。(快速定位根源)
  2. 因为变量的状态不可更改,无需担心在并发编程中变量的值被修改(无需加锁,也就无需担心死锁。)
% erlang例子
% 代码用于说明,香蕉单价3,苹果单价4,橙子单价5。
% 调用方式为:cost(Whatever).
cost(banana)-> 3;
cost(apple)-> 4;
cost(orange)->5;
cost(_)-> {error, "No such item"}.
/*
C++例子
*/
int getCost(int itemType) {

    switch (itemType)  {
        case "banana": return 3; break;
        case "apple": return 4; break;
        case "orange": return 5; break;
        default: return 0; break; //此处不能很好的表达错误码.
    }
    return 0; //此处也是,不能很好的表达错误码
}

六、递归

递归在erlang中占据相当重要的分量。递归与回溯贯穿着整个erlang的核心。

上一篇 下一篇

猜你喜欢

热点阅读