云计算应该所具备的特质如下:
1. 高负载
2. 正常运转
3. 容错性
4. 分布式
5. 容易伸缩
Erlang(读音:['ə:læŋ]厄兰,中文意思为:占线小时(话务负载单位))正是由于它属于开放的电信业务平台,也就不难理解它的意义了。几乎完全具备以上特质,而且它也是典型的函数式语言。和我们OOP的思想有着截然不同的概念。在以下的学习过程中主要还是以《Erlang程序设计》这本书作为一个学习的依据。
原子
定义:在Erlang中原子用来表示不同的非数字常量值。这里说白了其实就是一种常量的定义。Erlang中原子是全局有效的,不需要像以前c/c++那样通过宏来定义或者包含文件。在定义原子的时候只需要注意以下一些特点就可以:
1. 一般情况原子是以一串以小写字母开头,后面有数字、字母、下划线、邮件符号(@);
2. 使用单引号引用起来的字符也属于原子,例如’Monday’;
3. 一个原子的值就是原子本身;
元组(tuple)
定义:首先它是Erlang中具有特质的一个定义,如果说把它和我们java中的一个JavaBean来类比可能稍显类似,书上引用的是c语言数据结构来解说元组的结构,尽管非强浅显能看懂。但是作为一个java程序员我觉得采用自己熟悉的语言结构来对比,学习效果更佳吧(对于记忆有很大帮助)。
比如我们一般对于JavaBean的定义是如下结构:
public class Person {
private String name;
private int height;
private int footSize;
private String eyeColor;
// get/set...
}
那在我们引用定义的时候就可以直接:
Person person1=new Person();
person1.setName("yeshucheng");
person1.setHeight(111);
person1.setFootSize(40);
person1.setEyeColor("black");
......
与之相对应的是我们使用Erlang来定义了,对于Erlang的定义就截然和c/c++或者java有着明显不同,相对于更加精炼明了:(这里我直接使用书上说的所谓二元组)
Person={person,{name,yeshucheng},{height,111},{footsize,40},{eyecolor,black}}.
没错,就是这么直截了当的来定义,甚至赋值(严格说Erlang不能这么说,但是为了好记忆可以这么理解)
对于以上的定义这里要说明注意的地方:
1. 定义元组,元组中字段没有名字,通常可以使用一个原子作为元组的第一元素来标明(请注意这里花括号内第一原子都是解释逗号后面一个说明),这个元组所能代表的含义就是上面列出的程序定义了。
2. 创建元组,在声明元组的同时其实已经创建了元组,这个也是Erlang的一大特点之一了。如果不再使用,也随之销毁。Erlang使用的垃圾搜集器去收回没有使用的内存。
如:F={firstName,wan}
L={lastName,andy}
P={person,F,L}//这里就应对我们第一条说明的一样第一个名称表示就是后面所有逗号的整体列举,如果在Erlang环境中对于上面写完后,直接敲回车(语句结束后存在”.”这里稍微注意下)就会得到以下结果,正好印证我们所说明这这个问题了
==》{persong,{firstName,wan},{lastName,andy}}.
如果在创建过程中存在一个未定义的变量,则程序编译就会产生错误。
3. 提取元组的字段值,刚才我们在程序中有定义一个Person的元组而且也设置值了,现在如果我们想得到或者说提取我们的值,那需要如何而做呢?首先我们采用基本的元组方式来试着看看如下:
1> Point={point,10,45}.
2> {point,X,Y}=Point.
3> X.
10
4> Y.
45
注明:这里又再次强调下point逗号后面的都是为他而说明的。
1>Person={person,{name,yeshucheng},{height,111},{footsize,40},{eyecolor,black}}.
2>{_,{_,Who},{_,_},{_,_},{_,_}}=Person.
3>Who.
yeshucheng
说明下,如果上面想得到的是值,那么位置响应对号入座然后Who换成What就成(我开始也犯错误,编译立马出错,后来想想用过一个What试试,果然正确,呵呵)。
列表
定义:列表第一个元素称为列表的头(head),后部分称为列表尾(tail),一般[H|T]来标示列表了。
注:列表的头可以是任何东西,但是列表的尾通常还是一个列表。
至于具体的细节问题还是需要找找相关文档看下为好,它的概念牵涉到后面的非常多的定义了。
分享到:
相关推荐
erlang编程指南学习笔记,包含具体操作命令例子
NULL 博文链接:https://jias.iteye.com/blog/615679
Joe的那篇erlang论文 Programming Erlang + 源码包 Erlang Programming Concurrent Programming in Erlang efficiecy guide 资源齐全.希望能帮到你.
erlang学习资料
erlang 程序设计一书的笔记,帮你快速重温erlang的知识点。
NULL 博文链接:https://xiajs.iteye.com/blog/1871551
erlang学习3erlang学习3erlangerlang学erlang学习3习3学习3
Erlang学习资料,2本书,不用卖书,电子书足够了
本文是一篇关于Redis全套学习笔记的文章,主要介绍了Redis的基础知识、数据结构、持久化、集群、高可用、性能优化等方面的内容。通过本文的学习,读者可以全面掌握Redis的使用和应用,提高自己的技术水平和实践能力...
erlang学习2.pdferlang学习erlang学习2.erlang学习2.pdfpdf2.pdferlang学习2erlang学习2.pdf.pdf
学习erlang 开发游戏利器 erlang学习文档 erlang学习工具
资源名称:Erlang语音学习资料汇总资源目录:【】Erlang程序设计【】[ManningPublications]ErlangandOTPinAction【】[NoStarchPress]LearnYouSomeErlangforGreatGood!ABeginner'sGuide【】[O'ReillyMedia]...
erlang学习4.pdferlang学习4.erlang学习4erlang学习4.pdf.pdfpdferlang学习4.pdf
erlang学习1.pdferlang学习erlang学erlang学习1.pdf习1.pdf1.pdf
用于erlang学习资源 一些基本的语言
erlang 连接学习例子 最简单的通讯例子
erlang入门电子书 erlang编程 Introducing Erlang,作者Simon.St.Laurent
很不错的erlang学习资料。推荐刚上手的同学下载学习。
学习erlang的好资料。 Erlang是一个结构化,动态类型编程语言,内建并行计算支持。最初是由爱立信专门为通信应用设计的,比如控制交换机或者变换协议等,因此非常适 合于构建分布式,实时软并行计算系统。 使用...