锁定老帖子 主题:erlang的优秀之处
精华帖 (0) :: 良好帖 (0) :: 新手帖 (6) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-03-24
最后修改:2010-04-01
现在,我大略的总结一下。 1,模式匹配 模式匹配是erlang的基础,在用erlang的时候,必须得时时在脑中有匹配的概念。 赋值,分支,函数,提取都要用。 变量的一次性赋值也是在这个概念下的。 2,基本的数据类型 number<atom<reference<fun<port<pid<tuple<list<binary 一共9种,上边我是默写的,无觉得应该把这些东西背下来。 我发现,我背下来的东西越多,我就越觉得erlang越少,越简洁。 3,语句 if pattern -> pattern -> end case something of pattern -> pattern -> end try something of pattern -> pattern -> catch pattern -> pattern -> after something end begin something, something end receive pattern -> pattern -> end 上边这些就差不多了。 事实上,从函数式的观点上看,可以根本就不需要什么语句块神什么的,这些语句都可以以函数的方式来实现。当然,如果那样的话,你使用的时候也要用函数调用的方式,那就不美了。 而erlang这样,不多不少的几个语句,刚刚好。 上边的三点就是erlang的基础了,注意啊,我也是初学,别追究太多。 剩下的就是一些细节。 1,list list的重要性,我想学过点lisp的都有数,所以,我不想多说了。因为我还得学呢。 2,函数引用和高阶函数 这个最重要了,必须得搞清楚fun这个东西,搞不清楚可就不fun了。 函数式程序设计之所以能行,也就是因为这个了。 3,bif 也就是内建函数了,要不怎么说erlang优雅呢,简单的几个语法,加上几个内建的函数接口,你可以想象用c实现这些函数应该是多么的明了。 erlang环境虚拟机的概念非常的清晰。 4,异常 三类,throw,exit,error,记住这个就差不多行了。 常用的是throw;exit是进程退出时用的;error是系统的内部不可预测的错误。 5,进程和并发 我们可以看到,pid作为数据类型存在了。 而erlang的多进程合作是用几个内建函数实现的,基本上,spawn,send,receive。 至于link什么的,也差不多吧,我也还不太明确。也就是多记住几个函数的问题。 6,otp 基本上不懂,我搞不清楚它是用模板替换的方式,还是用函数调用的方法搞的。 不过,即使用的时候也不必知道它是怎么做的,直接用就行了。 我有总想刨根问底的恶习。 7,宏 就是替换了。 8,尾递归 函数式嘛,不可避免的。 所以,必须的想法习惯。 我还有障碍。 大致差不多了。 我今天写这些不过是想坚定一下我的信心。 而且这些东西也可以在某些时候,我会查查看看,因为我会忘的。 ========================================================= 9,并发,错误处理,分布式 并发——进程 错误处理——link,退出信号,系统进程 分布式——node 10,断言和断言序列 fun(X) when somesthing -> 这种函数的定义,加强了模式匹配的功能,这种对模式匹配的加强是非常必要的,不能没有的。而且,这种断言可以是很多个,且有and和or的组合。我原来也觉得光模式匹配确实是有毛病,只是不知道在哪里,现在的when断言,刚好弥补了模式匹配的不足。我也不知道是不是弥补好了,感觉好像差不多了。但是,什么地方有when这样的guard呢?基本上,除了if都可以加。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-03-25
支持一下加油
|
|
返回顶楼 | |
发表时间:2010-03-25
erlang 最麻烦的就是代码段结束符,分号/逗号/句号/无符号,头都大了,每次调试这块花了很多时间,不知是不是我个人的问题.
|
|
返回顶楼 | |
发表时间:2010-03-25
我也有这样的问题,有点头大,我觉得还是学的不太仔细的问题。
|
|
返回顶楼 | |
发表时间:2010-03-25
最后修改:2010-03-25
以前couchdb的作者写过一篇抱怨erlang语法的文章,可以看看:
hittyo 写道
erlang 最麻烦的就是代码段结束符,分号/逗号/句号/无符号,头都大了,每次调试这块花了很多时间,不知是不是我个人的问题.
|
|
返回顶楼 | |
发表时间:2010-03-25
最后修改:2010-03-25
目前尝试erlang IDE解决 |
|
返回顶楼 | |
发表时间:2010-03-26
最后修改:2010-03-26
erlang的思想和架构值得学习。不过语言本身比较麻烦。。开发和调试的效率实在不高。。
java方面目前有个Netty框架不错,plurk.com用它做comet server,比较轻松得达到单机10万长连接,4核cpu占20%,已经相当不错了。不知道这里有没有对Netty以及java的高并发方面比较熟悉的高手?希望能够多交流:) |
|
返回顶楼 | |
发表时间:2010-03-26
hittyo 写道 目前尝试erlang IDE解决 头像不错 |
|
返回顶楼 | |
发表时间:2010-03-26
approach 写道
以前couchdb的作者写过一篇抱怨erlang语法的文章,可以看看:
hittyo 写道
erlang 最麻烦的就是代码段结束符,分号/逗号/句号/无符号,头都大了,每次调试这块花了很多时间,不知是不是我个人的问题.
你推荐的文章中提到了 erlang没有变量 ,LOL 这是erlang天生的优点,“变量不变” 省去了 锁
|
|
返回顶楼 | |
发表时间:2010-03-27
wenjixiao 写道 erlang是我见过的最简洁和实用以及符合直觉的语言。
它很好用吗,你觉得python怎么样 |
|
返回顶楼 | |