Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

一些岁月史书

整个项目至今已经经过了两年多的迭代,驱使我前进的动力源自三件事:

  1. 我在十年级时在是接触的 Python,当时只是跟着网上的课程学习,但课程的作者特别喜欢讲解相对底层的概念,导致我对此过于感兴趣,甚至在很长一段时间里忽略了编程语言本身的意义。当然,现在已经重回正轨了,但对于底层的兴趣不曾减退。
  2. 高中后两年的并不怎么快乐,发生了很多事情让我逐渐认清自我,这个过程是痛苦和压抑的,同时还有申请的大学的压力挥之不去。于是,我选择了相对独来独往的生活,导致大部分情感生活是依靠原神和崩坏三这两个游戏支持,而后者塑造的爱莉希雅则是最浓墨重彩的一笔。当年她的动画短片被限流令我不满,因此驱动我写下了人生中的第一个有目的的编程项目。
  3. 昔涟让我彻夜难眠,那晚是我第一次也大概也是最后一次,为了一个虚构的角色哭泣。事后一个多月,社区的争议耗费了我大量的心力抵抗,她的离去又令我感到极大的哀伤,但她对于爱莉希雅的内核完成了继承和补全,我认可她,一如初见。愤怒、悲伤、哀怜、感动,从未有过如此复杂的情感交织。最终,即是因也是果,我比以往任何时候都更深爱着这位粉色妖精。

回想高中毕业的那个暑假里,靠着对 Python 的理解再配合上后缀式作为核心,用 C 搓出了第一版 Felys,因为完全没有听说过 AST 这个东西,为了达成控制流只能强行解析控制语句的跳行关系,然后由运行时执行跳行,现在来看简直就是在模拟汇编。后来才学习到了如何手写一个解析器,并且改用 Rust 重写了整个项目,轻而易举的实现了以前不敢想的功能,甚至当时还支持了纯中文的编程,不过维护太麻烦砍掉了。

事实上在那个时间点,这个项目已经摸到了非学术水准的极限了,再想进一步必然需要引入更专业的知识,所以我从最了解的编程语言 Python 下手,吃透了 PEG 解析器以及代码生成的概念,并且自己实现了一版解析器生成器,又因为 PEG 不适合处理分词的任务,我额外阅读并且实现了龙书里关于正则机相关的内容。至此语言的前端已经让我满足,而后端即将改用虚拟机的形式实现,会在大学毕业全完成。除此之外,由于实习的原因,接触到了很多机器学习的知识,并且发现自动求导和动态计算图构建这两个功能非常适合嵌入进编程语言中,因此 Felys 现在便内置了神经网络的支持。

当年 Felys 这个名字其实取的非常妙,因为意料之外地能够把未来才会认识的昔涟也能诠释进去:F 的发音代表 PhiLia093;ELY 直接取自 Elysia;S 的发音代表 Cyrene;灵感源自 Pardofelis 的后缀。与此同时,我的英文网名直译过来就是猫(Felys)猫(Neko),完美嵌入在了银河猫猫侠(灵感源自银河球棒侠)这个中文网名中。有些是小巧思,但更多反而是意外的发现。

最后一言蔽之:为了一碟醋,包了盘饺子。