有段时间没有更新博客了,最近稍微接触了下一门相对小众的语言Erlang,个人感觉学习一段时间有必要总结总结,本文作为该系列的开篇,仅仅列举一些与Java的一些不同点和个人对Erlang的一些主观印象,权当自己学习之路上的一丝痕迹。

Erlang的来历?

Erlang is a general-purpose concurrentgarbage-collected programming language and runtime system. 
The sequential subset of Erlang is a functional language, with strict evaluationsingle assignment
anddynamic typing. For concurrency it follows the Actor model. It was designed by Ericsson to support 
distributed, fault-tolerant, soft-real-time, non-stop applications. It supports hot swapping, thus 
code can be changed without stopping a system.[1]

                          ----以上摘自维基百科

  源于1981年开始的一个研究项目,该项目的目的是探索更好的编写电信应用软件的方法。电信类应用都是一些大型的程序,虽然经过了严密的测试,但是投入运行后还是难免会有许多错误。我们假设这些程序不可避免地会含有错误,进而寻求在软件包含错误的情况下构建可靠系统的方法。该项研究的成果是开发出了一种新的编程语言(Erlang),一门设计方法学,和一个用以构建健壮系统的程序库(OTP)

  ----以上摘自Erlang之父Joe Armstrong于2003年发表的论文:Making reliable distributed systems in the presence of software errors

Erlang与主流语言的区别?

  Erlang是一门面向消息的语言(message-oriented language);

  没有for,控制逻辑简单只有if 和 case,没有else,没有continue break goto,what???(想迭代用递归);

  万物皆进程,并发靠通信;

  进程具有强隔离性(strong isolation),一个进程因错误而结束,不会影响到其他进程;

  唯一的一门并发上做到公平调度的语言;

  没有共享内存,没有锁(但不代表不存在竞态条件,需求导向下,依然会隐式地使用锁的替代机制);

  快排只需5行(???);

  变量Immutable(没想到吧);

  不存在布尔类型,平时我们用的true和false都是原子而已(???);

  不同类型不能相加,但可以比较(1<false返回true,抓狂了吧);

  将同名,但参数不同数量的方法视为不一样的两个方法(不同于Java的方法重载,经常弄错结尾符号);

  进程要么好好跑,要么死翘翘;

  神奇的模式匹配(读写记录,加载函数,处处都用的到);

  丰富的工具集;

  内存缓存解决方案ETS(检索时间为常量而且为常量值);

  极其轻量的进程(一个Erlang进程大概300个字,创建只需几微秒);

  系统高容错;

  支持代码热更新(不用等到凌晨没人的时候更新了);

  适合构建分布式并行计算系统;

  大佬们评价Erlang就是并行计算的未来(火钳刘明)。

