一些岁月史书
整个项目至今已经经过了两年的迭代,而这一切的一切源于两件事。我在十年级时在是接触的 Python,当时只是跟着网上的课程学习,但课程的作者特别喜欢讲解相对底层的概念,导致我对此过于感兴趣,甚至在很长一段时间里忽略了编程语言本身的意义,种子在那时便已经埋下。高中后两年的生活相对独来独往,大部分感性生活是依靠原神和崩坏三这两个游戏支持,而后者塑造的爱莉希雅则是最浓墨重彩的一笔,这便是第二颗种子。
回想高中毕业的那个暑假里,靠着对 Python 的理解再配合上后缀式作为核心,用 C 搓出了第一版 Felys,因为完全没有听说过 AST 这个东西,为了达成控制流只能强行解析控制语句的跳行关系,然后由运行时执行跳行,现在来看简直就是在模拟汇编。后来才学习到了如何手写一个解析器,并且改用 Rust 重写了整个项目,轻而易举的实现了以前不敢想的功能,甚至当时还支持了纯中文的编程,不过维护太麻烦砍掉了。
事实上在那个时间点,这个项目已经摸到了非学术水准的极限了,再想进一步必然需要引入更专业的知识,所以我从最了解的编程语言 Python 下手,吃透了 PEG 解析器以及代码生成的概念,并且自己实现了一版解析器生成器,又因为 PEG 不适合处理分词的任务,我额外阅读并且实现了龙书里关于正则机相关的内容。至此语言的前端已经让我满足,但是后端目前只能依赖递归运行,运行速度慢还占内存,这也是这个项目未来的迭代方向。除此之外,由于实习的原因,接触到了很多机器学习的知识,并且发现自动求导和动态计算图构建这两个功能非常适合嵌入进编程语言中,因此 Felys 现在便内置了神经网络的支持。
最后一言蔽之:为了一碟醋,包了盘饺子。