Ruby 3 将于圣诞节发布,松本行弘分享编程语言的困境

2020年09月06日

Ruby 编程语言的创建者和首席设计师 Yukihiro Matsumoto(松本行弘)近期在某演讲中分享了 Ruby 3 的一些情况。

原本 Ruby 3 计划在东京奥运会前夜发布,但奥运会被推迟到 2021 年,所以一些核心开发者想知道 Ruby 3 是否也会顺理成章地推迟一年发布。讨论后最终还是决定今年发布,并且现在定于 12 月 25 日。

“我们决定今年发布 Ruby 3,因为作为开源社区,我们必须前进。我们必须继续前进,开源社区通常不能停止发展,否则就是等死……”松本表示,过去四五年一直在谈论 Ruby 3 的未来,但是一直也没见发布,不过今年是真的会在 12 月 25 日圣诞节推出 Ruby 3。在圣诞节发布 Ruby 升级是社区的一项传统。

接着松本分享了所有编程语言面临的困境:升级与不升级的矛盾。在应用运行稳定的基础上,如果大改语言,那么就会带来艰难升级的危险,Python、PHP 与 ECMAScript 都是很好的例子,它们的社区花了许多年才能接受这些变化。“使用 Python 3,社区花了十多年的时间;PHP 6 甚至被取消了,直接从 PHP 5 开始创建 PHP7;EMCAScript 4 也被取消了。”

松本解释说,如果不做出改变,人们可能会离开社区,而如果升级到更高版本则会带来太多痛苦,他们也可能会离开社区。这种进退两难的情况可能是每个编程语言面临的困境,不过松本觉得这种时候更应该向前:“因此,正如我所说,设计一种语言很困难,但是无论如何我们都必须向前迈进,以创造未来。”

同时,在这种情况下,保持兼容性是很重要的。松本为 Ruby 3 明确了三个具体的目标:快速、并发与准确。“使 Ruby 更快,并使 Ruby 程序员更高效”。

为了使 Ruby 更快,开发团队将从改进其即时编译器(JIT)着手;为了实现并发,将避免使用其它语言的解决方案,诸如 ECSMAScript 7 添加了带有关键字 async 和 await 的控制机制,Ruby 3 会改为实现其期待已久的异步 i/o fiber,作为控制异步线程的更好的方法。fiber 之间的上下文切换速度很快,因此性能会更高。

让 Ruby 更加准确的方法是优化早期错误检查,主要靠类型分析器实现,它将生成 Ruby 签名,Ruby 3 将为其核心库提供类型签名,可用于类型检查以及增强将来的 IDE。

松本还介绍了 Ruby 3 将带来的三个新语法特性。第一个是便捷的模式匹配语法:

第二个新特性允许将值分配给等号右侧的变量,“这在某些情况下非常方便。”

第三个新特性是为块参数编号:

不过松本也解释,Ruby 3 语法上不会有太大变化,稳定性很重要,他们将专注于改进 Ruby 的现有支持工具,例如用于语言服务器协议的 Solargraph、用于静态类型检查的 Sorbet,以及 Rubocop 的代码 linter。

最后松本提及目前他正在考虑的“较小的 Ruby”这一疯狂的想法,“我正在考虑使用较小的 Ruby 子集,该子集更简单并且更严格,并希望更快或更容易进行优化。”这一子集是向下兼容的,也就是说,它可以运行在所有当前版本的 Ruby 中。

本文消息与图片来自 thenewstack,具体内容可以查看原文与演讲视频。

