`
wenjixiao
  • 浏览: 193658 次
社区版块
存档分类
最新评论

erlang的优秀之处

    博客分类:
  • tech
阅读更多
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都可以加。
分享到:
评论
17 楼 mryufeng 2010-04-04  
Erlang语言成分在整个otp平台20%的分量都不到 所以他的核心不是语言 讨论偏了
16 楼 七猫 2010-04-02  
mlzboy 写道
fkpwolf 写道
学习functional language还是haskell正宗,个人感觉

它的优秀之处在哪,能否举个它做的很好,别的语言实现起来不太方便的例子


我也想问这个,毕竟语言是拿到做事的,要是纯漂亮,啥用也没有
15 楼 mlzboy 2010-04-02  
fkpwolf 写道
学习functional language还是haskell正宗,个人感觉

它的优秀之处在哪,能否举个它做的很好,别的语言实现起来不太方便的例子
14 楼 java_wei 2010-04-02  
高手是个概念  优秀也是个概念  我看你也在炒概念
13 楼 dandy 2010-03-30  
fkpwolf 写道
学习functional language还是haskell正宗,个人感觉

haskell太难了!
12 楼 fkpwolf 2010-03-29  
学习functional language还是haskell正宗,个人感觉
11 楼 mryufeng 2010-03-28  
你说的这些 是erlang语言最基本的特性 其实不算是优秀之处 什么语言都有的...

真正的优势的地方是在于进程的独立性和可预测管理性, 很容易抽象出现实世界的模拟...
10 楼 wenjixiao 2010-03-27  
mlzboy 写道
wenjixiao 写道
erlang是我见过的最简洁和实用以及符合直觉的语言。

它很好用吗,你觉得python怎么样

对于高手来说,什么语言并不是问题。
遗憾的是,我不是高手。
erlang我只是从概念分析上觉得很喜欢,我的程度还远远不够。
python我确实也用过,我觉得它太乱了,什么都有,什么都行。
这样的话,它是行了,我就不行,我迷糊了。
9 楼 mlzboy 2010-03-27  
wenjixiao 写道
erlang是我见过的最简洁和实用以及符合直觉的语言。

它很好用吗,你觉得python怎么样
8 楼 langzhe 2010-03-26  
<div class="quote_title">approach 写道</div>
<div class="quote_div">
<p>以前couchdb的作者写过一篇抱怨erlang语法的文章,可以看看:
<br><br><a href="http://ziranxi.com/blog/201003-erlang-16.html">What sucks about erlang</a></p>
<div class="quote_title">hittyo 写道</div>
<div class="quote_div">erlang 最麻烦的就是代码段结束符,分号/逗号/句号/无符号,头都大了,每次调试这块花了很多时间,不知是不是我个人的问题.</div>
<p>你推荐的文章中提到了 erlang没有变量 ,LOL 这是erlang天生的优点,“变量不变” 省去了 锁</p>
<p> </p>
</div>
<p> </p>
7 楼 tianshiyeben 2010-03-26  
hittyo 写道

目前尝试erlang IDE解决

头像不错 
6 楼 laser_lu 2010-03-26  
erlang的思想和架构值得学习。不过语言本身比较麻烦。。开发和调试的效率实在不高。。
java方面目前有个Netty框架不错,plurk.com用它做comet server,比较轻松得达到单机10万长连接,4核cpu占20%,已经相当不错了。不知道这里有没有对Netty以及java的高并发方面比较熟悉的高手?希望能够多交流:)
5 楼 hittyo 2010-03-25  

目前尝试erlang IDE解决
4 楼 approach 2010-03-25  
<p>以前couchdb的作者写过一篇抱怨erlang语法的文章,可以看看:
<br><br><a href="http://ziranxi.com/blog/201003-erlang-16.html">What sucks about erlang</a></p>
<div class="quote_title">hittyo 写道</div>
<div class="quote_div">erlang 最麻烦的就是代码段结束符,分号/逗号/句号/无符号,头都大了,每次调试这块花了很多时间,不知是不是我个人的问题.</div>
<p> </p>
<p> </p>
3 楼 wenjixiao 2010-03-25  
我也有这样的问题,有点头大,我觉得还是学的不太仔细的问题。
2 楼 hittyo 2010-03-25  
erlang 最麻烦的就是代码段结束符,分号/逗号/句号/无符号,头都大了,每次调试这块花了很多时间,不知是不是我个人的问题.
1 楼 langzhe 2010-03-25  
支持一下加油

相关推荐

    erlang23.2版windows64位.zip

    Erlang因其在处理大量并发连接和容错能力上的优秀表现,广泛应用于电信、银行、互联网服务等领域。 在标题"erlang23.2版windows64位.zip"中,我们了解到这是Erlang的一个特定版本——23.2,专为Windows 64位操作...

    rabbitmq,erlang安装包

    Erlang是一种并发性极强的编程语言,由瑞典电信公司Ericsson开发,因其在容错和高可用性方面的优秀特性,成为构建RabbitMQ的基础。 在安装RabbitMQ之前,首先需要安装Erlang环境,因为RabbitMQ是用Erlang编写的。...

    erlang程序设计中文版

    Erlang正是在这种背景下被重新发现,并因其优秀的并发和分布式处理能力而受到越来越多的关注。 书中提到,如果一种语言不能优雅且可靠地处理并行计算问题,那么它将不适合21世纪的计算环境。主流编程语言如C/C++等...

    erlang 20.3.zip

    Erlang因其在处理大量并发连接和容错能力上的优秀表现,尤其在电信、银行、互联网服务等领域得到了广泛应用。其中,RabbitMQ是一个基于Erlang实现的消息队列系统,它被广泛用于微服务架构中的异步任务处理和解耦通信...

    Erlang.ppt

    Erlang在1984年成立之初,主要是为了探索用多种语言编程电话交换系统的可能性。经过一系列的实验和原型项目,Erlang在1991年实现了第一次快速的实现,并在1993年引入了分布式特性。到了1995年,随着新项目的增加,...

    Erlang6大数据存储方式总结

    Erlang,一种由Ericsson开发的面向并发的编程语言,以其在分布式系统和实时高可用性场景中的优秀性能而闻名。在Erlang中,处理大数据存储有多种方式,其中包括ETS(Erlang Term Storage)、DETS(Distributed Erlang...

    inside Erlang VM3

    它运行在Erlang虚拟机(Erlang Virtual Machine, ERTS)之上,ERTS提供了语言的基础执行环境。 #### ERTS的核心优势 - **高性能**:通过轻量级进程模型、高效的内存管理机制和优秀的并行处理能力实现了高性能。 - *...

    图书:Erlang和OTP实战

    Erlang是一种函数式编程语言,最初由爱立信公司为电话交换系统设计,因其在处理大量并发连接和实时通信方面的优秀性能而受到广泛关注。它的主要特点包括轻量级进程、消息传递模型以及热代码升级机制。这些特性使得...

    Erlang程序设计中文版

    Erlang以其强大的错误恢复能力、热代码替换以及对大规模并发的支持而闻名,是构建高可用性、容错性强的系统的一个优秀选择。 在本书中,读者将了解到Erlang的核心概念和语法特性,包括: 1. **函数式编程基础**:...

    安装Erlang所需包

    Erlang是一种强大的编程语言,尤其在分布式系统、并发处理和实时系统方面表现优秀,它广泛应用于电信、银行、Web服务器等领域。在Linux CentOS操作系统上安装Erlang,需要一些特定的依赖包来确保编译和运行的顺利...

    高性能集群服务器Erlang解决方案

    - **IO密集型任务**:Erlang优秀的并发性能可以帮助淘宝更好地处理大量并发请求。 - **网络密集型任务**:Erlang在网络处理方面表现出色,能够高效地管理大量的网络连接。 - **集群密集型任务**:Erlang支持的灵活...

    Erlang:并行计算和云计算

    Erlang是一种动态类型的函数式编程语言,由爱立信在1986年为电话交换系统设计,后来因其在处理并发、分布式和容错性上的优秀特性,逐渐在并行计算和云计算领域崭露头角。 ### 1. 并行计算 并行计算是利用多处理器...

    eclipse的erlang插件 erlide

    Eclipse是一款广受欢迎的开源集成...总之,Erlide是Eclipse中的一款优秀Erlang开发插件,它极大地提升了Erlang程序员在Eclipse中的开发体验。通过其丰富的功能和良好的兼容性,Erlide成为了Erlang开发者的得力助手。

    程序员开发erlang的资料

    在IT行业中,Erlang因其在处理大规模并发连接和容错能力上的优秀表现,被广泛应用于通信、金融以及互联网等领域。 对于Java/C程序员来说,学习Erlang可以拓宽技术栈,提高解决复杂并发问题的能力。以下是一些关键...

    erlang参考手册

    Erlang因其在处理大量并发连接和容错能力上的优秀表现,尤其在电信、银行、互联网服务等领域得到了广泛应用。 **Erlang的特点:** 1. **并行计算**:Erlang的设计使其能够轻松处理大量的并发操作,通过轻量级进程...

    erlang19.3

    3. **并发与分布式**:Erlang 的并发模型是其核心特性之一,19.3 版本可能会有更优秀的进程管理和调度优化,进一步提升了并发性能。同时,也可能包含对分布式系统通信的增强,如改进的节点间通信协议。 4. **内存...

    Erlang v21.2 Windows 64位 最新安装版(附安装教程+环境变量配置).rar

    Erlang因其在处理大量并发连接和容错能力上的优秀表现,广泛应用于电信、金融、在线游戏以及分布式系统等领域。v21.2是Erlang的一个稳定版本,提供了许多改进和修复。 在这个“Erlang v21.2 Windows 64位 最新安装...

    Pragmatic.Programming.Erlang.2nd.Edition

    《Pragmatic Programming Erlang 第二版》由Erlang之父Joe Armstrong撰写,是一本深入浅出地介绍了Erlang语言特性和编程技巧的专业书籍。本书不仅适用于初学者入门,也为经验丰富的开发者提供了新的见解和技术指导。...

    远古封神+英雄远征的ERLANG游戏服务器代码

    ERLANG是一种为并发、分布式和容错系统设计的函数式编程语言,因其在实时系统和大规模并发处理中的优秀性能而被广泛应用于游戏服务器开发。这份压缩包包含了这两款游戏的Erlang服务器源码,为深入理解游戏服务器的...

Global site tag (gtag.js) - Google Analytics