erlang学习半个月的心得
来源:互联网 发布:广数928tea编程说明书 编辑:程序博客网 时间:2024/05/09 15:13
序
当初,为erlang介绍中的并发、分布式、可用性、软实时特性所吸引,开始入手erlang。目标是想了解erlang是怎么做到这些特性,对开发效率的提升有多大,我目前项目中碰到的并发、分布式、实时的困境他能否解决?怎么解决?
主要还是通过网络上下载的《Erlang程序设计中文版(完整书签).pdf》来学习,pdf大都是图片版,文字版的很少,找到的内容也不全。
首先看了顺序编程一章,算是入了门,我想真写起程序来,除了变量单次赋值比较麻烦,其他跟C等命令式语言也不会差太大,估计需要个把月的转变期。
erlang的优缺点
一、OTP
按目前的了解,我认为erlang真正比其他语言好的地方,erlang最大的优点,不是语言,而是他的OTP部分。爱立信用这个语言成功开发了ATM交换机,这个成功项目的框架连同erlang语言一起开源出来,框架就叫OTP。也就是说,如果你的项目需求跟ATM交换机类似,那用erlang非常好,完整的框架摆这了,节约大量的成本。
更重要的是,OTP不是提供底层的类库,他的理念是非功能性需求和功能性需求的代码分离,也就是说这个系统的一半已经开发好了,代码热加载、分布、系统管理、系统监控 等等,你只要专注于功能需求的实现。
OTP中还带有一个分布式数据库Mnesia,类键值数据库,erlang语言的元组等可直接存入取出,这对开发效率应该是有非常大帮助的。
二、可用性
erang在错误处理方面想法很独到,详细可以参看创始者之一写的论文《面对软件错误构建可靠的分布式系统.pdf》
erlang常说的可用性n个9,在创始者论文中也提到,他是从爱立信的官方宣传文档中找到的,怎么算出来的不知道,他自己没有数据,因为各项目的人都是告诉他很好,很稳定,但是没具体统计。我们意会一下,这表示erlang不同于其他开源产品,他的稳定性可用性很优秀。但是我们自己开发的产品,稳定性可用性还是要靠自己的能力去保障。
常有人把erlang开发的web服务器Yaws跟Apache对比,有个经典的对比图,erlang超级大牛余峰博文中有一篇就是分析这次的测试,结果是这个测试方法不公平。
所以erlang不是银弹,不是用了它产品就一定可以分布式、高可用性。但确实会帮助你在这方面有很大提升。
三、分布式、并行性
erlang让你写代码的时候,很容易实现并发和分布式,而且代码书写的时候,多机分布和单机并行的代码写法一致,本来是单机的,数据量提升以后,加一台机器,代码不用改。当然,前提是你按erlang的OTP设计思路来开发。
四、erlang的缺点
erlang语言如果不是函数式语言,我想erlang现在已经大红大紫,目前的开发人员,99%是命令式语言开发的,这个学习成本是一个很高的门槛,特别是如果某个项目想用erlang,到哪里找三四个开发人员,这是个很大的问题。
学习推荐
erlang的中文教材,不管电子版的还是印刷出来的,都非常少,但是都很经典。前面提到的创始者写的两个文章,基本上是必看的。
用erlang OTP写一个完整项目,细节的东西还是很多的, 所以这本书是做实际项目前必看的《Erlang/OTP并发编程实战[平装] 》~洛根(Martin Logan) (作者),梅里特(Eric Merritt) (作者),卡尔森(Richard Carlsson) (作者),连城 (译者)
国内erlang的高价值的博文,有一大半是来自余峰,所以他的博客和博客合集《erlang深度分析.pdf》,是需要经常看的。pdf在他的新博客上有下载链接。
新博客地址: http://blog.yufeng.info/
旧博客地址: http://mryufeng.iteye.com/
- erlang学习半个月的心得
- 半个月的VC++学习之旅
- 半个月之内的学习任务
- 学前段半个月的一些心得(一)
- 学前段半个月的一些心得(二)
- 学前段半个月的一些心得(三)
- 学前段半个月的一些心得(四)
- 学前段半个月的一些心得(五)
- csdn学习半个月
- 忙碌的半个月
- 忙碌的半个月
- 过去半个月的学习资料整理!(一)
- 过去半个月的学习资料整理!(二)
- 《c和指针》学习半个月的总结---数据结构部分
- 整理一下半个月来的学习(7.1-7.15)
- 关于学习Web前端半个月的总结
- 兼职半个月的感受
- 毕业设计半个月的感受
- Visual C++ CListCtrl类超强排序
- 服务器保存png图片失败java.lang.NoClassFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment
- Editplus使用技巧荟萃
- oracle-常用函数
- 二级c++—对象和衣服
- erlang学习半个月的心得
- php 获取数组中重复数据
- 归并排序C实现-空间复杂度O1
- (一) 基本概念
- java获得一个月的天数
- Xcode下 gdb 调试命令
- 黑苹果安装后不能启动Windows解决
- Ubuntu12.04 server 开启root用户图形界面直接登录
- struts2的s:action标签