crazyhadoop 发表于 2014-07-03 19:07

速度变身高大上程序员快来学Erlang吧!参与讨论获好礼(获奖名单已公布-2014-8-29)

获奖名单已公布,详情请看:http://bbs.chinaunix.net/thread-4152421-1-1.html

Erlang是一种通用的面向并发的编程语言,目的是创造一种可以应对大规模并发活动的编程语言和运行环境。另外Erlang OTP提供了大量通用的库程序,可以用来轻松创建具有高度容错、热机换码等功能的高质高效的程序。

Erlang语言本身引人注目有几个特点:

[*]高并发:应对超大量的并发活动
[*]分布式:系统可以跨计算机分布运行
[*]持续服务:系统应该能不间断运行许多年
[*]热升级:软件维护/升级应该能在不停止系统的情况下进行。
[*]可靠:满足苛刻的质量和可靠性需求。包括提供容错功能,在硬件失灵和软件错误时继续提供正常的服务。


本期话题:

说说自己学习和使用Erlang的心得体会。
1. 学习Erlang的方法,毕竟Erlang是一种函数式编程语言,和我们平常学习的语言思维略有不同,这也是很多人学习的障碍。
2. 开发Erlang程序的一点体会。结合实例说明一下Erlang开发的强大威力。

活动时间:

2014-07-03 至 2014-08-03

活动奖励:

Erlang程序设计(第2版)Erlang之父权威著作,带你领先一步,精通下一代主流编程语言
1、本次话题讨论最佳参与奖:3名,奖励Erlang程序设计(第2版)一本
2、版面最积极交流会员奖,3名,奖励Erlang程序设计(第2版)一本(7月1日-8月30日)

图书简介:
Erlang程序设计(第2版)    更多图灵新书,点击这里
http://images.china-pub.com/ebook3770001-3775000/3770190/zcover.jpg
作者: (瑞典)Joe Armstrong   
译者: 牛化成
丛书名: 图灵程序设计丛书
出版社:人民邮电出版社
ISBN:9787115354570
上架时间:2014-5-27
出版日期:2014 年6月
开本:16开
页码:428

活动要求:
1、 要言之有物,不能低于20个字。
2、 本次话题主要关注erlang相关的技术讨论,其他问题可能不做重点

shijiang1130 发表于 2014-07-03 21:52

1. 学习Erlang的方法,毕竟Erlang是一种函数式编程语言,和我们平常学习的语言思维略有不同,这也是很多人学习的障碍。
我学习它也是从{书,《"Erlang程序设计"》,【"Erlang/OTP"并发编程实战】}这两本书开始看起的。多做练习是必须的,我现在工作中基本上是用不上,有时候是尝试着把现在工作中已经有的程序,看看能不能用erlang实现。

2. 开发Erlang程序的一点体会。结合实例说明一下Erlang开发的强大威力。
它有自己的数据库mnesina,这一点我觉得还是蛮好的,再有一点就是进程监督树,这个想法不错,第三个就是分布式。

laputa73 发表于 2014-07-04 13:31

我觉得erlang最吸引我的地方就是并发.
可是学了好久,还没有入门.
并发分为服务器端和客户端
书上作为服务器端的例子比较多
但是作为客户端的比较少.
比如http爬虫, telnet批量维护这些典型的运维应用
其他语言都会给出实例.
但是erlang却没有.
还有和流行的开源软件,比如redis, mysql的接口...

craaazy123 发表于 2014-07-07 15:03

1. 学习Erlang的方法,毕竟Erlang是一种函数式编程语言,和我们平常学习的语言思维略有不同,这也是很多人学习的障碍。
找基本基础的书看,不用写书名了,就那么几本。 刚开始要适应函数式编程语言的语法风格,熟悉语言结构,一些概念性的东西还是有必要理解的,如递归和尾递归,因为你不会在二郎代码中看到while,for 循环。
还有监控树,list,tuple数据结构,记录(record),消息机制(erlang是天生的分布式编程语言,之前主要用于电信系统,每个程序都是个独立的进程,没有线程的概念,而进程间通信使用的是消息机制,这个在erlang中非常重要)等。

2. 开发Erlang程序的一点体会。结合实例说明一下Erlang开发的强大威力。
   我们公司后台系统用的是erlang,现在市场上erlang的书和资料都比较少,多看点代码吧。比如rabbitmq,couchdb它们都是用erlang写的,非常适合学习和深入研究。
看一个快速排序算法(qsort.erl):
%% 声明模块qsort
-module(qsort).
%% 暴露函数qsort/1为外部函数,其中数字1表示该函数需要传入一个参数。
-export(qsort/1).

%%空列表则直接返回
qsort([]) -> [];   
%% 选取列表中的第一个元素为Pivot,小于Pivot的元素列表放左边,大于等于Pivot的放右边,然后依次递归,其中++为list拼接操作符
qsort() ->
qsort([ X || X <- T, X < Pivot]) ++   
    ++
   qsort([ X || X <- T, X >= Pivot]).

