Erlang程序设计(第2版)读书笔记(一)
正如《代码的未来》中所说,为了充分利用多核,并发变成将成为未来发展的趋势,对于并发编程的支持,Erlang确实是不二之选,Erlang在国内仍然较为小众,经典书籍相对也要少很多,最终选择了《Erlang程序设计 第2版》作为了我的第一本Erlang入门书籍。
Erlang官方网站:http://www.erlang.org/
Erlang安装:
对于Ubuntu和Debian发行版可采用:apt-get install erlang 来安装;
对于其他 UNIX 和 Linux 平台,可以下载源代码并手工构建它,具体如下所示:
Download:http://www.erlang.org/download.html
1. 解压源代码:$ tar zxf otp_src_17.3.tar.gz
2. $ cd opt_src_17.3
3. $ ./configure
4. $ make
5. $ make install
Erlang是函数式编程语言,被设计主要用来解决自下而上的编写并发式、分布式、容错、可扩展和软实时系统等问题。
由于之前没有接触过函数式编程,还是从简单的顺序编程一步步来吧。
Erlang进入shell编程环境很简单,与Python类似,在终端直接输入erl即可,退出可使用 Ctrl+c 再输入 a 的方法,但这样可能导致某些数据的破坏,最好使用 q().
注释:%
变量:所有变量名都必须以大写字母开头,变量一经赋值,不许改变,
模式匹配操作:
Lhs = Rhs 意思是计算右侧的值,然后将结果与左侧的模式相匹配;
X = Expression,如果X之前没有被赋值,一定会匹配成功,X = AnotherExpression,则只有在Expression = AnotherExpression时才匹配成功,否则匹配失败;
浮点数:
使用“/”给两个整数做除法时,结果会自动转换为浮点数;
要从除法里获得整数,必须使用div和rem;例如:5 div 3. 结果为1,5 rem 3. 结果为2;
原子:
原子被用于表示常量值,具有全局性,原子以小写字母开头,后接一串字母,数字,下划线或@符号;
原子可以放在单引号中,可以创建以大写字母开头或包含字母数字以外字符的原子,如:‘Monday’,‘+’,‘a test paper’等,原子的值就是它本身;
元组:
为了方便理解,元组最好加上标签,例如:{point, 10, 45}.
创建元组:F = {firstName, joe}. L = {lastName, Tom}. P = {person, F, L}.
提取firstName:{_, {_, Who}, {_, _}} = P.
列表:
列表中的各元素可以是任何类型,[H|T]中H为列表头,T为列表尾,例如:
L = [{name, tom}, 1, 2.0, test, {point, 10, 23}].
[H|T] = L.
则,H = {name, tom}, T = [1, 2.0, test, {point, 10, 23}].
字符串:
字符串字面量就是用双引号围起来的一串字符,例如:
N = "Hello". "Hello"其实只是一个列表的简写,这个列表包含了代表字符串里各个字符的整数字符代码。
X = [97, 98, 99] .
打印出"abc".
io:format("~w~n", ["abc"]).
打印出[97, 98, 99]
[H|T] = "cat". H = 99, T = "at".
f()让shell忘记现有的任何绑定。
Erlang程序设计(第2版)读书笔记(一)的更多相关文章
- JavaScript高级程序设计第三版-读书笔记(1-3章)
这是我第一次用markdown,也是我第一次在网上记录我自己的学习过程. 第一章 JavaScript主要由以下三个不同的部分构成 ECMAScript 提供核心语言功能 DOM 提供访问 ...
- Linux设备驱动程序 第三版 读书笔记(一)
Linux设备驱动程序 第三版 读书笔记(一) Bob Zhang 2017.08.25 编写基本的Hello World模块 #include <linux/init.h> #inclu ...
- 《Erlang程序设计(第2版)》
<Erlang程序设计(第2版)> 基本信息 作者: (瑞典)Joe Armstrong 译者: 牛化成 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:9787115354 ...
- Primer C++第五版 读书笔记(一)
Primer C++第五版 读书笔记(一) (如有侵权请通知本人,将第一时间删文) 1.1-2.2 章节 关于C++变量初始化: 初始化不是赋值,初始化的含义是创建变量时赋予其一个初始值,而赋值的含义 ...
- 单元测试之道Java版——读书笔记
单元测试知道Java版读书笔记 首先我们必须要知道我们所写的代码,它的功能是什么,如果我们不了解代码的行为,那么也就无从测试. 我们测试的目的,是为了我们整个程序架构的稳定,代码其实就是欧文要实现功能 ...
- <NET CLR via c# 第4版> 读书笔记--目录
<NET CLR via c# 第4版>个别章节虽读过多次,但始终没有完整读过这本书.即使看过的那些,时间一长,也忘记了大部分.趁着最近不忙,想把这本书好好读一遍,顺便记下笔记,方便随时查 ...
- DOM Scripting -- Web Design with JavaScript and the Document Object Model 第2版 读书笔记
1. childNodes nodeValue <p id="p1">hello p!</p> alert(document.getElementById ...
- javaScript高程第三版读书笔记
看完<dom编程艺术>现在准备读进阶版的js高程了,由于篇幅较长,所以利用刚看完<dom编程艺术>学到的知识写了段JavaScript代码,来折叠各章的内容.并且应用到了< ...
- 《ECMAScript标准入门》第二版读书笔记
title: <ECMAScript标准入门>第二版 date: 2017-04-10 tags: JavaScript categories: Reading-note 2015年6月, ...
- 《Redis入门指南》第2版 读书笔记
读第二遍了,感觉和几年前读时的收获不一样了.送上门来当树洞的独自承担一切 Redis以简洁为美Redis通信协议是Redis客户端与Redis之间交流的语言,通信协议规定了命令和返回值的格式.Redi ...
随机推荐
- linux下gsoap的初次使用 -- c风格加法实例
摘自: http://blog.csdn.net/jinpw/article/details/3346844 https://www.cnblogs.com/dkblog/archive/2011/0 ...
- 2-7 Flutter开发工具使用指南
这里选择用哪个模拟器运行 Mac系统下可以通过这个Open IOS Siumlator打开IOS模拟器 debug用来调试的 可以创建新的模拟器 选择安卓模拟器的版本 这是sdk的配置 点开就是打开了 ...
- HDU - 1546 ZOJ - 2750 Idiomatic Phrases Game 成语接龙SPFA+map
Idiomatic Phrases Game Tom is playing a game called Idiomatic Phrases Game. An idiom consists of sev ...
- centos7及以上安装git服务
检查git是否安装或者是版本 whereis git等命令来检查是否已经安装了git版本的 git --version检测到我的环境自带的git版本 已安装但不是想要的版本需要卸载 yum remov ...
- Python序列化模块pickle和json使用和区别
这是用于序列化的两个模块: • json: 用于字符串和python数据类型间进行转换 • pickle: 用于python特有的类型和python的数据类型间进行转换 Json模块提供了四个功能:d ...
- abap table control里面各种属性和事件的写法
SAP中,Table Control是在Screen中用的最广泛的控件之一了,可以实现对多行数据的编辑. 简单来说,Table Control是一组屏幕元素在Screen上的重复出现,这就是它与普通屏 ...
- Java反射机制调用对象的方法 —— 将一个对象的属性值赋值给另一个对象的属性
模拟一个场景: 众所周知,EasyExcel导出Excel文档是依赖于注解完成的,在实体类需要导出的属性上面加上注解,导出的时候会自动识别该属性. 假如我们现在需要导出用户的信息,又不想污染原本的实体 ...
- jquery jtemplates.js模板渲染引擎的详细用法第二篇
jquery jtemplates.js模板渲染引擎的详细用法第二篇 关于jtemplates.js的用法在第一篇中已经讲过了,这里就直接上代码,不同之处是绑定模板的方式,这里讲模板的数据专门写一个t ...
- 用jQuery开发插件详解
jQuery插件的开发包括两种: 一种是类级别的插件开发,即给jQuery添加新的全局函数,相当于给jQuery类本身添加方法.jQuery的全局函数就是属于jQuery命名空间的函数,另一种是对象级 ...
- 1.检索数据 ---SQL
相关提示: 结束SQL语句 多条SQL语句必须以分号(:)分隔.多数DBMS不需要在单条SQL语句后加分号,但也有DBMS可能必须在单条SQL语句后加上分号.当然,如果愿意可以总是加上分号.事实上,即 ...