展开阅读全文
4 收藏
分享
加载中
精彩评论
开源中国这个展开阅读是个sb设计的吧?
2020-09-16 11:14
28
举报
我倒是认为Ruby可以大刀阔斧的改进一些历史遗留问题,没必要一直兼容历史版本,推出一个更优化的设计,也是为了以后更好的发展,java9的模块化,ES6,Python3,PHP7,.net core的跨平台,几乎都是不兼容的断崖式升级,但事实证明虽然当时可能升级困难,但老项目基本还用老版本,新项目直接开新版本了,并不会造成太大的问题
2020-09-06 09:25
13
举报
Python3的升级感觉就是升级了一半,把Python2的60%坑给填了,又新增了10%的坑。
Finally, we need Python4.😭
2020-09-06 09:12
11
举报
PHP 7、ES 6 都是向下兼容的,而且 JS 还有 Babel、TypeScript 这样的编译器,社区早标准很多年就在生产环境用新东西。
2020-09-06 13:06
9
举报
php7部分兼容php5,不是完全兼容的,php5的代码不修改直接用php7运行会报错的,而Ruby是追求完全兼容,也就是ruby1的代码不经过修改都可以直接跑在ruby3上
2020-09-06 16:24
5
举报
最新评论 (61)
ruby是我这种傻瓜程序猿用过最性感的语言,就是当初因为做了一个网站,性能太低而放弃了,加油RUBY。
2020-09-18 09:41
1
回复
举报
其实java向后兼容做得还可以吧,面向接口的编程。
2020-09-17 09:35
1
回复
举报
php 没有断崖式升级好吗, python 才是。
2020-09-16 20:45
1
回复
举报
Ruby是我见过最慢的语言,没有之一
2020-09-16 19:08
0
回复
举报
开源中国这个展开阅读是个sb设计的吧?
2020-09-16 11:14
28
回复
举报
看评论也恶心操··非要登陆
2020-09-16 13:32
0
回复
举报
这里肯定有csdn的影响,太多的借鉴。
2020-09-16 15:45
0
回复
举报
改的好丑
2020-09-16 17:18
0
回复
举报
完全学csdn的,SD设计
2020-09-16 17:19
0
回复
举报
Python2到Python3才是断崖式升级.
而PHP5到PHP7几乎可以无缝升级.
最大的区别不过是PHP7废弃了一些PHP5时代的扩展,比如mysql.
一言以蔽之:
Read The Fucking Manual
https://www.php.net/migration70/
2020-09-16 11:02
1
回复
举报
这个国家有自己的流行编程语言,真爽
2020-09-16 08:40
0
回复
举报
语言最重要的是给开发者带来现实利益,不是那点好写不好写。。
2020-09-10 14:09
0
回复
举报
>>> PHP7,.net core的跨平台,几乎都是不兼容的断崖式升级
其他语言不了解,PHP7的升级是很平滑的,绝非你所说的断崖式的升级。比如经常拿来测试的WordPress是从古老的PHP4演变到PHP5,再到PHP7。中间很有一些不规范的语句会报错,但做下细微调整即可。
2020-09-07 11:28
2
回复
举报
但凡需要修改就是不兼容。你打算让一个连php是什么都不知道的终端用户细微调整一下??
2020-09-07 18:28
0
回复
举报
先审题再杠行不行?
2020-09-08 14:53
1
回复
举报
我又不是没糊过PHP:大方向对就行了,其他的问题高兴就是bug,不高兴就是feature。
2020-09-17 02:12
0
回复
举报
对语言的基本期望:
1、编译、运行环境 精简(最多几十M)绿色(一个目录下就是完整的一套);
2、运行速度达到c++的60%(解释型放宽到20%)以上。
2020-09-06 23:39
1
回复
举报
你这运行速度的要求也太低了吧,解释型语言现在至少也有c++的50%速度,甚至更高,在有些带有JIT的解释型语言开启了JIT后甚至能达到90%C++的速度
2020-09-07 11:17
1
回复
举报
解释型语言有c++的50%速度? IO密集型的? 运算密集型的不太可能, 除非C++没优化好.
2020-09-07 11:58
0
回复
举报
必然是IO密集型的,现在大部分程序的运行性能瓶颈在于IO,所以C++写CRUD这种业务代码,并不比java、python快多少,你像C++写CPU密集型的那差距就拉开了,比如编码解码器,压缩软件等
2020-09-07 12:10
2
回复
举报
IO密集的那就没啥可说的了, 90%的C++性能也可以做到.
2020-09-07 12:14
0
回复
举报
IO的慢,又不是程序导致的,拿它来说事,就没有意义了。
所以,IO、调用C库的那些操作,是不能参与语言运行速度的比较的
2020-09-07 21:15
2
回复
举报
所以抛弃其他因素,大部分语言开发业务需求基本都够用了
2020-09-07 21:32
0
回复
举报
Java9以上版本用官方的模块化工具可以自己生成一个绿色精简的JDK就能满足这些期望.
2020-09-07 11:54
1
回复
举报
java靠环境指定一些路径,也是比较头疼:同一台机里的不同版本的java环境。。。。
2020-09-07 21:19
0
回复
举报
无需环境变量,直接调用到java可执行文件就行
2020-09-07 21:32
2
回复
举报
更多评论
61 评论
4 收藏
分享
返回顶部
顶部