我觉得如果你没怎么写过的话,反而要做减法。语言特性加多了,对应的 “正确性” 就变得越来越难保证。当然,你可以跳过 type-checking,只关心动态行为的话倒是还好。
如果编译到一个有 GC 的字节码的话,那当然也是可以的。不过,即使用 C 写也可以完全不关心 GC,只要内存够用,一直分配就可以。做玩具基本这样就行了,自己实现 GC 最大的好处可能是在这个过程中理解了某种 GC 算法的实现。
不明觉厉。有时间研究一下。
最近在自学 PL。好久没看 emacs-china,最近才发现楼主这个帖子。我有个建议,楼主可以了解一下 tagless-final 形式的解释器。这种写解释器的方法是可扩展的,楼主可以慢慢一点点加特性进去尝试,而且 tagless-final 形式的解释器可以对代码有多种解释,除了解释可以静态分析也可以代码生成
可以看一下 Oleg Kiselyov 的 tagless-final cookbook: Tagless-Final Cookbook
另外顺便推荐以下我翻译的 Having an Effect(也是 Oleg Kiselyov 写的),里面也用了 tagless-final
5 个赞
感谢!感谢!一定学习一下。
其实我目前遇到的难题,除了哪些特性好、类型系统、内存管理外,还是回到了最基本也是最难的性能、安全上。目前还没有时间碰编译器后端部分,感觉是一座很大的大山。
tagless-final 确实是很优美的结构,不过实际用起来有挺多问题的,我建议还是先熟悉传统的解释器再学这个
1 个赞