Skip to content

Commit 36dfef6

Browse files
committed
zz
1 parent 91320d2 commit 36dfef6

File tree

4 files changed

+179
-0
lines changed

4 files changed

+179
-0
lines changed

docs/talks/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
/book
2+
*.pdf

docs/talks/index.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@
22

33
- [凹语言map与Φ指令的纠葛](./ssa-bug/)
44
- [凹语言案例介绍](./wa-gallery/)
5+
- [凹语言一周学会](./wa-in-1week/)
56

docs/talks/wa-gallery/notes.pdf

-291 KB
Binary file not shown.

docs/talks/wa-in-1week/index.slide

Lines changed: 177 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,177 @@
1+
# 编程语言的构成
2+
3+
一周学会凹语言
4+
5+
柴树杉
6+
31 Jan 2025
7+
https://wa-lang.org
8+
9+
## 常量(const)
10+
11+
- 数值
12+
- 整数:-1, 0, 100
13+
- 实数 (浮点数):1.2, 2.3e-6, -1.2e3
14+
- 复数:2+5i, 1.2i
15+
- 布尔
16+
- true, false
17+
- 文本 (字符串)
18+
- "Hello", "你好", "123", "-1.2e3", "true"
19+
20+
## 运算(operator)
21+
22+
- 数值运算 (整数/浮点数/复数):+ - * / %
23+
- 1 + 2, 10 % 3, 32.5 / 3
24+
- 文本运算 (字符串):+(连接)
25+
- "-1" + "23"
26+
- 比较运算 (数值/文本):> >= < <= == !=
27+
- 数值比较 (值大小):1 > 2, 32 >= 0, 100 != 1e2
28+
- 文本比较 (字典顺序):"Hello" > "-123"
29+
- 布尔运算 (布尔):|| && !
30+
- false || true, 32 >= 0 && !false
31+
- 位运算 (整数):| & ^(异或/取反)
32+
- 3 | 51, ^32, `32 ^ 0`
33+
34+
## 函数(func)
35+
36+
- `main` 是入口函数,其他函数 `sin(-1.2)`, `pow(2, 3)`
37+
- 运算即函数
38+
- 1 + 2 等价于 add(1, 2)
39+
- 32 >= 0 等价于 greatThan(32, 0)
40+
- !false 等价于 not(false)
41+
- true && false 等价于 and(true, false)
42+
- 运算优先级
43+
- 32 >= 0 && !false 等价于 `and(greatThan(32, 0), not(false))`
44+
- 不同语言运算有细微差异
45+
- 求余运算:大部分语言有求余运算 10%3,少量语言用 `mod(10, 3)`
46+
- 指数运算:有些语言用 `2 ** 3` 或 `2 ^ 3`,大部分语言用 `pow(2, 3)`
47+
48+
## 包 (package)
49+
50+
- 可以简单看作函数集合
51+
52+
```
53+
import "math"
54+
55+
func main {
56+
println(math.Sin(math.Pi/3))
57+
}
58+
```
59+
60+
## 变量
61+
62+
- 常量:不可修改的值 `const x = 123`
63+
- 全局变量:可以修改的值 `global x = 123`
64+
- 局部变量:可以修改的值 `x := 123`
65+
- `x := 123` (第一次定义并设置局部变量的值)
66+
- `x = 10` (后续再改)
67+
- `x += 10` (边算边改)
68+
- 即 `x = x + 10`
69+
- 语言差异
70+
- 有些语言第一次和后续修改都用 `=`
71+
- 变量和数学中的未知数 (值未知但不可修改) 并不是一个概念(数学中并不存在变量)
72+
73+
## 流程控制(control)
74+
75+
- 条件 (if/else, switch/case)
76+
- `if cond { ... }`
77+
- `if cond { ... } else { ... }`
78+
- `switch expr { case v1: ...; case v2: ...; default: ... }`
79+
- 循环 (for)
80+
- 条件循环 `for cond { ... }`,死循环 `for { ... }`
81+
- 结束循环 (break)
82+
- 语言差异
83+
- 大部分语言条件需要加 (),例如: `if (cond) { ... }`
84+
- 循环不同语言差异较大,有些语言是 until cond { ... },和while 条件相反
85+
- 等价于:`while !cond { ... }`
86+
87+
## 求 1+2+...+100
88+
89+
```
90+
func main {
91+
sum := 0
92+
for i := 0; i <= 100; i += 1 {
93+
sum += i
94+
}
95+
println(sum)
96+
}
97+
```
98+
99+
## 自定义函数(UDF)
100+
101+
```
102+
func main {
103+
println(gauss(100))
104+
}
105+
106+
func gauss(n: int) => int {
107+
sum := 0
108+
for i := 0; i <= n; i += 1 {
109+
sum += i
110+
}
111+
return sum
112+
}
113+
```
114+
115+
## 类型(type)
116+
117+
- 数值
118+
- 整数:int, uint
119+
- 实数 (浮点数):float32, float64,缩写为 f32, f64
120+
- 复数:complex64, complex128
121+
- 布尔
122+
- bool
123+
- 文本 (字符串)
124+
- string
125+
126+
## 闭包(closure)
127+
128+
- 闭包:没有名字 (且省略类型) 的函数
129+
- 无参数闭包 `func { ... }`
130+
- 单参数闭包 `func(x: int) { ... }`
131+
- 多参数闭包 `func(x, y, z: int) => int { ... }`
132+
133+
## 数据结构:列表与字典
134+
135+
- 列表 `[]V`
136+
- 整数 `[]int{1, 3, 5}`, 字符串 `[]string{"Hello", "123", "abc"}`
137+
- 列表操作
138+
- 取值/子列表:`a[i]`, `a[i:j]`, `a[i:]`, `a[:j]`
139+
- 添加值:`a = append(a, v)`
140+
- 字典 `map[K]V`, 在有的语言中叫动态数组
141+
- `map[string]int{"Mon":1, "Tue":2, "Sat":6}`
142+
- 字典操作
143+
- 取值:`v = a[k]` 或 `v, ok := a[k]`
144+
- 添加值:`a[k] = v`
145+
- 删除值:`delete(a, k)`
146+
147+
## 对象和方法
148+
149+
```
150+
type Rect struct {
151+
Width, Height: f64
152+
}
153+
154+
func Rect.Area() => f64 {
155+
return this.Width * this.Height
156+
}
157+
158+
func main {
159+
rect := Rect{20, 30}
160+
println(rect.Area())
161+
}
162+
```
163+
164+
## 凹语言编程哲学
165+
166+
- 简单易用、中英文编程友好
167+
- 少儿编程启蒙、小游戏开发友好
168+
- 静态类型、编译型通用语言
169+
- 多操作系统、多硬件平台支持
170+
171+
## 参考链接
172+
173+
- [https://wa-lang.org](https://wa-lang.org)
174+
- [https://wa-lang.org/playground](https://wa-lang.org/playground)
175+
- [https://gitcode.com/wa-lang/wa](https://gitcode.com/wa-lang/wa)
176+
- [https://github.com/wa-lang/wa](https://github.com/wa-lang/wa)
177+
- [http://open.qiniu.us/composition-of-programming-languages.pdf](http://open.qiniu.us/composition-of-programming-languages.pdf) (基于该模板, 感谢)

0 commit comments

Comments
 (0)