差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
public:it:erlang [2016/10/19 14:38] oakfirepublic:it:erlang [2018/02/28 13:48] (当前版本) – 外部编辑 127.0.0.1
行 2: 行 2:
   * Official site:[[http://erlang.org|erlang.org]]   * Official site:[[http://erlang.org|erlang.org]]
   * [[http://blog.joak.org/ppt/erlang.html|My ppt about erlang]]   * [[http://blog.joak.org/ppt/erlang.html|My ppt about erlang]]
 +===== Books =====
 +  * [[http://erlang.org/doc/reference_manual/introduction.html|erlang user guild]]
 +
  
 ===== 学习新语言的一般步骤 ===== ===== 学习新语言的一般步骤 =====
  
   * 了解该语言的出生背景与适用环境   * 了解该语言的出生背景与适用环境
-  * 了解输入输出流,文件流操作+    * 引自[[https://zh.wikipedia.org/wiki/Erlang|wiki]]:erlang由乔·阿姆斯特朗(Joe Armstrong)在瑞典电信设备制造商爱立信所辖的计算机科学研究室开发。Erlang于1987年发布正式版本,最早是私有软件,经过十年的发展,于1998年发表开放源代码版本。 
 +    * erlang 语言致力于构建大规模可扩展高可用的实时系统。 
 +    * erlang 运行时系统支持高并发,分布式,高容错。 
 +    * OTP 是个 erlang 功能库,并提供插件开发的原则框架。 
 +  * 了解输入输出流,文件流操作 
 +    * 流操作 [[http://erlang.org/doc/man/io.html|io module]]. ''io:fwrite'' 
 +    * 文件操作 [[http://erlang.org/doc/man/file.html|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>>'' , [[http://erlang.org/doc/programming_examples/bit_syntax.html|具体示例]] 
 +    * **reference** : 引用,由 ''make_ref/0''返回; 
 +    * **Fun** : 函数对象''Fun1 = fun (X) -> X+1 end.'' ''Fun1(2)''; 
 +    * **Port Identifier** : erlang port, 由''open_port/2''返回, [[http://erlang.org/doc/reference_manual/ports.html|详解]] 
 +    * **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}.'', 如果匹配不了则抛异常;
   * 了解数组和其他集合类的使用   * 了解数组和其他集合类的使用
   * 了解字符串的处理   * 了解字符串的处理
行 15: 行 45:
   * 了解该语言错误处理,调试方式以及对测试的支持   * 了解该语言错误处理,调试方式以及对测试的支持
   * 了解该语言的内存分配机制或GC,线程,进程等运行时效率相关   * 了解该语言的内存分配机制或GC,线程,进程等运行时效率相关
-  * 了解该语言的编译/解释机制 ====+  * 了解该语言的编译/解释机制 
  
  
  
  • public/it/erlang.1476859112.txt.gz
  • 最后更改: 2016/10/19 14:38
  • oakfire