算法星河

乘上探索计算机科学的宇宙飞船,向着星河,立刻出发!

关于

这是凌雪蓝冰的计算机科学博客!

关于我

15 岁的计算机科学爱好者,笔名凌雪蓝冰(CleanIce)。

喜爱的领域

操作系统、编译原理、算法与数据结构、互联网等。

喜爱的编程语言

按排名排序。

  1. Rust
  2. Python
  3. C# & Java
  4. C++
  5. 其他

开发的项目

RustLoxinas

代码仓库地址:https://github.com/CleanIce-BlueSnowy/RustLoxinas

一个使用 Rust 编写的编程语言,主要用于自己练习编译原理。它使用字节码作为中间代码,并提供 Loxinas 虚拟机进行代码的执行。

其名字 Loxinas 来源:我最初跟随《Crafting Interpreters》学习编译原理,其中有一个书本配套的用于教育的编程语言 Lox,这是我对自己设计编程语言的起点。“in”后缀就是英语的“里面;在于”;而“as”是一个世界语(Esperanto)后缀,表示动词的现在时。整个的意思是:发展中的 Lox 语言。

目前此编程语言处于过程式编程语言的阶段,没有提供面向对象或面向函数的支持。函数不是一等公民,甚至函数的标识符与变量的标识符使用不同形式的实现方式(即你可以令一个变量和一个函数同名)。

该项目已停止更新,原因如下:

  1. 项目存在较大设计问题,重构成本太大。
  2. 该项目仅仅是作为自己练习并总结经验的玩具语言,本就没有期待有多少实用价值。
  3. 目前重点偏向于算法的学习和编译原理的复习,没有其余精力继续开发。

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 修改了部分代码的格式与细节。