欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

erlang的优秀之处 博客分类: tech ErlangHaskellPythonCouchDB设计模式 

程序员文章站 2024-03-23 18:50:52
...
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都可以加。