Fifth Erlang
Erlang简介:(一些很厉害的特性)
它的虚拟机BEAM是唯一堪与java虚拟机匹敌滴;
-
Erlang是一个结构化,动态类型编程语言,内建并行计算支持。最初是由爱立信专门为通信应用设计的,比如控制交换机或者变换协议等,因此非常适 合于构建分布式,实时软并行计算系统。
-
使用Erlang编写出的应用运行时通常由成千上万个轻量级进程组成,并通过消息传递相互通讯。进程间上下文切换对于Erlang来说仅仅 只是一两个环节,比起C程序的线程切换要高效得多得多了。
-
使用Erlang来编写分布式应用要简单的多,因为它的分布式机制是透明的:对于程序来说并不知道自己是在分布式运行。
Erlang是函数式语言,可靠性方面相当好,可用于开发可靠性极高的系统。(完全的函数式语言)
使用轻量级进程,发明者简化了应用中多进程创建、管理和通信的过程。分布式消息传递成为基本的语言结构,因此锁机制不在必要,并发性能有很大的提高。
Erlang能轻易检测到奔溃进程,因此终止相关进程并启动新进程(错误处理”就让它奔溃“);其还能做到”热拔插“代码。也就是说,不必终止代码运行,就可以替换应用程序的各个部分。
(不过,它没有散列表、高阶模块等)
语法等:
注释(%)、变量(动态类型)、表达式;
符号(被称为原子),模糊匹配(不知道什么东东)
函数:!!
!!Erlang能表达的最大数没有限制,你可以输出几百位的一个数字,你可以想象得到的结果是满满几个屏幕的数字,而且处理的速度一点不慢、。!!
结构:
Erlang使用case来用作模式匹配:
case语句用的是模式匹配,而if语句用的是“哨兵”;其,以if关键字开头,后面跟着几个“哨兵->表达式”值得注意的是,Erlang中if语句中在判断是必须有一个为真,(如果之中没有为真的,则会出错)!!
匿名函数:
(就是把匿名函数当做对象赋值给一个对象进行使用)
列表和高阶函数:
这个章节主要是介绍一些列表操作和高阶函数的使用;
具体的就不写出了,真的想使用或者是深入了解,请看文档或google它;
基本并发语法;
Erlang的三种并发原句是:用“!”发送消息,用spawn产生进程以及用receive接收消息。
下面给一个完整的例子说明使用方法:(如果你把一个西班牙语字符串发送给该进程,它会返回字符串的英语疑问)::
把分布式消息发送给命名资源,可以使用另一种语法:node@server ! message 。(这是配置远程服务器。。这些请自学,很容易你就能如何去运行一个分布式服务器了)
同步消息:
为了吧消息模型从异步变为同步,我们采取以下三部分策略:
后面还有一个产生链接进程的技术吧,懒得做笔记了,对这个有兴趣的时候可以google或百度下;
这个进程的链接好像很重要,分布式服务可以通过这个来监视系统,实现不同计算机间进程的接管等;
这个点有点难,不好理解,没办法做笔记了;*(直接贴图了)
Erlang总结:
核心:
Erlang其实可以说是并发和容错的代名词。因为处理器的设计者想到了分布式多处理器的方法,所以罪行的编程技术也需要提高。
-
动态和可靠性:Erlang依靠的不是编译器所提供的人工的“安全网”,而是链接并发的能力,这样既可靠又简单。
-
轻量级、无共享资源的进程:Erlang拥有消息传递范型和原语,因此它可以轻易的写出带有一定的分离性的应用程序,而这点较为罕见;
-
OTP——企业级的库:这个不了解;
-
就让他奔溃:这个策略使得i不必理会进程为什么奔溃,因为你只要重启它就好。这是一种函数式编程范型,Erlang的饭不是策略也由此得到了增强。
不足:
整合:不在JVM虚拟机上运行,JVM的各种各样的java库以及数以十万计的可用部署服务器都是宝贵的财富;