- 浏览: 184341 次
最新评论
-
lord_is_layuping:
...
弄了弄scala -
yuqilin001:
// Close the connection if the ...
人生就是不断的转圈子——一个最简单的jboss netty chat测试程序 -
jila:
我当然知道,这是海子的诗,而且,那个女的是用地方话念的,别有味 ...
面朝大海,春暖花开 -
fitliving:
请问您如何让 netty 不用 ChannelBuffer这数 ...
人生就是不断的转圈子——一个最简单的jboss netty chat测试程序 -
mryufeng:
Erlang语言成分在整个otp平台20%的分量都不到 所以他 ...
erlang的优秀之处
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都可以加。
它的优秀之处在哪,能否举个它做的很好,别的语言实现起来不太方便的例子
我也想问这个,毕竟语言是拿到做事的,要是纯漂亮,啥用也没有
它的优秀之处在哪,能否举个它做的很好,别的语言实现起来不太方便的例子
haskell太难了!
它很好用吗,你觉得python怎么样
对于高手来说,什么语言并不是问题。
遗憾的是,我不是高手。
erlang我只是从概念分析上觉得很喜欢,我的程度还远远不够。
python我确实也用过,我觉得它太乱了,什么都有,什么都行。
这样的话,它是行了,我就不行,我迷糊了。
它很好用吗,你觉得python怎么样
目前尝试erlang IDE解决
头像不错
目前尝试erlang IDE解决
现在,我大略的总结一下。
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>
<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的高并发方面比较熟悉的高手?希望能够多交流:)
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>
<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
支持一下加油
发表评论
-
erlang's list
2010-12-20 14:30 2645在看《programming erlang》 ... -
my linux
2009-12-30 15:19 669最近,信心大涨。 linux的内存管理,我终于理的差不多了。 ... -
5k之后
2009-10-19 11:44 687这个周末,我打上了5k。 事实上这好像并不是什么难事,下着下着 ... -
lib_chan 简化版
2009-10-15 15:27 1521我觉得那个lib_chan太烦,用法我也觉得不那么清晰,反正我 ... -
昨天五局的总结
2009-09-17 09:27 714昨天,我下了五局。三胜两败。 败的都是好局。 我发现,我现在的 ... -
java scala vs erlang c
2009-09-01 16:32 2477说来惭愧,自己一向不成才,语言研究过很多,可是,到现在也没有一 ... -
弄了弄scala
2009-08-27 15:46 2032如果把裸体看作计算机 ... -
新的疑惑
2009-08-21 09:36 825我做Orange的时候发现我 ... -
开始懂了
2009-08-03 15:38 599在某个不经意的时候。 我把,linux,windows,com ... -
我对lib_chan的注释
2009-07-05 11:50 2334在《programming erlang》中,lib_chan ... -
ruby's block and closure
2009-05-31 11:35 964端午放假的这几天,由于无聊,我又看了看ruby。 但是还是没有 ... -
不过尔尔
2009-03-31 15:03 680公式解释器(电子表格)实现的差不多了。 原来也不过如此而已。 ... -
关于程序语言
2009-03-19 10:39 684刚才,看一些d语言的资料,看到一个词“语言纯粹主义者”。 这很 ... -
慢慢的知道
2009-03-16 10:37 818今天我醒的太早,于是 ... -
最近有点迷惑
2009-03-12 14:48 768最近,有点迷惑,也有 ... -
遇到障碍
2009-02-17 11:28 785最近,遇到点麻烦,应该说那是相当的麻烦! 这种解析器实在是不容 ... -
有点不会了
2009-02-10 10:39 624我发现,我现在做的东西是我到现在为止做的最难的东西。 我确实有 ... -
plt scheme实现的围棋程序初步
2008-12-01 16:15 1644我用scheme实现了一个weiqi程序的基本框架,事实上我的 ... -
睡觉过多
2008-11-12 15:38 830这两天,睡觉过多—— ... -
scons visual studio 9 vista
2008-10-28 13:17 1957今天,我想把我的scons迁移到vista机上。发现,scon ...
相关推荐
erlang作为一个小众语言,在分布式存储表现优秀,框架开源,为一些小型公司使用,也有中型公司使用,后端开发也有一席之地
基于优秀书籍 Erlang 和 OTP in Action 第 12 章中的 NIF 示例的简单 json 编码和解码。 这个实现的目的是在不丢失任何语义的情况下尽可能简洁地用 Erlang 术语表示 JSON。
开源、性能优秀、稳定性较高 与SpringAMQP完美的整合、API丰富 集群模式丰富、表达式配置、HA模式、镜像队列模式 保证数据不丢失的情况下,做到高可用 AMQP全称:Advanced Message Queuing Protocol AMQP翻译:高级...
Rust语言基于多年来在Akka和Erlang中Actor模型实现中获得的许多经验教训。 但是,Axiom并不是上述两个参与者模型中任何一个的直接重新实现,而是一种新的实现,其从这些项目的优秀部分中获得了灵感。 2019-12-19 ...
netlogo是优秀的多主体仿真平台。netlogo自带的编辑工具功能有限,且对中文的支持有限。我在netlogo下编程,主程序不得不用自带编辑器,其他程序段另建文件保存,在主程序中引用。这样可以用editplus进行编辑。为...
SublimeText2支持但不限于 C, C++, C#, CSS, D, Erlang, HTML, Groovy, Haskell, HTML, Java, JavaScript, LaTeX, Lisp, Lua, Markdown, Matlab, OCaml, Perl, PHP, Python, R, Ruby, SQL, TCL, Textile and XML 等...
ST2 拥有优秀的代码自动完成功能 (自动补齐括号,大括号等配对符号;自动补全已经出现的单词;自动补全函数名),非常智能;另外 ST2 也拥有代码片段(Snippet)的功能,可以将常用的代码片段保存起来,在需要时随时...
SublimeText支持但不限于 C, C++, C#, CSS, D, Erlang, HTML, Groovy, Haskell, HTML, Java, JavaScript, LaTeX, Lisp, Lua, Markdown, Matlab, OCaml, Perl, PHP, Python, R, Ruby, SQL, TCL, Textile and XML 等...
SublimeText支持但不限于 C, C++, C#, CSS, D, Erlang, HTML, Groovy, Haskell, HTML, Java, JavaScript, LaTeX, Lisp, Lua, Markdown, Matlab, OCaml, Perl, PHP, Python, R, Ruby, SQL, TCL, Textile and XML 等...
SublimeText2支持但不限于 C, C++, C#, CSS, D, Erlang, HTML, Groovy, Haskell, HTML, Java, JavaScript, LaTeX, Lisp, Lua, Markdown, Matlab, OCaml, Perl, PHP, Python, R, Ruby, SQL, TCL, Textile and XML 等...
SublimeText2支持但不限于 C, C++, C#, CSS, D, Erlang, HTML, Groovy, Haskell, HTML, Java, JavaScript, LaTeX, Lisp, Lua, Markdown, Matlab, OCaml, Perl, PHP, Python, R, Ruby, SQL, TCL, Textile and XML 等...
ST2 拥有优秀的代码自动完成功能 (自动补齐括号,大括号等配对符号;自动补全已经出现的单词;自动补全函数名),非常智能;另外 ST2 也拥有代码片段(Snippet)的功能,可以将常用的代码片段保存起来,在需要时随时...
ST2 拥有优秀的代码自动完成功能 (自动补齐括号,大括号等配对符号;自动补全已经出现的单词;自动补全函数名),非常智能;另外 ST2 也拥有代码片段(Snippet)的功能,可以将常用的代码片段保存起来,在需要时随时...
ST2 拥有优秀的代码自动完成功能 (自动补齐括号,大括号等配对符号;自动补全已经出现的单词;自动补全函数名),非常智能;另外 ST2 也拥有代码片段(Snippet)的功能,可以将常用的代码片段保存起来,在需要时随时...
RabbitMQ是一个由erlang开发的基于AMQP(Advanced Message Queue)协议的开源实现。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面都非常的优秀。是当前最主流的消息中间件之一。
SMQTTX是基于SMQTT的一次重大技术升级,基于Java开发的分布式MQTT集群,是一款高性能,高吞吐量,并且可以完成二次开发的优秀的开源MQTT broker,主要采用技术栈:reactor3、reacotr-netty、netty、ignite等开源软件...
它不是优秀的 Erlang 客户端的包装器,它是在 Elixir 中使用 (它本身是 Erlang 的gen_tcp的包装器)从头开始实现的,用于 TCP/IP 通信。 这个项目可能还没有准备好投入生产,但我非常感谢任何反馈和错误报告。 ...
在易用性,扩展性,高可用性上表现优秀。使用消息中间件利于应用之间的解耦,生产者(客户端)无需知道消费者(服务端)的存在。而且两端可以使用不同的语言编写,大大提供了灵活性。 中文文档 安装 # 安装配置...
开源,性能优秀,稳定性较高 与SpringAMQP完美的整合,API丰富 具有丰富的模式,表达式配置,HA模式,纳入规模模式 保证数据不丢失的情况下,做到高可用 AMQP全称:高级消息队列协议 AMQP翻译:高级消息子系统协议 ...
SublimeText2支持但不限于 C, C++, C#, CSS, D, Erlang, HTML, Groovy, Haskell, HTML, Java, JavaScript, LaTeX, Lisp, Lua, Markdown, Matlab, OCaml, Perl, PHP, Python, R, Ruby, SQL, TCL, Textile and XML 等...