Erlang基础(一)

1.      简介

l  Erlang是一个并行编程语言和运行时系统,最初由爱立信(Ericsson)于1987年为电信行业所开发。1998年爱立信在改良的MPLMozilla Public License)许可下将Erlang发布于开源社区。

l  Erlang是:

a)   一种小众语言。

b)   一种函数式语言 (变量只能赋值一次)。

c)   一种动态类型语言(变量类型在运行时决定,代码需要编译后才能执行,与PythonRuby等不一样)。

d)   一种强类型语言。

e)   一种面向并发(Concurrency Oriented)的语言。

2.      特性

l  并发性 - Erlang支持超大量级的并发线程,并且不需要操作系统具有并发机制。

l  分布式 - 一个分布式Erlang系统是多个Erlang节点组成的网络(通常每个处理器被作为一个节点)。

l  健壮性 - Erlang具有多种基本的错误检测能力,它们能够用于构建容错系统。

l  软实时性- Erlang支持可编程的实时系统,使用了递增式垃圾收集技术。

l  热代码升级-Erlang允许程序代码在运行系统中被修改。旧代码能被逐步淘汰而后被新代码替换。在此过渡期间,新旧代码是共存的。

l  递增式代码装载-用户能够控制代码如何被装载的细节。

l  外部接口-Erlang进程与外部世界之间的通讯使用和在Erlang进程之间相同的消息传送机制。

3.  数据类型

3.1.  变量

3.1.1. erlang中的变量只能被赋值一次,变量第一个字母要是大写的。

3.1.2. 符号”=”是值类型匹配操作(带有赋值的意思)。(pattern matching

3.1.3. erlang中变量是不可变的,也没有共享内存的概念,也没有锁。

3.2.  浮点数

3.2.1. 整数除法示例: 4 div 2

3.2.2. 求余示例:     5 rem 2

3.2.3. /”永远返回浮点数。

3.3.  Atoms(原子)

3.3.1. Atoms表示不同的非数字常量值。

3.3.2. 示例: Xss = 'Asss' 

 

3.4.  元组

3.4.1. 将若干个以逗号分隔的值用一对大括号括起来就形成了一个元组。

3.4.2. 元组示例: Person = {person, {name, joe}, {height, 1.83}, {footsize, 42}}.

3.4.3. 从元组中提取数据:

Point = {point, 10, 45}.

{point, X, Y} = Point.( pattern match)

此后X=10, Y=45.

 

3.5.  列表

3.5.1. 将若干个以逗号分隔的值用一对方括号括起来,就形成了一个列表。

3.5.2. 示例: ThingsToBuy = [{apple, 10}, {pear, 6}, {milk, 3}].

3.5.3. 列表中的第一个元素叫做列表头,剩下的部分叫做列表尾。一般来说列表头可以是任何东西,列表尾经常是一个列表。

3.5.4. 访问列表头元素是一个非常高效的操作。

3.5.5. 从列表中解析元素:

ThingsToBuy1 = [{oranges, 4}, {newspaper, 1}|ThingsToBuy].

[Buy1|ThingsToBuy2] = ThingsToBuy1.

此后:ThingsToBuy1 = [{oranges,4},{newspaper,1},{apple,10},{pear,6},{milk,3}].

Buy1 = {oranges,4}.

ThingsToBuy2 = [{newspaper,1},{apple,10},{pear,6},{milk,3}].

 

3.6.  字符串

3.6.1. erlang中没有字符串,字符串仅仅是整数列表。用双引号将一串字符括起来就是一个字符串。

3.6.2. 示例:

Name = "Hello".

5>I = $s.

115

8> [I-32, $u, $r, $p, $r, $i, $s, $e].

"Surprise"

你可能感兴趣的:(erlang)