为何软件IT行业重视创新而不是稳定?用户为此受苦:用户体验差!
彼得-蒂尔有一句名言:"竞争是失败者的事"。
- 如果没有必要,就不要把自己置于被迫竞争的境地。
我给年轻程序员的建议是,如果你想创建自己的编程语言,那么不要试图创建 Python 的子集,或者与现有语言表面上非常接近的语言。做你自己的事情。这样,您就可以按照自己的节奏和方向发展您的系统,而不会被您的语言必须与其他实现的性能、功能集或库生态系统相匹配的期望所束缚。
这篇文章讨论了创建软件系统替代实现的挑战和动态,重点是编程语言及其即时 (JIT) 编译器。作者从优化动态类型编程语言的个人经验出发,概述了替代实现经常陷入的陷阱,并就如何避免这些陷阱提出了自己的见解。
以下是文章的要点:
- Crystal 语言:这篇文章讨论了 Crystal 语言,这是一种类似 Ruby 的语言,它选择与 Ruby 分道扬镳,并取得了有限的成功。作者指出,Crystal 与 Ruby 的相似性让用户感到困惑,因为它看起来像 Ruby,但却有很大的差异和不兼容性。
- TruffleRuby 和 YJIT:作者将高性能 Ruby JIT TruffleRuby 与直接集成到标准 Ruby 实现 CRuby 中的另一种 Ruby JIT YJIT 进行了对比。YJIT 决定在 CRuby 中开发,这使其与 CRuby 的功能保持了 100% 的兼容性,从而得到了更广泛的采用。
- PyPy 和 LuaJIT:文章以 Python 的 JIT 编译器 PyPy 和 Lua 的 JIT 编译器 LuaJIT 为例,指出这两个项目尽管在性能上有显著提高,但在应用上却遇到了困难。主要问题是这些项目难以跟上各自语言不断发展的标准,Python 的标准是 CPython,Lua 的标准是默认 Lua 解释器。
替代实现的挑战:作者指出,作为主流或典型系统的替代实现往往是一个失败的命题。这是因为替代方案总是在迎头赶上,试图在功能和性能上与典型系统相媲美。
作者认为,试图创建一个比经典实现更好的替代方案是一条艰难的道路,因为替代方案受制于经典项目设定的方向。作者建议,与其竞争,不如与规范系统集成,这样可能会更有成效。
这篇帖子提出了一个更大的问题:
- 即该行业重视创新而不是稳定,我们都因此而受苦。
不幸的是,密码学 API 别无选择,只能随着缺陷的发现和修复而不断发展。