
Erlang
文章平均质量分 65
肥宝Fable
微信公众号:肥宝的实验室
超级实验室,技术黑工厂
展开
-
Erlang(1):安装erlang虚拟机
最近做的也有项目失败了,新的项目可能要用erlang。就尽管研究一下吧。把别人的教程和自己遇到的困难写一下,可能理解得更好。因为我之前写的C++比较多,所以这将要不断地跟C++来比较,才能更好地把握语言的本质,否则只是一个写业务的,好像erlang新手工资还比C++低。1.网上找到了一本《erlang程序设计》中文版的书。是十年前的东西了。应该可以浏览一下,但是当做入门教程的话原创 2017-01-13 15:57:48 · 3798 阅读 · 0 评论 -
Erlang(11):进程
erlang的进程是指虚拟机管理的进程,而不是操作系统的重量级进程。这些进程,创建和销毁都非常迅速;进程之间发送消息非常快速;进程在所有的操作系统上都具有相同的行为方式;可以拥有大量的进程;进程不共享任何内存,是完全独立的;进程唯一的交互方式就是消息传递。Pid = spawn(Mod, Func, Args) 创建一个新的进程来运行指定模块的指定参数。Pi原创 2017-01-18 19:31:12 · 3103 阅读 · 0 评论 -
Erlang(10):类型分析和检测
在Erlang中我们可以通过type及spec定义数据类型及函数原型。通过这些信息,我们对函数及调用进行静态检测,从而发现一些代码中问题。同时,这些信息也便于他人了解函数接口,也可以用来生成文档。Type :: any() %% 最顶层类型,表示任意的Erlang term | none() %% 最底层类型,不包含任何term原创 2017-01-18 10:52:24 · 3388 阅读 · 0 评论 -
Erlang(9):常识补充
1. applyapply(Mod, Func, [Arg1, Arg2, ..., ArgN])等价于Mod:Func(Arg1, Arg2, ..., ArgN)区别在于,使用apply,Mod和Func是可以算出来的。不推荐使用apply,许多分析工具都无法得知发生了什么,编译器优化也可能不管用。2.元数函数参数的数量叫做元数。函数名相同,元数不同,算原创 2017-01-17 17:38:54 · 2324 阅读 · 0 评论 -
Erlang(8):二进制型与位语法
大多数情况下,二进制型里的位数都会是8的整数倍,因此对应一个字节串。如果位数不是8的整数倍,就称这段数据为位串。二进制型的编写和打印形式是双小于号和双大于号之间的一列整数或字符串2> >.>3> >.>操作二进制型binary模块list_to_binary(L)->B 把io列表(iolist)L里的素有元素压扁后形成的二进制split_binary(Bin,Po原创 2017-01-17 15:14:09 · 3777 阅读 · 0 评论 -
Erlang(7):顺序程序的错误处理
显式生成错误的方法:exit(Why) 广播一个信号给当前进程链接的所有进程。throw(Why) 抛出一个调用者可能想要捕捉的异常错误。error(Why) 指示奔溃性错误,非常严重的错误。捕捉错误,try...catchtry FuncOrExpressionSeq of Pattern1[when Guard1] -> Expressions1; Pattern2原创 2017-01-17 11:25:42 · 2344 阅读 · 0 评论 -
Erlang(6):记录和映射组
记录和映射组记录record是元组的另一种形式-record(Name, { key1 = Default1, key2 = Default2, ... key3, ... }).记录比较像C++的结构和类。.hrl有点想C++的.h文件test.hrl-record(todo, {status = reminder, who =原创 2017-01-16 18:38:46 · 3263 阅读 · 0 评论 -
Erlang(5):控制结构when,if,case,for
控制结构,其实可以分成两种,一种是循环,另一种是选择分支。1.for循环的实现 for(Max, Max, F)->[F(Max)]; for(I, Max, F)->[F(I)|for(I+1, Max, F)].在Erlang Shell里面声明这个for()函数会报错,暂时不深究,反正很少会用到shell编写函数。再调用:22> c(test).原创 2017-01-16 15:44:08 · 3935 阅读 · 0 评论 -
Erlang(4):模块和函数
1.创建模块和调用函数:模块是erlang的基本单元。模块保存在扩展名为.erl的文件里。必须先编译才能运行,编译后的模块以.beam作为扩展名。子句没有返回语句,则最后一条表达式的值就是返回值。-module(geometry). %模块声明,模块名必须与文件名相同。-export([area/1]). %导出声明,声明可以外部使用的函数area({rectangle, Wi原创 2017-01-16 10:14:50 · 2643 阅读 · 0 评论 -
Erlang(3):数据类型与变量
1.初步尝试控制台的操作。输入1> a = 20结果没反应。。。后来发现erlang的语句是以.号来结尾的。改改:1> a = 20.** exception error: no match of right hand side value 20报错了,与右边的值不匹配。在研究一下。erlang变量必须以大写字母或者下划线开头。例如:2> A = 20.20=是模式匹配原创 2017-01-14 12:11:22 · 3461 阅读 · 0 评论 -
Erlang(2):初步接触并发的编程思想
看了《Erlang程序设计》的开头两章,觉得跟第一版的果然很不同。而且是正版的电子版,文字版的,不是图片。Erlang是面向并发的语言,它可以创建数以万计的进程来执行程序。当然这些进程是由Erlang虚拟机管理的轻量级进程,而不是操作系统的进程。对照C++,Java这些面向对象的语言来看。Erlang的进程更加像类的对象。通过声明模块,在别的模块里面就可以创建这些模块:原创 2017-01-13 18:34:42 · 2589 阅读 · 0 评论 -
Erlang(12):进程和错误
进程:普通进程和系统进程,连接:进程之间可以相互连接。如果AB两个进程连接,A挂了的时候,会想B发送一个错误信号。连接组:进程P的连接组是芝P相连的一组进程。监视:监视和连接很相似,但是单向的。消息和错误信号:进程协作的方式是交换消息或错误信号。错误信号的接收:{'EXIT', Pid, Why} 当普通进程收到错误消息时,如果退出原因不是norma原创 2017-01-19 00:12:20 · 2302 阅读 · 0 评论