Skip to content

Commit c1dffe8

Browse files
committed
docs: 思考内容整理
1 parent 74d4f42 commit c1dffe8

File tree

15 files changed

+483
-11
lines changed

15 files changed

+483
-11
lines changed

demo/model.cml

Whitespace-only changes.
File renamed without changes.
File renamed without changes.

docs/design/keywords.md

+64
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
2+
3+
`let`
4+
5+
6+
7+
`use`
8+
9+
10+
11+
`module`
12+
13+
14+
15+
`export`
16+
17+
- 用于控制模块外可见性
18+
19+
`func`
20+
21+
22+
23+
`with`
24+
25+
26+
27+
`typeof`
28+
29+
30+
31+
`typeas`
32+
33+
- 用于参数泛型设计
34+
35+
```
36+
copy(src: typeas T): T {}
37+
```
38+
39+
40+
41+
42+
43+
`as`
44+
45+
- 当参数泛型推断失败时
46+
47+
```
48+
func([] as Array<Int>)
49+
```
50+
51+
52+
53+
`is`
54+
55+
56+
57+
`sync`
58+
59+
60+
61+
`wait`
62+
63+
64+

docs/design/typesys.md

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
基本类型:Int、String
2+
3+
原子类型:Set、Map、Array、Vector、Tensor
4+
5+
容器类型:Dict、List、Tuple、Params
6+
7+
组合类型:Union、Option(Nullable)
8+
9+
其他类型:Functor、Any、Void

docs/design/zen.md

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
如果你的代码非常复杂,或者对性能极为敏感,建议用更底层的方式实现

docs/keywords.md

-9
This file was deleted.

docs/milestones.md

