• 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还是会快不少的。不过,也有文档资料不全的缺点。

    各有利弊吧。

    萝卜青菜,各有所爱。

  • 相关阅读:
    docker学习之network:初识网络配置
    原来:HTTP可以复用TCP连接
    git tag的用法及意义
    Android,社招,面淘宝,指南【内部人员为你保驾护航】
    别了,拼多多!再也不想砍一刀了,哔哩哔哩 (゜-゜)つロ 干杯~
    【Android面试宝典】2021年,腾讯等大厂Android高级开发面试完全攻略!
    腾讯40岁老兵现身说法:35岁职业生涯分水岭,架构or管理,到底怎么选?
    【整理合集】Flutter 常用第三方库、插件、学习资料等
    [PAT]1011 World Cup Betting (20 分)Java
    [PAT] 1010 Radix (25 分)Java
  • 原文地址:https://www.cnblogs.com/coddingfun/p/3766689.html
Copyright © 2020-2023  润新知