Erlang
- Official site:erlang.org
Books
学习新语言的一般步骤
- 了解该语言的出生背景与适用环境
- 引自wiki:erlang由乔·阿姆斯特朗(Joe Armstrong)在瑞典电信设备制造商爱立信所辖的计算机科学研究室开发。Erlang于1987年发布正式版本,最早是私有软件,经过十年的发展,于1998年发表开放源代码版本。
- erlang 语言致力于构建大规模可扩展高可用的实时系统。
- erlang 运行时系统支持高并发,分布式,高容错。
- OTP 是个 erlang 功能库,并提供插件开发的原则框架。
- 了解输入输出流,文件流操作
- 流操作 io module.
io:fwrite
- 文件操作 file module.
read_file
- 了解程序代码和可执行代码的组织机制,运行时模块加载、符号查找机制
- 代码由 modules 构成,一个 module 由 属性 于 函数构成,以
.
号分割, (似乎在单个文件)。 - module 可包含很多 预定义属性,具体见教程;
- 只有单行注释符号
%
;
- 了解该语言的基本数据类型
- integers, floats: 除传统数值表示,有两种 erlang 独特的表示方法:
- $char : 表示 char 的ascii码或 unicode 码数值;
- base#value : base 为进制(2~36),比如 2#1101, 8#15, 16#d 为相同数值;
- Atom : 表示字符数字组成的名称常量,如果有空格,@等特殊字符或非小写字母开头,则要使用单引号扩起来,如
phone_number,'Month','phone number'
; - bit strings : 用来表示还没区分类型的内存存储数值(有点像 nodejs 的 Buffer):
«10,20»
, 具体示例 - reference : 引用,由
make_ref/0
返回; - Fun : 函数对象
Fun1 = fun (X) → X+1 end.
Fun1(2)
; - Port Identifier : erlang port, 由
open_port/2
返回, 详解 - pid : erlang process(不同于一般进程的概念)的标识,由
spawn/1,2,3,4
spawn_link/1,2,3,4
spawn_opt/4
返回 - Tuple:
P = {Term1,…,TermN}
,element(i,P)
,P2 = setelement(i,P,value)
,tuple_size(P)
; - Map:
#{Key1⇒Value1,…,KeyN⇒ValueN}
,maps:get(key,map)
,map2 = maps:update(key,map)
,map_size(map)
- List:
[Term1,…,TermN]
,[head|tail]
- String: 双引号扩起来的字符串,本质上算 List; 两个字串会被自动连接,比如
“hello”“world”
等价于“helloworld”
- Record: 类似 C 语言的 struct;
- true,false: 来表示 boolean
- 类型转换:
atom_to_list
,list_to_atom
,tuple_to_list
,list_to_tuple
等等。
- 了解基本语法和主要语言构造,数学运算符
- 模式匹配:erlang 的等号
=
是表示模式匹配,而不是单纯的赋值:{X, Y} = {1, 2}.
, 如果匹配不了则抛异常;
- 了解数组和其他集合类的使用
- 了解字符串的处理
- 了解该语言在面向对象,函数式编程,泛型,元编程等编程范式的特性
- 了解特有的语法糖
- 了解该语言错误处理,调试方式以及对测试的支持
- 了解该语言的内存分配机制或GC,线程,进程等运行时效率相关
- 了解该语言的编译/解释机制