前言


为什么突然会写这个东西233呢,前段时间微博转发抽奖抽中了本书《Erlang趣学指南》今天刚收到(这是我第一次抽中书呀hha),翻了翻感觉开启了另一个新世界的大门。学习不同的编程语言其实给人感觉是一件有意思的事,重点不在于不同的语法和符号,而是一种学习不同思考方式的过程。现在学习编程语言个人感觉越来越成为一种预测未来发展趋势的行为,大部分人都会选择现在热门的语言,当然同时也有许多新型or非热门语言逐渐开始兴起,值得高兴的事Erlang正是一门优秀的面向并发的编程语言,虽然小众不易维护。当然它独特的概念与其他语言非常不同,语法也看起来比较奇怪,不过这也是他本身特性所需。从某种意义上来说Erlang不只是一门编程语言,更是一个系统平台。

so,我今天也就大致看了看前几页,所以下面就大致介绍一下我初次了解的Erlang

介绍


Erlang是一种通用的面向并发的编程语言,使用Erlang来编写分布式应用要简单的多,因为它的分布式机制是透明的:对于程序来说并不知道自己是在分布式运行。Erlang运行时环境是一个虚拟机,有点像Java虚拟机,这样代码一经编译,同样可以随处运行。它的运行时系统甚至允许代码在不被中断 的情况下更新。另外如果需要更高效的话,字节代码也可以编译成本地代码运行。

特点

● 并发性 – Erlang支持超大量级的并发进程,并且不需要操作系统具有并发机制。
● 分布式 – 一个分布式Erlang系统是多个Erlang节点组成的网络(通常每个处理器被作为一个节点)
● 健壮性 – Erlang具有多种基本的错误检测能力,它们能够用于构建容错系统。
● 软实时性- Erlang支持可编程的“软”实时系统,使用了递增式垃圾收集技术。
● 热代码升级-Erlang允许程序代码在运行系统中被修改。旧代码能被逐步淘汰而后被新代码替换。在此过渡期间,新旧代码是共存的。
●递增式代码装载-用户能够控制代码如何被装载的细节。
●外部接口-Erlang进程与外部世界之间的通讯使用和在Erlang进程之间相同的消息传送机制。
●Fail-fast(中文译为速错),即尽可能快的暴露程序中的错误。
●面向并发的编程(COP concurrency-oriented programming)
●函数式编程
●动态类型
●及早求值或严格求值
●脚本语言
优缺点
“Erlang 是动态类型的语言,因而不能进行静态分析,所生成的文档也不包含有助于理解的类型信息”——这是惯常的看法,广为流行,而且被看作是 Erlang 在开发大型系统时的一个短板(大型系统意味着更强烈的静态分析需求和更严重的依赖文档进行沟通)。

然而 Erlang 是一个有着 20 多年历史的成熟系统,它早已发展出了一套自己的类型标注系统,不仅用来生成文档,更重要的是可以据此对源码进行静态分析,通过程序来排除一些低级的和隐藏的错误。在这方面, Erlang OTP 的源码本身及其文档就是最好的例子。在 《Erlang 程序设计》的附录A部分,对于这个系统的使用已经进行了充分的说明。

Erlang

  • 最简洁精练的分布式模型
  • Node, Process, Mail (Message)
  • 最优雅的错误处理模型:速错(Fail fast)
  • 如果出现任何异常,立即死掉
  • GenServer编程框架
  • 程序代码风格完全一致,便于交流
  • 轻量级的进程
  • 可以尽可能地按照正常的业务逻辑去设计,而不是过多地考虑硬件环境的制约。
  • 热部署(Hot swap)
  • 变量不可变
  • 更容易写出可靠的程序。也利于事务性代码的编写。
  • 当然这是一把双刃剑。它也改变了你的编程习惯。

(参考:http://www.cnblogs.com/dasea/archive/2012/08/18/2644927.html)


多了解一些东西没什么坏处,不是吗:)