这是凌雪蓝冰的计算机科学博客!
关于我
15 岁的计算机科学爱好者,笔名凌雪蓝冰(CleanIce)。
喜爱的领域
操作系统、编译原理、算法与数据结构、互联网等。
喜爱的编程语言
按排名排序。
- Rust
- Python
- C# & Java
- C++
- 其他
开发的项目
RustLoxinas
代码仓库地址:https://github.com/CleanIce-BlueSnowy/RustLoxinas
一个使用 Rust 编写的编程语言,主要用于自己练习编译原理。它使用字节码作为中间代码,并提供 Loxinas 虚拟机进行代码的执行。
其名字 Loxinas 来源:我最初跟随《Crafting Interpreters》学习编译原理,其中有一个书本配套的用于教育的编程语言 Lox,这是我对自己设计编程语言的起点。“in”后缀就是英语的“里面;在于”;而“as”是一个世界语(Esperanto)后缀,表示动词的现在时。整个的意思是:发展中的 Lox 语言。
目前此编程语言处于过程式编程语言的阶段,没有提供面向对象或面向函数的支持。函数不是一等公民,甚至函数的标识符与变量的标识符使用不同形式的实现方式(即你可以令一个变量和一个函数同名)。
该项目已停止更新,原因如下:
- 项目存在较大设计问题,重构成本太大。
- 该项目仅仅是作为自己练习并总结经验的玩具语言,本就没有期待有多少实用价值。
- 目前重点偏向于算法的学习和编译原理的复习,没有其余精力继续开发。
RustIranta
代码仓库地址:https://github.com/CleanIce-BlueSnowy/RustIranta
在停止对 RustLoxinas 的更新之后,我开始设计一个新的编程语言——Iranta。这个编程语言依旧使用 Rust 进行开发,但只提供了前端。这个编译器使用 LLVM IR 作为后端,前端只负责将源代码翻译为 LLVM IR 代码。
其名字 Iranta 来源:这就是一个世界语(Esperanto)单词,与英语“going”的意思类似,是“正在前行”的意思。这表达了我对于这个语言不断发展的期望。
此语言还处于起步阶段,未来可能要设计成一个和 Rust 类似的所有权系统语言(为此我还在学习 Rust 的编译器),但不再基于表达式的语法,而是让其回归语句。此语言会优化很多在 Rust 中影响可读性和美观的设计。
该项目在有时间时可能进行部分更新。但是目前在重新学习编译原理,所以暂停了更新。
RustIrantaSTD
代码仓库地址:https://github.com/CleanIce-BlueSnowy/RustIrantaSTD
顾名思义,这是 RustIranta 项目的标准库。我没有直接使用 C 标准库作为我的语言的标准库,而是用 Rust 手写并编译为静态链接库,让 LLVM IR 后端编译器将 IR 代码与此标准库链接。
目前仅支持部分基础类型的打印。
Learn-JavaLox
代码仓库地址:https://github.com/CleanIce-BlueSnowy/Learn-JavaLox
这个的来源是《Crafting Interpreters》一书中的 Lox 语言解释器的 Java 实现,书本中称之为 jlox。本项目和 jlox 没有很大的区别,但是增添了一些扩展内容(如书本中的 CHALLENGE 部分和我自己的构思),并使用现代 Java 修改了部分代码的格式与细节。