文章吧-经典好文章在线阅读:《Erlang 程序设计》经典读后感10篇

当前的位置:文章吧 > 经典文章 > 读后感 >

《Erlang 程序设计》经典读后感10篇

2018-02-13 21:58:02 来源:文章吧 阅读:载入中…

《Erlang 程序设计》经典读后感10篇

  《Erlang 程序设计》是一本由Armstrong著作,人民邮电出版社出版的16开图书,本书定价:79.00元,页数:427,文章吧小编精心整理的一些读者的读后感,希望对大家能有帮助

  《Erlang 程序设计》读后感(一):转书评:Programming Erlang Software for a Concurrent World

  Gary Pollice, 实践教授, Worcester Polytechnic Institute

  2008 年 2 月 15

  阅读 Joe Armstrong 的关于用 Erlang 语言行程序设计的新书如何成为寻求解决并行问题的程序员的无价资源

  来自 The Rational Edge.

  原文:http://www.ibm.com/developerworks/cn/rational/dec07/reader/pollice.html

  ==========================

  rogramming Erlang Software for a Concurrent World

  作者 Joe Armstrong

  The Pragmatic Programmers,2007

  ISBN 19343560X

  Erlang 是爱立信计算机科学实验室设计的函数式程序设计语言和运行系统。它是特别为构建跨网络部署的容错、实时系统而设计的。Erlang 被设计为自然地且容易支持并行。现在 Erlang 是运行在大部分计算平台上的开源系统。

  Joe Armstrong 写了一本关于用 Erlang 进行程序设计的好书。该书适合从函数式语言的初学者到那些有一定 Erlang 经验,并想要提高技能的人中的每一个人。这不是一本参考手册,而是教您学习如何使用 Erlang 编程的书。

  Armstrong 将该书组织成二十个中型章节和六个附录。该书似乎比它的 515 页要短。这是对 Armstrong 的简单易读的书写风格的颂词。我发现自己愉快地花了几分钟并且读了一个章节。学习该书的最好方法是在您读的过程中写一些 Erlang 代码。

  该书的第一个部分,章节 1-6,介绍了用 Erlang 进行顺序程序设计的基本概念。该部分的内容位于章节 2-6。第一章是序言。第二章告诉您如何获得并安装 Erlang 的开源版本,并且确保它在您的平台上能工作。如果您从未用函数式语言编过程序,那么您应该仔细阅读前六个章节。如果您熟悉函数式语言,那么您可以轻松扫过这些章节,并且开始第 7 章。

  依据 Armstrong,第 7 章是“非技术性章节”。他提供了一个简短五页的并行介绍。之后两个技术章节介绍了如何用 Erlang 进行并行程序设计。第 8 章介绍了如何创建进程、在它们之间发送消息,等等。在继续之前,您需要掌握一些基本操作。第 9 章包含了一个关于如何在并行程序中处理错误详细讨论。

  一旦您熟悉了并行,您就准备进行下一步 —— 分布式程序设计。这些是运行在网络上,并且需要消息传递的程序。第 10 章是向您介绍在用 Erlang 书写分布式程序时所需的工具的简短章节。Erlang 有一些特别的需求,例如允许两个 Erlang 程序进行通信的“魔饼”。当您读完该章节时,您就准备成为分布式程序设计大师了。

  许多接下来的章节都独立成章。举例来说,第 11 章介绍了 IRC 程序。其他章节着重于具体主题,例如,处理文件、socket,等等。第 17 章介绍了 Mnesia,它是支持复制型数据库且内嵌入 Erlang 的数据库管理系统。虽然 Armstrong 说 Mnesia 查询很像 SQL,但是他省略掉了这样的事实,只有当您非常熟悉 Erlang 之后,它们的相似性才明显

  最后的两个章节着重于多核计算机的程序设计。这是首先吸引我的地方。这些章节为您提供了帮助您书写用于多核计算机的高性能程序的一些指导和实例。

  六个附录覆盖一组主题。如果您打算书写 Erlang 程序,那么在开始前阅读 Appendix A。该附录的题目是 Documenting Our Program,而它真正是关于如何书写易读的代码及遵照已建立的指南的章节。其他的附录提供参考资料和扩展的实例。

  如果您已经尝试过函数式程序设计,并且因为任意的原因而对其厌烦,那么您可能想试试 Erlang。如果您正疑惑如何掌握并行及分布式应用程序,那么您会找到非常易读的一些很好的资料。我向所有程序设计人员强烈推荐该书。您将从它中学东西

  《Erlang 程序设计》读后感(二):Erlang程序设计中文版(书评和笔记

  在最近的一个多月时间里,我利用业余时间学习了Erlang,这是一门面向并发模式编程的语言,她采用函数式的一些思想,加上强有力的库,在20多年的锤炼中,已经算是世界顶级的并发编程语言之一,当然有些不足的是多少年都不变的语法特性使得这门语言的特性比较死板。

  先吐槽一下:

  1.模块的基本单位是函数,所以你不能导出一个变量,这样我只能通过宏定义来去实现一些匿名函数(但这可能会带来性能上的问题,因为每次都可能创建匿名函数)。

  2.没法做延迟计算,所以没法定义一些极限函数。

  3.并非真正的FP,这真是刚开始了解到的时候很恼火,spawn(fun() -> test:test(self()) end). 虽然是在函数里运行,但是self()是个副作用函数,我强烈建议Erlang将副作用函数进行标注,就如Clojure一样后缀都加上!

  4.少即是多,我同意,但是Erlang的语法糖实在太少了,除了函数、模块和宏没别的了,少不意味着表达力弱啊,但erlang的表达力真的是有点弱,当然模式匹配还是相当方便的说,还有对二进制的处理很是好用

  4.很多未公开函数很好,但是却没有文档支持,只能通过阅读源码了解实现,或者去邮件列表找解决方案

  5.实现的一些接口并不是那么的灵活,例如{packet, 2},这个想修改没法改(不包含数据内容长度),只能hack代码,进行编译,很多时候在Erlang语言这层的优化很有限,必须要深入了解她的实现机制,Erlang重在稳定和热更新,效率反倒是其次的,Joe Armstrong说的,只有当你不得不优化代码的时候再去优化吧,先让代码跑起来。

  6.我希望能够开放对Module的访问模式,就像Lua一样,可以直接导出更多的匿名函数,这样能少很多很多的敲代码的工作量,还能减少错误,更使得代码看起来更简洁。

  7.不好入门,我用了两个星期才算是入道,那种痛苦真的是找不到北,但理解了也就是找到了Erlang解决问题的规范

  8.调试信息看的我累啊,只可能是动态语言和并发语言的通病吗?没用sasl之前,简直是噩梦,用了sasl是眼花。。。

  好吧,我还是特别喜欢Erlang的,因为她带给你是整个编程思维的转变,Joe Armstrong估计是不是最早应用Actor模型或者叫SEDA模型的人呢?

  在看到第七章-并发的时候,虽然只有两页的篇幅,却道出了Erlang架构体系的设计模式,用了非常拟人的方式介绍了Erlang架构体系的设计精髓。

  Joe Armstrong几乎是随意的几句话,却一语道破了Erlang的世界观。在Actor之前,我曾想过如何解决并发的问题,但一直就在锁里转来转去,也想过跳出思维的局限性,可一直没找到好的方式,SEDA这个模型只是了解,没有深入去实现,反倒是这本书彻底给了我方向

  这本书,区区用了四五章就搞掉了几乎Erlang所有的语法特性(期间穿插着实践):

  1.数据类型:

  a.原子:atom

  .浮点数:number

  c.记录:record

  d.元组:tuple

  e.二进制数据:binary

  f.列表:list

  g.内建函数:BIF

  h.Pid

  i.字符串:string

  j.引用:reference,

  k.函数:fun

  l.端口标识: Port Identifier

  m.Boolean

  2.变量和模式匹配

  3.列表解析

  4.case/if表达式

  5.异常处理

  6.模块编译,模块属性,导出,包含.hrl的文件

  7.宏定义

  8.断言(Guard)

  9.消息的发送和接收,超时处理

  这本书的实例很多,中文在翻译一些关键的地方的时候,可能是本身中文表达能力在处理科技文献的时候的弱点,必须还是要对照英文进行了解,否则会漏掉一些关键信息。

  最后,这本书还是非常值得一读,你不仅能领悟到一门超过20年的语言的设计精髓,还有带给你的是一个Erlang的世界观,只有了解了才知道,绝不后悔

  《Erlang 程序设计》读后感(三):十一章 IRClite这个例子有人运行成功了吗?

  我运行后,弹出四个对话窗口,然后就错误了!

  下面是错误i的log:

  =ERROR REPORT==== 31-Aug-2011::09:30:56 ===

  Error in process <0.53.0> with exit value: {undef,[{lib_md5,string,["axjxhxoabhkcythsqnvbqwhxbAsDT67aQ"]},{lib_chan,authenticate,4},{lib_chan,connect,5},{chat_client,try_to_connect,4}]}

  chat_client disconnected unexpected:{'EXIT',<0.53.0>,

  {undef,

  [{lib_md5,string,

  ["axjxhxoabhkcythsqnvbqwhxbAsDT67aQ"]},

  {lib_chan,authenticate,4},

  {lib_chan,connect,5},

  {chat_client,try_to_connect,4}]}}

  chat_client disconnected unexpected:{'EXIT',<0.51.0>,

  {undef,

  [{lib_md5,string,

  ["cdnxnbewanheezmnmcdltwbosAsDT67aQ"]},

  {lib_chan,authenticate,4},

  {lib_chan,connect,5},

  {chat_client,try_to_connect,4}]}}

  =ERROR REPORT==== 31-Aug-2011::09:30:56 ===

  Error in process <0.51.0> with exit value: {undef,[{lib_md5,string,["cdnxnbewanheezmnmcdltwbosAsDT67aQ"]},{lib_chan,authenticate,4},{lib_chan,connect,5},{chat_client,try_to_connect,4}]}

  =ERROR REPORT==== 31-Aug-2011::09:30:56 ===

  Error in process <0.57.0> with exit value: {undef,[{lib_md5,string,["dhxfhasgnhdnmssepwywpykpwAsDT67aQ"]},{lib_chan,authenticate,4},{lib_chan,connect,5},{chat_client,try_to_connect,4}]}

  chat_client disconnected unexpected:{'EXIT',<0.57.0>,

  {undef,

  [{lib_md5,string,

  ["dhxfhasgnhdnmssepwywpykpwAsDT67aQ"]},

  {lib_chan,authenticate,4},

  {lib_chan,connect,5},

  {chat_client,try_to_connect,4}]}}

  =ERROR REPORT==== 31-Aug-2011::09:30:56 ===

  Error in process <0.55.0> with exit value: {undef,[{lib_md5,string,["hnpifmzokbfgobwgjcjymfmxyAsDT67aQ"]},{lib_chan,authenticate,4},{lib_chan,connect,5},{chat_client,try_to_connect,4}]}

  chat_client disconnected unexpected:{'EXIT',<0.55.0>,

  {undef,

  [{lib_md5,string,

  ["hnpifmzokbfgobwgjcjymfmxyAsDT67aQ"]},

  {lib_chan,authenticate,4},

  {lib_chan,connect,5},

  {chat_client,try_to_connect,4}]}}

  请运行成功的人指教,谢谢!

  《Erlang 程序设计》读后感(四):遗憾的是...

  这书前100页左右就已经说完

  erlang的基本了,其实10页都可以

  说完了,不过armstrong老头

  还是挺风趣的,

  大师风范嘛...

  后面的章节都是很多很多的

  例子了,一个个实例来说明了,

  好与坏就仁者见仁了~

  不过有些是没有详细代码的,好像

  要自己上网下载的,太长了。

  真的,对初学者来多太长了...

  可惜它没有详述一些erlang的细节,

  例如...我感兴趣的并发实现的...

  看过网上有人用c++与它对比10000个

  并发,根本没可比性,

  erlang根本就不是用系统的线程之类的...

  《Erlang 程序设计》读后感(五):没太多我想的内容

  我本身并不是一个Erlang程序员,而且我想国内专门做Erlang开发的人应该很少吧。

  大家都知道,Erlang是一个优秀的容错性,并发性很棒的语言,能够很棒地适应多核时代。

  于是我看了这本书,但是在这本书里我没有看到太多我感兴趣的内容,我希望知道的是Erlang的实现原理,对待多核的方式等等,但是这本书刚开始很匆忙地介绍了语法,然后就开始用一个又一个例子来加深Erlang Programming。

  也许是我对这本书的定位出现了问题吧。

  总之,这本书个人认为不适合初学Erlang的人看,我希望赵老师再出一本关于Erlang的书,关注ing。

  另外,这本书我没读完,有些对我的价值不大了.......我不想成为专业的Erlang程序员

评价:

[匿名评论]登录注册

评论加载中……