1. Erlang 是什么
一种“小众”语言(排名50之外)
一种函数式语言 (变量只能赋值一次)
一种动态类型语言(变量类型在运行时决定,代码需要编译后才能执行,与Python,Ruby等不一样)
一种强类型语言
一种面向并发(Concurrency Oriented)的语言
《一场茶杯里的风暴》(刊于《程序员》06年9、10期),《
轻松实现可伸缩性,容错性,和负载平衡的大规模多人在线系统》是两篇极好的介绍性文章。
2.开始学习
先下载安装包
到
http://www.erlang.org/ 下载最新的 Erlang/OTP 版本
或者到
http://cean.process-one.net/download/ 下载一个更易于使用的发行版本,仅有3M大小
网上的资源
http://www.erlang.org/ 是官方网站,建议订阅其邮件列表
订阅
http://www.planeterlang.org/ 的RSS
http://www.trapexit.org/ 里面有不错的文章和教程
http://www.process-one.net/en/ 里面有不少Erlang项目
http://yaws.hyber.org/ 一个并发效率大大超越Apache的Web Server
http://ejabberd.jabber.ru/ 一个Erlang的Jabber服务器实现
http://kl.agile.com/ 里面有Potian和T1的一些经常讨论整理。
http://groups.google.com/group/erlang-china 里面也有一些相关讨论
http://tinyurl.com/5uszus 这哥们翻译了Erlang的部分文档,太好了
你也可以关注JavaEye的综合版
编辑器
Erlide,一个Eclipse的Erlang插件,问题是不够稳定,要随时做好崩溃的准备
Vim,加入vim-erlang 和 taglist 插件后就是一个不错的IDE
Emacs,推荐,会用Emacs的不妨一试
NetBeans,dcaoyuan同学正在开发一个Erlang插件,有兴趣的可以保持关注
Notepad,你太有才了,其实用笔记本写c的也一大堆...
3.语法,框架
Erlang的语法不是很难,但是写惯了OO的程序,初看还是蛮怪异的。看看文档,动手练练,入门还是很Easy的。当对基本语法,进程通讯,分布通讯都掌握之后,就是时候向OTP(Open Telecom Platform)这个平台进军的时候了,如果你想开发99.9999999%的高可用性系统。
4.算法,架构
Erlang这门FP语言提供了非常高的分布式程序开发效率,不再需要辛辛苦苦使用ACE,NIO构造一个支持高并发的通讯底层,不再需要小心翼翼使用lock,semaphore等开发一个多线程的程序。然而,更为核心的问题出现了,怎样将一个大规模计算任务通过一个良好的算法并行起来,怎样实现进程间的通讯架构,使得系统能够实现Load Balance和Fail Over,实现高可用性,健壮性,高性能的目标。
此外,需要留神IO这个常见的瓶颈,Joe Armstrong曾经写了一个pmap(parallel map)的实现,在一台32核的SUN niagara服务器上并行运行一个需要与IO交互的任务。下面是性能提升的数据
引用
#CPUs Speedup
1 0,953
2 1,855
3 2,679
4 3,44
5 4,012
6 4,624
7 5,093
8 5,46
9 5,73
10 6,11
11 6,108
12 6,47
13 6,58
14 6,8
15 6,67
16 7
17 6,99
18 7,29
19 6,97
20 6,97
21 6,74
22 6,86
23 7,07
24 6,85
可见性能提升到了7%后便徘徊不前,追究其原因,是IO那里成为了瓶颈。无论是C,Java,Ruby还是Erlang,都要直视IO带来的问题。
夸夸其谈了一大坨,接下来的笔记将会进入到代码中来。
分享到:
相关推荐
Functional Federated Learning in Erlang (ffl-erl)是一种基于Erlang编程语言实现的分布式机器学习框架,专门针对Federated Learning(联邦学习)设计。联邦学习是一种新兴的机器学习方法,它允许在不集中收集数据...
This hands-on guide is perfect for readers just learning Erlang or for those who want to apply their theoretical knowledge of this powerful language. You’ll delve into the Erlang language and OTP ...
If you’re new to Erlang, its functional style can seem difficult, but with help from this hands-on introduction, you’ll scale the learning curve and discover how enjoyable, powerful, and fun this ...
不正确参数错误不正确参数(bad argument)错误和函数子句错误类似,因为它们都和使用不正确的参数调用函数有关。不正确函数错误导致不正确函数(bad fu
Learning to program using Elixir will teach many things that are very beneficial to programming as a craft, even if at the end of the day, the programmer isn’t using Elixir. This book will teach you ...
As well as simplifying development, Akka enables multiple concurrency development patterns with particular support and architecture derived from Erlang’s concept of actors (lightweight concurrent ...
神经网络Erlang和神经网络
**Erlang与Elixir:构建可扩展的并发系统** `spawnedshelter`是一个专注于Erlang和Elixir教育的资源库,它为学习者提供了丰富的文章、视频、书籍和演讲材料,帮助他们深入理解这两种强大的编程语言。Erlang和Elixir...
Book Description, RabbitMQ is Open Source Message Queuing software based on the Advanced Message Queue Protocol Standard written in the Erlang Language. RabbitMQ is an ideal candidate for large-scale...
RabbitMQ是一个开源的消息代理和队列服务器,使用Erlang语言编写,广泛应用于分布式系统中的消息传递。在Spring Boot项目中,我们可以通过Spring AMQP(Spring的高级消息队列协议模块)进行集成,实现异步处理、解耦...
OTP(Open Telephony Platform)是Erlang编程语言的核心...通过"awesome-otp-learning"项目,开发者可以系统地学习和掌握OTP的核心概念,提高构建高可用系统的能力,并将这些知识应用到实际的Erlang或Elixir项目中。
语言特定资源Rust Go Python Ruby OCaml Haskell Erlang Elixir Common Lisp C#Java Scala D Clojure Nim Pony JavaScript C ++ Dart General API设计和工具这是语言特定资源的集合,可用于查找遵循的最佳实践由...
Elixir是一种基于Erlang虚拟机(BEAM)的现代、功能丰富的编程语言,它以其并发性、可扩展性和容错性而闻名。这个名为"elixir-learning"的存储库显然是一个专门为Elixir初学者和爱好者设计的学习资源集合。下面我们...
Matrex Elixir的快速矩阵处理库,使用高度优化的CBLAS sgemm()以C本机代码实现,用于矩阵乘法。 例如,矢量化线性回归比Octave单线程实现快约13倍。 它还具有高效的内存,因此您可以处理大型矩阵,大约十亿个...
"学习编程语言"这一主题涵盖了多种语言,从Erlang到Go,再到Haskell、Idris、Nix、Rust和Scala,每种语言都有其独特的特性和应用场景。让我们深入探讨这些语言的核心概念及其在实际开发中的应用。 **Erlang** 是一...