+59
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# 里程碑
2+
3+
## L1:最小化实现
4+
5+
[0.0.0-0.1.0]
6+
7+
正确的语法语义解析
8+
9+
完整、稳定的流程
10+
11+
简易类型系统
12+
13+
简易模块系统(含命名空间模块
14+
15+
## L2:概念完备
16+
17+
[0.1.0-0.2.0]
18+
19+
类型推断与类型安全
20+
21+
论证各个核心设计的先进性:充分地学术调研
22+
23+
充分吸收ML系语言的有点
24+
25+
跑通实验并取得初步结果
26+
27+
相关思考和工作整理成期刊
28+
29+
## L3:模块完备
30+
31+
AI领域拓展初步可用(TF/plot)
32+
33+
模块缓存与加载
34+
35+
图优化遍(基础遍)
36+
37+
文档结构完备,基础内容丰富
38+
39+
测试模块
40+
41+
## L4:拓展性完备
42+
43+
AI领域拓展基本稳定(TF/plot)
44+
45+
## L5:应用级完备
46+
47+
profile模块
48+
49+
debugger模块
50+
51+
inspect模块
52+
53+
内存管理重构:GC
54+
55+
错误处理机制优化
56+
57+
完善的测试用例和自动化流程
58+
59+
自动类型推导

docs/paper/concepts.md

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
**Ad-hoc多态性(Ad-hoc Polymorphism)**是一种多态性,指的是同一个函数或操作符可以适用于不同类型,并根据具体的类型提供不同的实现。这种多态性常常通过函数重载或运算符重载来实现。
2+
3+
在编程语言中,ad-hoc多态性与其他类型的多态性(如参数多态性,也称为泛型)不同,因为它不是通过参数化类型实现的,而是通过为不同类型提供特定版本的函数或方法实现的。
4+
5+
**泛型(Generics)**是一种编程语言特性,允许开发者编写与类型无关的代码,从而实现代码的重用和类型安全。泛型使得程序可以在不指定具体数据类型的情况下进行操作,从而提高代码的灵活性和可重用性。
6+
7+
**元语言(Meta Language)**是一种以函数式编程为主的编程语言家族,它的特点是强类型和类型推断。ML的设计影响了许多后来的函数式编程语言,如OCaml、Standard ML(SML)和Haskell等。ML最初是为了实现自动定理证明器而开发的,但由于其强大的类型系统和灵活性,它在广泛的软件开发中也得到了应用。
8+
9+
> 相关概念:函数一等公民、模式匹配、不变性、代数类型(ADT)、模块系统、自动类型推导。社会共识是,FP系的类型系统才是真正强大的类型系统,其他语言像是个累赘,不如直接动态。模式匹配也是好东西。

docs/paper/framework.md

+43
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# WHY is Camel
2+
3+
讲清楚核心语言设计/出发点,明确其存在的意义以及发展的前景
4+
5+
## Python is NOT for AI
6+
7+
静态类型vs动态类型
8+
9+
命令式vs声明式
10+
11+
古老设计vs现代设计:缩进语法、并发支持
12+
13+
## ML/FP benifits a lot
14+
15+
传统的FP语言语法的设计对于众多工业界开发者和学生来说是陌生的、难以理解的
16+
17+
## Based on DAG models
18+
19+
## Customizable Runtime
20+
21+
Openness
22+
23+
交出底层控制权
24+
25+
# WHAT is Camel
26+
27+
## Language Design
28+
29+
选取经典案例展开,不要罗列概念
30+
31+
## Execution Model
32+
33+
## Extensions
34+
35+
以TFExt为案例重点讲解
36+
37+
# HOW does Camel work
38+
39+
## Core dev
40+
41+
## Experiments
42+
43+
## Case studies

docs/paper/otherlangs.md

+72
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
## Bend
2+
3+
最近有个比较离谱 [Bend 语言](https://zhida.zhihu.com/search?content_id=669579638&content_type=Answer&match_order=1&q=Bend+语言&zhida_source=entity), 就是纯函数式的, 号称**所有能够并行的一定会[并行执行](https://zhida.zhihu.com/search?content_id=669579638&content_type=Answer&match_order=1&q=并行执行&zhida_source=entity)**
4+
5+
[https://github.com/HigherOrderCO/Bendgithub.com/HigherOrderCO/Bend](https://link.zhihu.com/?target=https%3A//github.com/HigherOrderCO/Bend)
6+
7+
语法类似 Python, 但是加入了一些纯函数式的特性, 基于 HVM2([第二代高阶虚拟机](https://zhida.zhihu.com/search?content_id=669579638&content_type=Answer&match_order=1&q=第二代高阶虚拟机&zhida_source=entity), Higher-order Virtual Machine 2).
8+
9+
![img](https://picx.zhimg.com/80/v2-b3487f912cca030ace3f8b6e1c503cc1_1440w.webp?source=2c26e567)
10+
11+
可以用 AVX 或者 [CUDA](https://zhida.zhihu.com/search?content_id=669579638&content_type=Answer&match_order=1&q=CUDA&zhida_source=entity) 作为后端, 自然地在 CPU 和 GPU 上大规模并行上运行,基于核心数实现近乎线性的加速.
12+
13+
**且没有任何显式并行注释, 不需要线程, 也没有锁、互斥、原子等等过程式的糟粕。**
14+
15+
而且 Bend 并不局限于特定计算范式, 如[张量计算](https://zhida.zhihu.com/search?content_id=669579638&content_type=Answer&match_order=1&q=张量计算&zhida_source=entity)或者[多面体循环优化](https://zhida.zhihu.com/search?content_id=669579638&content_type=Answer&match_order=1&q=多面体循环优化&zhida_source=entity)这些, 用户压根不需要懂优化。
16+
17+
任何并发系统,从 Shader 到 Actor 再到 Stackless Coroutine,都可以在 Bend 上自动并行, 即便是复杂的算法也能跑的很好。
18+
19+
背后这个逆天的理论被称为 **[交互式组合子](https://zhida.zhihu.com/search?content_id=669579638&content_type=Answer&match_order=1&q=交互式组合子&zhida_source=entity) (IC, Interaction Combinators**[[1\]](https://www.zhihu.com/question/646234682/answer/3517299156?utm_campaign=shareopn&utm_medium=social&utm_psn=1849756974457171969&utm_source=wechat_session#ref_1)**)**, 该理论可以追溯到 1997 年的一篇论文.
20+
21+
而且按照这篇论文的描述, 它是一种[组合子逻辑](https://zhida.zhihu.com/search?content_id=669579638&content_type=Answer&match_order=1&q=组合子逻辑&zhida_source=entity), 也就是说这个东西可以简单地就扩展到无状态[分布式网络](https://zhida.zhihu.com/search?content_id=669579638&content_type=Answer&match_order=1&q=分布式网络&zhida_source=entity), 可以说这场革命才刚刚开始.
22+
23+
Bend offers the feel and features of expressive languages like Python and Haskell. This includes fast object allocations, full support for higher-order functions with closures, unrestricted recursion, and even continuations.
24+
Bend scales like CUDA, it runs on massively parallel hardware like GPUs, with nearly linear acceleration based on core count, and without explicit parallelism annotations: no thread creation, locks, mutexes, or atomics.
25+
Bend is powered by the [HVM2](https://github.com/higherorderco/hvm) runtime.
26+
27+
我的评论:他直接面向GPU底层做高并发,粒度非常细,并不开放底层。语法像python是想拉拢现有生态,和nodejs作比较,那我就加速nodejs。
28+
29+
## OCaml
30+
31+
OCaml,这门充满魅力的编程语言,以其独特的特性在编程世界中独树一帜。它摒弃了monads的复杂性,让编程回归本质,清晰明了。在OCaml的世界里,程序员能够直接与类型系统对话,无需通过monads的迷雾来理解程序的流程控制。这种简洁性使得代码更加直观,易于理解和维护。
32+
33+
OCaml的纯[函数式编程](https://zhida.zhihu.com/search?content_id=325419118&content_type=Answer&match_order=1&q=函数式编程&zhida_source=entity)范式,让开发者有机会深入挖掘程序的性能潜力。在不引入副作用的情况下,OCaml的编译器能够进行更加激进的优化,从而生成更加高效的机器码。这种对极致性能的追求,使得OCaml在需要高性能计算的领域,如金融、科学计算和系统编程中,展现出了其独特的价值。
34+
35+
- 函数式语言,ML系主力
36+
- 模式匹配很好用,自动类型推导底子深厚
37+
38+
39+
40+
## Python
41+
42+
43+
44+
## JS/TS
45+
46+
- 对象类型写起来很爽
47+
- 类型系统不如C++,但很够用
48+
49+
## Java
50+
51+
- 完全地面向对象,冗余臭长,适合严谨的工业界
52+
53+
## Dart
54+
55+
## Kotlin
56+
57+
## C/C++
58+
59+
- 底层语言,不必和它比表达力
60+
61+
## Golang
62+
63+
- 天然协程
64+
- 错误处理机制值得借鉴
65+
66+
## Erlang
67+
68+
69+
70+
## Rust
71+
72+
- Option设计值得借鉴

docs/paper/related.md

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
## 可变性是例外,不可变是本质。
2+
3+
[命令式编程语言](https://zhida.zhihu.com/search?content_id=618505973&content_type=Answer&match_order=1&q=命令式编程语言&zhida_source=entity)(例如 C 和 Java)涉及在执行过程中发生变化的可变状态。命令指定如何通过破坏性地改变该状态来进行计算。过程(或方法)除了产生返回值之外还可能具有更新状态的副作用。
4+
5+
可变性的幻想在于它很容易推理:机器做这个,然后做这个,等等。
6+
7+
可变性的现实是,虽然机器擅长复杂的状态操纵,但人类却不擅长理解它。其本质是可变性破坏了引用透明度:用表达式的值替换表达式而不影响计算结果的能力。
8+
9+
人们很容易相信机器操纵的是单一状态,并且机器一次只做一件事。计算机系统竭尽全力试图提供这种幻觉。但这只是:一种幻觉。实际上,存在许多状态,分布在线程、内核、处理器和联网计算机上。机器可以同时做很多事情。可变性使得分布式状态和并发执行的推理变得非常困难。
10+
11+
然而,不变性使程序员摆脱了这些担忧。它提供了构建正确的并发程序的强大方法。与大多数函数式语言一样,OCaml 主要是一种不可变语言。它确实支持具有可变状态的命令式编程。
12+
13+
迭代和递归是计算机科学入门中的基本编程结构。ocaml函数式偏爱不变性的递归。
14+
15+
其他语言对对象所做的事情可以在 ML 中使用参数多态性、联合类型和函子等功能更好地实现。
16+
17+
对象的本质是多入口的闭包,即便在大型的项目中,许多对象也都可以消除。
18+
19+
> [(80 条消息) OCaml语言有什么先进的地方? - 知乎](https://www.zhihu.com/question/427379223/answer/3236340033)

docs/script.md

-1
This file was deleted.

0 commit comments

Comments
 (0)