目前还是玩具语言,仅分享喜悦。
回顾何时开始使用 Ruby,大概是大学毕业前在学校图书馆偶然看到一本叫做“Ruby 之道”的书,借了回来,但没怎么看,只记住了这是日本人写的编程语言。
一开始我还真的打算学 Python(Django)的,但 Ruby 的语法确实很吸引我,再到后来看到 DHH 的一个视频,完全成为 Rails 派的粉丝。
“优雅”成为 Ruby 的亮点,以至于 Laravel 等框架都学的有模有样。因为我在学 Rails 之前,是看着一些 PHP 视频慢慢学会编程的。
大学几乎没有怎么认真学编程,基础不够,勤奋来凑。那时候用 CSS / JS 实现一个类似“程序坞”的缩放效果就足以“满足”一整天。书是买了很多,特别是“自制”类的书,Ruby 作者出的那几本,有中文版的都囤了,偶尔没工作的时候,就拿出来看。
大概是因为这份“好奇心”才坚持写代码到现在。前段时间与朋友交流,他说他现在已经不写代码,完全交给 AI Coding;而他的一句反问:“你还在坚持古法编程吗?”让我突然觉得“前途”有些“危险”,毕竟我这么多年,钱没赚着,只有年纪在反复 +1。
之后,我想起我的“人生愿望清单”,其中一条就是“实现一门编程语言”。我这几年一直有尝试去实现它,从一开始的简单的 Lisp,到 Robert Nystrom 教程《Crafting Interpreters》,实现从 Ruby 到 Go 又回到了 Ruby,又回到了 Go,每次都在 Parser 阶段信心骤减。
此时,我又想起多年以前另一本关于“自制编程”的书,听说 CoffeeScript 就是这么来的(只是听说,未证实)。tinyrb 是这位作者实现的例子之一,于是我决定用 Racc 先跑起来。
接下来,就是搭档 Coding Agent,开始把之前的“生肉”进行“烹饪”。AI 读取我之前的 Ruby / Go 半成品(可能半成品都够不着),生成 parser.y,这也是我之前一直无法突破的阶段。花了大概 5-6 天时间,加上 2 天左右的前端页面,终于可以拿出来分享了。
为什么取名 Tao,因为我想借此尽可能地少实现一些功能,所以它还只是“玩具”阶段。