免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12345下一页
最近访问板块 发新帖
查看: 54742 | 回复: 42
打印 上一主题 下一主题

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

论坛徽章:
1
天蝎座
日期:2013-12-06 18:23:58
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-07-03 19:07 |只看该作者 |倒序浏览
获奖名单已公布,详情请看: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版)    更多图灵新书,点击这里

作者: (瑞典)Joe Armstrong   
译者: 牛化成
丛书名: 图灵程序设计丛书
出版社:人民邮电出版社
ISBN:9787115354570
上架时间:2014-5-27
出版日期:2014 年6月
开本:16开
页码:428

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

论坛徽章:
27
水瓶座
日期:2014-08-22 21:06:34程序设计版块每日发帖之星
日期:2015-11-25 06:20:0015-16赛季CBA联赛之新疆
日期:2015-12-19 19:05:48IT运维版块每日发帖之星
日期:2015-12-25 06:20:31IT运维版块每日发帖之星
日期:2015-12-25 06:20:31IT运维版块每日发帖之星
日期:2015-12-25 06:20:3315-16赛季CBA联赛之上海
日期:2016-04-15 19:51:31程序设计版块每日发帖之星
日期:2016-04-17 06:23:29程序设计版块每日发帖之星
日期:2016-04-23 06:20:00程序设计版块每日发帖之星
日期:2016-05-26 06:20:00每日论坛发贴之星
日期:2016-05-26 06:20:0015-16赛季CBA联赛之辽宁
日期:2017-02-16 23:59:47
2 [报告]
发表于 2014-07-03 21:52 |只看该作者
1. 学习Erlang的方法,毕竟Erlang是一种函数式编程语言,和我们平常学习的语言思维略有不同,这也是很多人学习的障碍。
我学习它也是从{书,《"Erlang程序设计"》,【"Erlang/OTP"并发编程实战】}这两本书开始看起的。多做练习是必须的,我现在工作中基本上是用不上,有时候是尝试着把现在工作中已经有的程序,看看能不能用erlang实现。

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

论坛徽章:
42
19周年集字徽章-周
日期:2019-10-14 14:35:31平安夜徽章
日期:2015-12-26 00:06:30数据库技术版块每日发帖之星
日期:2015-12-01 06:20:002015亚冠之首尔
日期:2015-11-04 22:25:43IT运维版块每日发帖之星
日期:2015-08-17 06:20:00寅虎
日期:2014-06-04 16:25:27狮子座
日期:2014-05-12 11:00:00辰龙
日期:2013-12-20 17:07:19射手座
日期:2013-10-24 21:01:23CU十二周年纪念徽章
日期:2013-10-24 15:41:34IT运维版块每日发帖之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之新疆
日期:2016-06-07 14:10:01
3 [报告]
发表于 2014-07-04 13:31 |只看该作者
我觉得erlang最吸引我的地方就是并发.
可是学了好久,还没有入门.
并发分为服务器端和客户端
书上作为服务器端的例子比较多
但是作为客户端的比较少.
比如http爬虫, telnet批量维护这些典型的运维应用
其他语言都会给出实例.
但是erlang却没有.
还有和流行的开源软件,比如redis, mysql的接口...

论坛徽章:
6
CU大牛徽章
日期:2013-05-20 10:43:41IT运维版块每日发帖之星
日期:2016-07-29 06:20:00IT运维版块每日发帖之星
日期:2016-01-27 06:20:00CU大牛徽章
日期:2013-05-20 10:44:16CU大牛徽章
日期:2013-05-20 10:44:0615-16赛季CBA联赛之广东
日期:2018-03-09 11:17:08
4 [报告]
发表于 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([Pivot|T]) ->
  qsort([ X || X <- T, X < Pivot]) ++   
   [Pivot] ++
   qsort([ X || X <- T, X >= Pivot]).

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


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

论坛徽章:
2
水瓶座
日期:2014-06-12 08:22:39IT运维版块每日发帖之星
日期:2015-08-05 06:20:00
6 [报告]
发表于 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,有限 状态机等行为模式的提供,在快速构建分布式服务这方面,这点非常强大。很不错。。。

评分

参与人数 1可用积分 +2 收起 理由
crazyhadoop + 2 赞一个!

查看全部评分

论坛徽章:
20
CU大牛徽章
日期:2013-04-17 11:48:26羊年新春福章
日期:2015-03-10 22:39:202015年中国系统架构师大会
日期:2015-06-29 16:11:282015亚冠之平阳省
日期:2015-07-31 09:19:042015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-09-30 06:20:002015亚冠之柏太阳神
日期:2015-10-19 20:29:5915-16赛季CBA联赛之天津
日期:2016-11-29 14:03:4315-16赛季CBA联赛之北控
日期:2016-12-24 20:51:492015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-12 20:58:532014年中国系统架构师大会
日期:2014-10-14 15:59:00
7 [报告]
发表于 2014-07-07 22:04 |只看该作者
2012年,买了一本《erlang编程指南》,看得比较快,没有怎么体会到其强大的并发功能,据说这玩意在淘宝的消息通知系统上大规模的应用。还有就是它的虚拟机,据说也是相当的强大

论坛徽章:
1
天蝎座
日期:2013-12-06 18:23:58
8 [报告]
发表于 2014-07-08 14:49 |只看该作者
回复 2# shijiang1130


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

论坛徽章:
36
子鼠
日期:2013-08-28 22:23:29黄金圣斗士
日期:2015-12-01 11:37:51程序设计版块每日发帖之星
日期:2015-12-14 06:20:00CU十四周年纪念徽章
日期:2015-12-22 16:50:40IT运维版块每日发帖之星
日期:2016-01-25 06:20:0015-16赛季CBA联赛之深圳
日期:2016-01-27 10:31:172016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之福建
日期:2016-04-07 11:25:2215-16赛季CBA联赛之青岛
日期:2016-04-29 18:02:5915-16赛季CBA联赛之北控
日期:2016-06-20 17:38:50技术图书徽章
日期:2016-07-19 13:54:03程序设计版块每日发帖之星
日期:2016-08-21 06:20:00
9 [报告]
发表于 2014-07-08 16:08 |只看该作者
在学golang,不打算学erlang了。但是支持erlang,

论坛徽章:
32
CU大牛徽章
日期:2013-05-20 10:45:13每日论坛发贴之星
日期:2015-09-07 06:20:00每日论坛发贴之星
日期:2015-09-07 06:20:00数据库技术版块每日发帖之星
日期:2015-12-13 06:20:0015-16赛季CBA联赛之江苏
日期:2016-03-03 11:56:13IT运维版块每日发帖之星
日期:2016-03-06 06:20:00fulanqi
日期:2016-06-17 17:54:25IT运维版块每日发帖之星
日期:2016-07-23 06:20:0015-16赛季CBA联赛之佛山
日期:2016-08-11 18:06:41JAVA
日期:2016-10-25 16:09:072017金鸡报晓
日期:2017-01-10 15:13:292017金鸡报晓
日期:2017-02-08 10:33:21
10 [报告]
发表于 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的编写过程会很有收获。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP