首页 > 代码库 > Erlang学习笔记(一)

Erlang学习笔记(一)

 

 概述

=================================

前端时间学习cpp,感到有些疲惫,也感到了一些困惑,久思未解。 正好放松下自己,就拿起了erlang。

erlang是一个高并发的编程语言,而且支持热部署,适合做DB server。

虽然erlang的计算能力相对于他的并发能力要逊色很多,但是erlang同时也提供了port。可以让C,C++等计算效率高的语言来完成这部分功能

 

过程

=================================

看了orally的 《Erlang编程指南》 这本书,挺不错的。 正好适合像我这样,略懂一些函数式编程,但不是非常了解的人。

从几个我会的语言上来比较吧。

erlang相对于python还是有非常大的不同的。

python更趋向于面向对象编程,而erlang是纯粹的函数式编程。 

所有的东西在erlang都可归结为表达式,这让老夫想起了高中时候的数学课。。。此处略去300字,痛苦的回忆。。。

其实学erlang的时候,更像是在学高等数学,有高阶函数。 函数求导等等。 递归代替迭代的方式,也使得erlang的代码量非常少,而且很精美。

 

相对于javascript,erlang显得优美很多。不单单是语法上,从气质上也是如此。

 

相对于C,C++。 从这2个或者相近的语言转过来学erlang的人,那可真是另一番天地了。比如java, c#等等。

相当于完全推翻了过去的编程理念。 从第一个,最简单的变量开始就推翻了。 

erlang中,变量永远都是单次赋值的。 即,在某处 声明与定义了变量 X = 1. 那么 接下来 X = 2。 X= ...。等均被视为错误的。 究其原因,四个字概括:模式匹配。

 

对,就是模式匹配。 此处 X = 1. 首先进行的是模式匹配, 发现 X 为 undefined, 则 = 被解释为 赋值操作。 然后X的值在作用域内为 1。 接下来 X = 2. 这个表示式, 首先去 做 1 == 2 的匹配。 发现1 与 2 不能匹配, 则提示 bad match。。。

没有经过一段时间的适应,C,C++等程序员对于这个还是相当难适应的。 至少本人在学习之处也是适应了许久。

 

工具

======================================

磨刀不误砍柴工

工具因人而异,本人习惯了emacs。而且专为emacs配备了机械键盘。。。此处也没有理由更换编辑器或者IDE。。。

 

感想

======================================

深入的感想不敢说,毕竟还没学到那么深。

目前仅仅是感受到了erlang高并发所带来的好处:

1. 进程开销小

2. 进程间通信方便

以及erlang代码的优美,以及热部署的方便。

除此之外,尚未感受到erlang性能上有多优秀,相对于C,C++而言。

当然,开发速度,erlang还是会快不少的。不过,也有文档资料不全的缺点。

 

各有利弊吧。

 

萝卜青菜,各有所爱。