概述
=================================
前端时间学习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还是会快不少的。不过,也有文档资料不全的缺点。
各有利弊吧。
萝卜青菜,各有所爱。