Erlang 001--开篇的更多相关文章

  1. [erlang 001] erlang中的错误及异常处理

    一. erlang中的错误 1. 分类 1) 编译错误:主要是编译器检测出的代码语法错误: 2) 逻辑错误:是指程序没有完成预期的工作,属于开发人员的问题: 3) 运行时错误:是指erlang运行时抛 ...

  2. erl_0014 《硝烟中的erlang》 读书笔记001 “绪论”

    1.大家听说Erlang,往往是因为其对高并发的良好支持.其实,Erlang的核心特征是容错,从某种程度上讲,并发只是容错这个约束下的一个副产品.容错是Erlang语言的DNA,也是和其他所有编程语言 ...

  3. 【消息中间件之RabbitMQ学习】-开篇-001

    写在前面的话 项目中因为要用到消息中间件,当初极力推荐RabbitMq.但因为种种原因,最终选型为java+mongodb自实现一套分布式的消.没有用RabbitMq工作过,实属遗憾.因为个人来说实在 ...

  4. ASP.NET Web API 开篇示例介绍

    ASP.NET Web API 开篇示例介绍 ASP.NET Web API 对于我这个初学者来说ASP.NET Web API这个框架很陌生又熟悉着. 陌生的是ASP.NET Web API是一个全 ...

  5. [Erlang 0127] Term sharing in Erlang/OTP 上篇

    之前,在 [Erlang 0126] 我们读过的Erlang论文 提到过下面这篇论文: On Preserving Term Sharing in the Erlang Virtual Machine ...

  6. 一次erlang 节点CPU严重波动排查

    新服务上线后观察到,CPU在10 ~ 70%间波动严重,但从每秒业务计数器看业务处理速度很平均. 接下来是排查步骤: 1. dstat -tam 大概每10s一个周期,网络流量开始变得很小,随后突然增 ...

  7. Erlang学习: EUnit Testing for gen_fsm

    背景:gen_fsm 是Erlang的有限状态机behavior,很实用.爱立信的一位TDD大神写了一篇怎样測试gen_fsm,这个fsm是一个交易系统,负责简单的交易员登陆,插入item,删除ite ...

  8. orleans开篇之hello world

    orleans开篇之hello world 什么是orleans Orleans是一个建立在.NET之上的,设计的目标是为了方便程序员开发需要大规模扩展的云服务.Orleans项目基本上被认为是并行计 ...

  9. Erlang/OTP设计原则(文档翻译)

    http://erlang.org/doc/design_principles/des_princ.html 图和代码皆源自以上链接中Erlang官方文档,翻译时的版本为20.1. 这个设计原则,其实 ...

  10. Java网络编程和NIO详解开篇:Java网络编程基础

    Java网络编程和NIO详解开篇:Java网络编程基础 计算机网络编程基础 转自:https://mp.weixin.qq.com/s/XXMz5uAFSsPdg38bth2jAA 我们是幸运的,因为 ...

随机推荐

  1. [poj1088]滑雪(二维最长下降子序列)

    解题关键:记忆化搜索 #include<cstdio> #include<cstring> #include<algorithm> #include<cstd ...

  2. .net开发ActiveX控件

    我估计有些朋友不清楚ActiveX控件,但这篇博客不是来解释这些概念的.如果你对ActiveX的概念不清楚,请参考这里: http://baike.baidu.com/view/28141.htm 这 ...

  3. rlwrap:让控制台程序使用input.rc里的设置

    习惯了vi模式,在bash里配置input.rc可以使平时命令行操作都使用vi习惯,翻页和跳动光标都很方便 但是当运行一些交互式程序时,比如redis-cli,lua等,它们却不按input.rc的配 ...

  4. geneid/genesymbol/ensemblid等之间的转换

    在基因注释时,难免碰到各种GENE在不同数据库之间的ID转换(例如,Ensembl ID 转Entrez ID,或者Entrez ID与GENE Symbol之间的转换).这里介绍一下常用的三个在线网 ...

  5. Razor中的 内容标记块语法

    在C#中,有两种方法来进行内容块标记 第一种方式 用@: 来标识 @if (true) { @: 测试内容标记块 @DateTime.Now.ToString() } <hr /> 第2种 ...

  6. 22. CTF综合靶机渗透(十五)

    靶机说明: Game of Thrones Hacking CTF This is a challenge-game to measure your hacking skills. Set in Ga ...

  7. Access denied for user 'xxx'@'localhost' 问题的解决方法

    使用SpringMvc + Mybatis + Mysql搭建的架构,调试时出现了以下错误: HTTP Status 500 - Request processing failed; nested e ...

  8. hdu 2897 邂逅明下 (简单巴什博弈)

    题目链接 邂逅明下 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  9. 给WPF的MessageBox启用视觉样式

    WPF的MessageBox为什么会这样 我的一个同学跟我说:“WPF不是新一代技术吗?怎么连MessageBox都没WinForm 的好看?” 上图是Windows Forms 的MesssageB ...

  10. 树莓派配置(一):打开SPI

    1.树莓派默认SPI关闭,在进行编程前需要打开SPI cd /boot/ sudo vi config.txt 将#dtparam=spi=off 改成:dtparam=spi=on 重启 sudo ...