主要观点:在软件世界中,作为某事物的替代实现项目是一个失败的提议,因为会受制于标准实现的变化,难以超越。如 PyPy、LuaJIT 等项目虽性能提升但使用有限,Ruby 领域的 TruffleRuby 也面临类似情况。而将项目直接构建在标准实现内部(如 YJIT 构建在 CRuby 中)可实现 100%兼容并取得成功。同时,像 Crystal 这类类似但不兼容的语言虽有一定成功但也存在问题,不应刻意模仿现有语言。Peter Thiel 认为竞争是失败者的行为,建议年轻程序员创造自己的编程语言,按自己的节奏和方向发展,避免受其他实现的限制。
关键信息:
- 作者在学术和工业领域长期致力于优化动态类型编程语言,包括 MATLAB、JavaScript 和 Ruby 的 JIT 编译器。
- PyPy 因 Python 版本更新快而难以跟上,导致在实际中使用较少;LuaJIT 也因 Lua 不断添加新功能而落后,采用率不高;TruffleRuby 虽性能较好但因 CRuby 不断添加功能而难以保持领先。
- YJIT 选择直接构建在 CRuby 内部,实现了 100%兼容,成为“官方”Ruby JIT 并取得成功。
- Crystal 类似 Ruby 但不兼容,营销自己类似 Ruby 反而导致问题,应做自己的东西。
重要细节:
- 作者提到阅读了众多关于其他动态语言 JIT 编译器的论文和博客文章,并与相关项目的开发者交流。
- 阐述了在传统解释型语言的 JIT 实现中,解释器实现新功能更快,导致替代实现面临追赶的困境。
- 强调在有标准规范的情况下(如 JSON 解析器)和有外部标准机构管理的 JavaScript 实现情况下,情况不同。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。