是不是超简洁?快排的各种版本erlang实现:http://en.literateprograms.org/Quicksort_(Erlang)
另外提一下,erlang做项目有些驱动会不是很全,比如mongodb的,会有很多坑,而且没啥维护,选择其做为项目的编程语言需要根据实际情况选择。IDE 推荐一个erlide,平时我都是文本编辑器,因为没啥好的ide了。:mrgreen:


liuadam 发表于 2014-07-07 15:06

Erlang是一个结构化,动态类型编程语言,内建并行计算支持。最初是由爱立信专门为通信应用设计的,比如控制交换机或者变换协议等,因此非常适 合于构建分布式,实时软并行计算系统。
但是入门有点难度,不像传统语言,很容易上手。
如果你对并发性能有很高的要求,建议使用,据说并发能是apache的15倍。
语言只不过是一个工具,当有具体需要的时候,建议大家尝试使用。

陌路巨额投入 发表于 2014-07-07 17:37


用Erlang两个月后,对erlang的一些浅薄认识:

优点:如楼主所说的之外还有:
(1)一切弱类型脚本语言的优点。
(2)现成的组件都很实用,包括ets、进程字典、gen_server、gen_fsm等。
(3)消息型并发模型和不变变量减少了需要考虑并发加锁的场景。

缺点:
(1)一切弱类型脚本语言的缺点,没有静态类型检测,在调用其他模块时比较依赖注解,不然就要自己看代码,影响效率。
(2)调试困难,有时候还不如用老方法debug("1111")来得快。
(3)由于函数式编程的语法特点,有些算法实现起来不是太顺手。
(4)还是语言特点,匹配模式和不变变量。
(5)使用record时必须很小心,不然很容易覆盖。

      erlang在分布式部署方面的优势是比较明显的,对常遇到的分布式部署的问题封装的比较好,节点之间的故障切换,代码热替换, 性能观察,degbug分析,erlang提供的工具相对更便利一些。当然还有其gen_server,gen_event,supervisor,有限 状态机等行为模式的提供,在快速构建分布式服务这方面,这点非常强大。很不错。。。

beyondfly 发表于 2014-07-07 22:04

2012年,买了一本《erlang编程指南》,看得比较快,没有怎么体会到其强大的并发功能,据说这玩意在淘宝的消息通知系统上大规模的应用。还有就是它的虚拟机,据说也是相当的强大

crazyhadoop 发表于 2014-07-08 14:49

回复 2# shijiang1130


    OTP 是学习Erlang语言本身以后必看的书,那本书很好,非常接近实战。了解了OTP基本可以用Elang来写一些可线上使用的服务了。

cokeboL 发表于 2014-07-08 16:08

在学golang,不打算学erlang了。但是支持erlang,:mrgreen:

jieforest 发表于 2014-07-08 22:15

先感慨一下,很喜欢这个活动,因为是Erlang。

1. 学习Erlang的方法,毕竟Erlang是一种函数式编程语言,和我们平常学习的语言思维略有不同,这也是很多人学习的障碍。
我先说一下我是如何接触Erlang/OTP的。
公司有一个项目,需求里面包含了消息服务器,消息服务器的实现我选择了Tigase解决方案。说明一下,Tigase是XMPP服务器。
在选择Tigase方案的过程中,需要验证消息服务器是否能满足我们的性能要求。
于是我选择了Tsung测试工具,Tsung是一个开源免费的负载测试、压力测试工具,它可以测试HTTP、WebDAV、PostgreSQL、MySQL、LDAP以及XMPP/Jabber等服务器。我们用它来测试Tigase。
看起来都跟Erlang风马牛不相及,但是Tsung是使用Erlang语言开发的,它的运行脱离不了Erlang环境。
于是乎,我的Erlang编程之旅开始了。
第一步当然是Erlang的安装,我一向是在Ubuntu上编程的,因此,Erlang肯定也是安装到ubuntu上。
接着,看了点电子书,我首选的是O'Reilly出版社的《Introducing Erlang》,这本书是2013年出的,比较基础。
另外,官方免费提供了《Erlang OTP Design Principles User's Guide》,下载地址
见:http://www.erlang.org/doc/pdf/otp-system-documentation.pdf
也是入门级的好资料,值得一读。
目前我在Erlang编程方面,还差的很远,也不敢说就能指导别人,还需继续深入。

2. 开发Erlang程序的一点体会。结合实例说明一下Erlang开发的强大威力。
Erlang的高并发性能,需要编写Demo案例,可以用Java、Node.js、Erlang等语言分别实现这个Demo,然后测试并发性能。这个工作并不轻松,随后在空闲的时间我会陆续做这个工作。
先留在这里。
接着还是可以谈一点Erlang编程的体会。
OPT模板是一定要学习的,照着模板学习gen_server、supervisor的编写过程会很有收获。
页: [1] 2 3 4 5
查看完整版本: 速度变身高大上程序员快来学Erlang吧!参与讨论获好礼(获奖名单已公布-2014-8-29)