总篇:1
编辑于 2025/4/28 20:40
截稿于 2025/4/28 22:20
简介
从本篇开始,记录本人学习Erlang编程语言的历程,以Java视角转向Erlang视角。
Erlang关键词: 编程语言,变量不变,函数式编程,面向对象,高并发。
书籍资料:
Erlang程序设计(第1版).pdf
安装
和其他编程语言一样,需要下载安装,不赘述,官网:
Index - Erlang/OTP
安装后,设置环境变量path新增:
hello word
配置完环境变量后,打开CMD,像Java、Python那样输入语言命令进入环境。输入erl,打印熟悉的 hello word:
除了多两个点,就没反应了。填一个; :
还是没反应,回车,试试sout:
还是没反应。这是因为erlang不以;为结束符号,而是英文的 . :
有反馈了,但是是 syntax error:
因为这是Java的语法,erlang有自己的语法,正确打印hello word:
不需要 print函数,写什么打印什么。
请千万不要忘记结尾的点 .
数学运算
和其他语言一样满足四则运算规则,有符号上的不同:
①: / 除法结果总是小数
②: div:整除符号
③: rem:取余符号
性能其一,大数处理毫不畏惧:
Long看了都瑟瑟发抖。
tip:命令行的左侧从1-10在递增表示你输入了多少个完整的可执行命令(以.结尾)
变量
你可能会像这样写:
:
erlang 的变量声明类似Python,不需要声明也不能(或者说没有)声明数据类型:
报错先不管,需要先纠正的是:变量以大写字母开头****:
现在你又可能想换个名字:
这是不允许的,实际上,erlang中的变量近乎于java的const关键字,赋值后不能修改,
那为什么称作变量?,俺也不知道,书上说在被赋值前他是可变的...,好好遵守规则就行了。
想要新名字只能用新变量接收:
同名怎么办:
数据类型
Java有八大数据类型:byte、short、integer、char、boolean ....
哈,而erlang中有更特别的数据类型,下表:
名称
简介
示例
integer
整数
123 ,-123
float
浮点数
3.14, -3.14
atom
原子
a,'A',hello, 'hello'
boolean
布尔,特殊的表义原子
true,false
tuple
元组,类似Python的元组,其内每个元素可以是任意数据类型
{ok,"success",1,{error,"fail"}}
list
列表,类似Python的列表,其内每个元素可以是任意数据类型
[114,514,"依旧依旧",""]
binary
二进制,看着像IP似的,这里先不解释
<<4:8.4:8.4:8,4:8>>
record
记录,看着什么都不像嘛,这里先不解释
#person{name="Jack", age=15}
map
映射,看着像楼上,也不解释
#{name => "Jack", age => 15}
fun
函数,没错,函数也是数据类型,同样不解释
fun(X) -> X * 2 end.
PID,Port,Reference
进程Id,端口号,引用,熟悉又陌生,不管他
<0.80.0>,<0.123>,<0.0.0.123>
数字都很好懂,这里着重解释一下原子,然后就下播:
原子:任何不可分割的最小单元(原子操作听过吧),这里也是同理,我们把它看作“一个”值:
1-9行中哪些是原子?:答案是除了3、6行其余都是。至于为什么这两个不是,我们下回分解。
退出
如何优雅的退出shell,直接插掉弹窗?no,现在,像Linux那样按下Ctrl+C:
看不懂,总之先按下A键:
然后按下回车:
出来了,而不是暴力拆门。
总结:
作为刚入门的篇章,本文仅仅要求初学者跟着图示操作一遍看结果,其中的疑惑以后再一一解答:
为什么A,"ABc" 不是原子?
变量不变,以后怎么写程序?
我想像Java那样,写程序文件再编译执行,而不只是在shell写无记忆程序?
以上。