Erlang01_编程基础

总篇:1

编辑于 2025/4/28 20:40

截稿于 2025/4/28 22:20

简介

从本篇开始,记录本人学习Erlang编程语言的历程,以Java视角转向Erlang视角。

Erlang关键词: 编程语言,变量不变,函数式编程,面向对象,高并发。

书籍资料:

Erlang程序设计(第1版).pdf

安装

和其他编程语言一样,需要下载安装,不赘述,官网:

Index - Erlang/OTP

安装后,设置环境变量path新增:

hello word

  1. 配置完环境变量后,打开CMD,像Java、Python那样输入语言命令进入环境。输入erl,打印熟悉的 hello word:

  1. 除了多两个点,就没反应了。填一个; :

  1. 还是没反应,回车,试试sout:

  1. 还是没反应。这是因为erlang不以;为结束符号,而是英文的 . :
  2. 有反馈了,但是是 syntax error:

  1. 因为这是Java的语法,erlang有自己的语法,正确打印hello word:

不需要 print函数,写什么打印什么。

请千万不要忘记结尾的点 .

数学运算

  1. 和其他语言一样满足四则运算规则,有符号上的不同:

①: / 除法结果总是小数

②: div:整除符号

③: rem:取余符号

  1. 性能其一,大数处理毫不畏惧:

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. 原子:任何不可分割的最小单元(原子操作听过吧),这里也是同理,我们把它看作“一个”值:

  1. 1-9行中哪些是原子?:答案是除了3、6行其余都是。至于为什么这两个不是,我们下回分解。

退出

如何优雅的退出shell,直接插掉弹窗?no,现在,像Linux那样按下Ctrl+C:

看不懂,总之先按下A键:

然后按下回车:

出来了,而不是暴力拆门。

总结:

作为刚入门的篇章,本文仅仅要求初学者跟着图示操作一遍看结果,其中的疑惑以后再一一解答:

  1. 为什么A,"ABc" 不是原子?
  2. 变量不变,以后怎么写程序?
  3. 我想像Java那样,写程序文件再编译执行,而不只是在shell写无记忆程序?

以上。

posted on 2025-04-28 22:30  依只  阅读(30)  评论(0)    收藏  举报

导航