论坛首页 综合技术论坛

erlang的优秀之处

浏览 9500 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (6) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-03-24   最后修改:2010-04-01
erlang是我见过的最简洁和实用以及符合直觉的语言。
现在,我大略的总结一下。

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都可以加。
   发表时间:2010-03-25  
支持一下加油
0 请登录后投票
   发表时间:2010-03-25  
erlang 最麻烦的就是代码段结束符,分号/逗号/句号/无符号,头都大了,每次调试这块花了很多时间,不知是不是我个人的问题.
0 请登录后投票
   发表时间:2010-03-25  
我也有这样的问题,有点头大,我觉得还是学的不太仔细的问题。
0 请登录后投票
   发表时间:2010-03-25   最后修改:2010-03-25

以前couchdb的作者写过一篇抱怨erlang语法的文章,可以看看:

What sucks about erlang

hittyo 写道
erlang 最麻烦的就是代码段结束符,分号/逗号/句号/无符号,头都大了,每次调试这块花了很多时间,不知是不是我个人的问题.

 

 

0 请登录后投票
   发表时间:2010-03-25   最后修改:2010-03-25

目前尝试erlang IDE解决
0 请登录后投票
   发表时间:2010-03-26   最后修改:2010-03-26
erlang的思想和架构值得学习。不过语言本身比较麻烦。。开发和调试的效率实在不高。。
java方面目前有个Netty框架不错,plurk.com用它做comet server,比较轻松得达到单机10万长连接,4核cpu占20%,已经相当不错了。不知道这里有没有对Netty以及java的高并发方面比较熟悉的高手?希望能够多交流:)
0 请登录后投票
   发表时间:2010-03-26  
hittyo 写道

目前尝试erlang IDE解决

头像不错 
0 请登录后投票
   发表时间:2010-03-26  
approach 写道

以前couchdb的作者写过一篇抱怨erlang语法的文章,可以看看:

What sucks about erlang

hittyo 写道
erlang 最麻烦的就是代码段结束符,分号/逗号/句号/无符号,头都大了,每次调试这块花了很多时间,不知是不是我个人的问题.

你推荐的文章中提到了 erlang没有变量 ,LOL 这是erlang天生的优点,“变量不变” 省去了 锁

 

 

0 请登录后投票
   发表时间:2010-03-27  
wenjixiao 写道
erlang是我见过的最简洁和实用以及符合直觉的语言。

它很好用吗,你觉得python怎么样
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics