文档章节

为什么使用Erlang?

SummerGao
 SummerGao
发布于 2018/12/29 09:02
字数 912
阅读 15
收藏 0

主要特性

如果问我觉得Erlang最重要的特性是什么的话,我觉得应该是并发。

并发能够带来的好处是不言而喻的,比如:

  • 性能 现在的计算机由于主频的限制,都在往多核的方式发展,有些比较高端的机器甚至有几十个核心。如果编写的程序都是顺序运行的话将会严重浪费多核计算机的计算能力。Erlang本身是面向并发编程的,如果把之前在单核机器上面跑的Erlang程序放到多核机器上面跑的话,性能将会极大的提高。
  • 扩展性 如果在一台机器上面运行Erlang程序还不能满足性能的要求的话,可以简单的升级机器的CPU核心个数,甚至可以经过简单的改造把不同的进程分配到不同的机器上面运行,通过水平扩展方式来满足高并发的业务需求。
  • 容错性 Erlang内部实现的进程是相互独立的,一个进程的崩溃并不会影响到另外一个进程的运行,同时Erlang内部还OTP框架来保证系统的容错性。
  • 清晰性 Erlang世界观和现实的世界是一样的,在大多数的编程语言里面事情都是顺序发生的,但是在Erlang的世界里面所有的事件都是并发的,在编写程序的时候能够比较清晰的把现实世界事件的并行发生的的特性映射到Erlang的并发编程上面。

简介

快速介绍下Erlang比较与众不认同的特性:

  • Erlang Shell 在编写Erlang程序的过程中会有很多时间花费在Erlang Shell里面,Erlang Shell类似于Linux的Bash,开发者能在Erlang Shell里面运行表达式,通过这种交互方式,开发者能够在Erlang Shell里面调试正在运行的Erlang程序(包括远程的Erlang程序)。
  • = 操作符 在一般的编程语言里面,=表示赋值操作,一个变量能够被多次赋值。但是在Erlang里面变量是不可变的,一旦通过=绑定之后,该变量的值就不能发生改变了,重复绑定会导致异常。
  • 变量和原子 所有Erlang的变量都是以大写字母开头的,比如:One、This和My_baby这些都是变量。以小写字母开头的则是符号常量(被称为原子:atom),比如:person、one和hello_world。
  • 进程 Erlang的进程是Erlang虚拟机内部自己实现的进程,非常轻量级,刚开始创建的时候每个进程的大小也就2KB左右,1GB的内存就可以创建50万个进程。同时进程间没有共享内存,进程间的通信通过消息转发实现。

总结

Erlang的特性决定了它是一门比较另类的语言,相信第一次见到它的人会觉得很吃惊,世界上居然会有这样的一门语言。但正是由于这些看似奇怪的特性,让Erlang能够在当今多核的时代充分的发挥它的能力。

本文转载自:https://lintingbin2009.github.io/2017/04/29/%E4%B8%BA%E4%BB%80%E4%B9%88%E4%BD%BF%E7%94%A8Erlang/

SummerGao
粉丝 4
博文 175
码字总数 67825
作品 0
济南
高级程序员
私信 提问
让我们聊聊Erlang的Trap机制

在分析erlang:send的bif时候发现了一个BIFTRAP这一系列宏。参考了Erlang自身的一些描述,这些宏是为了实现一种叫做Trap的机制。Trap机制中将Erlang的代码直接引入了Erts中,可以让C函数直接"...

通九互联科技
2015/03/18
735
5
erlang 学习资源

Erlang语言绝对算得上是一种“小众”语言,但其未来的发展前景却是无法估量的,因为它可以解决传统语言很难解决的并行计算中的难题。Erlang是一种函数式(变量只能赋值一次)、强类型、动态类...

LoveStones
2015/09/17
105
0
收藏的博客 -- erlang学习

一、技术博客 http://blog.csdn.net/erlib 为什么我要选择erlang+go进行服务器架构(1) 为什么我要选择erlang+go进行服务器架构(2) http://www.qingliangcn.org/ https://github.com/qinglian...

libaineu2004
2017/09/14
0
0
用 Elixir 的一周

大约一周前我开始学习Elixir. 关于这个我也只是有些模糊的印象但还没有仔细去看。 但在Dave Thomas 出版了 Programming Elixir之后一切都发生了改变. Dave Thomas 帮我修订过Erlang这本书并且...

dbtop
2014/03/18
3.2K
3
为什么我要选择erlang+go进行服务器架构

服务器非业余研究http://blog.csdn.net/erlib 作者Sunface 估计很多同学看到这里都会觉得迷惑,go的大名已经如雷贯耳了,但是erlang?这个东东是神马?难道是编程语言?怎么从来没听说过。 ...

robslove
2015/02/23
0
1

没有更多内容

加载失败,请刷新页面

加载更多

protoc 编译工具

在进行开发 protoc 之前,你需要首先在你的计算机中安装 protoc 编译工具。 下载编译工具 进入 Protocol Buffers 的源代码中然后选择发布的版本中,找到对应的版本。项目的链接地址为:https...

honeymoose
今天
1
0
uniapp + bootstrapvue 移动/PC 一套搞定 (一)配置bootstrapvue

1.准备文件 自己到DCloud官网: http://dcloud.io/ 去下载官方的IDE Hbuilder,新建一个空的uniapp项目即可。 uniapp框架自带优化的vue,我们仅仅需要准备以下三个文件: bootstrap.min.css ...

panyunxing
今天
10
0
Android Camera原理之camera service类与接口关系

camera service主要是指 frameworks/av/services/camera/下面的代码,最近在看这一块的代码,为了更好地理清这一块的代码,也为了后续学习camera方便一些,我觉得很有必要理一下这一块的整体...

天王盖地虎626
今天
2
0
Golang学习笔记

[TOC] Golang学习笔记 这个学习笔记是最早在1.初,版本左右的时候写的,和当前最新的版本可能会有较大的差异. 因为成文比较早,文章里面又有很多自己的见解,有些东西当时理解的不太透彻可能写错...

我爱吃炒鸡
今天
14
0
科技赋能成效显著!金融壹账通两大赋能项目荣获IDC大奖

7月19日,2019IDC中国未来金融论坛曁颁奖典礼于北京举办。由金融壹账通赋能的长春农商银行多人视频面审智能风控系统、包头农商银行互联网银行SaaS服务两大项目因在项目的创新性、技术领先性、...

IFTNews
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部