0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

松本:今年Ruby 3真的要来了

工程师 来源:CSDN 作者:CSDN 2020-09-15 15:43 次阅读

设计一款编程语言有多难?Ruby 创始人揭秘

最近,Ruby编程语言的创始人兼主设计师、云平台即服务公司Heroku的Ruby首席架构师松本行弘在一次演讲中表示,由松本行弘领导的Ruby社区对该编程语言的发展进行了深入思考。此次30分钟的演讲中还提到了该编程语言即将迎来激动人心的新发展。

松本表示:“在过去的四五年间,我一直在谈论Ruby 3的未来。也许很多人已经厌倦了这种老生常谈。但是今年Ruby 3真的要来了,今年12月25日圣诞节Ruby 3将正式发布。”在圣诞节当天发布Ruby语言升级是该语言的一项传统。

“如果一切顺利的话,我们将于12月正式发布Ruby 3,除非出现非常糟糕的意外。”

设计师的困境

来自世界各地(从印度到印度尼西亚,从巴西到柏林)的数百名观众观看了松本的直播,很多人发表了热情洋溢的评论。他们聚集在一起观看为Ruby的发展付出了25年心血的松本的演讲。据说,Ruby 3本来计划于东京奥运会的前夕推出,但由于奥运会被推迟到2021年,因此核心开发人员怀疑Ruby 3是否也应该推迟一年。

“但是经过一番讨论,我们决定于今年发布Ruby 3,因为作为开源社区,我们必须向前迈进。我们必须不断前进,开源社区通常不能停止发展,否则,就会面临死亡……”。

松本深刻地描述了所有语言设计师所面临的困境。“每个人都喜欢新事物,因此,作为程序员工程师,我也喜欢新事物。此外,我非常喜欢语言,所以我喜欢研究新的编程语言,比如Elixir、Rust、Go等。我为这些语言感到非常兴奋。”然而,这也为Ruby语言的变革带来了压力。松本说:“Ruby有点年头了,它于1995年发布。我们只是凡人。我们犯了一些错误。因此作为语言设计师,我们希望纠正过去的错误。”

但与此同时,“没有人希望经历痛苦。”在所有Web应用程序都在使用Ruby现有版本的情况下,强迫开发人员升级有点危险,“没有人喜欢痛苦。从这个意义上讲,Ruby应该是稳定的。这似乎有点矛盾吧?”

“因此,Ruby语言的设计以及语言的计划很难克服这种矛盾。这种矛盾是我们发自内心的。”

他讲述了其他面临类似困境的编程语言,包括Python、PHP和ECMAScript,并指出这些社区花费了多年的心血才让大家接受了这些变化。例如Python 3,社区花费了十多年的时间,而PHP 6甚至被取消了。他们在发布之前放弃了重大更改,然后从PHP 5直接跳到了PHP 7。EMCAScript4也被取消了。

松本解释说,如果不进行更改,人们可能会离开社区。“他们会因为无聊而停止使用Ruby。”但同时他也担心,如果升级到更高版本带来的痛苦太多,那么他们可能也会离开社区,因为他们会决定“也许我们的下一个项目应该采用Rust、Go或其他编程语言。”

“因此,设计一种语言很困难,但是无论如何我们都必须向前迈进,以创造未来。”

让Ruby重振光辉

在演讲中,松本还概述了保持兼容性的计划,同时“加快Rust的速度,提高Ruby程序员的效率。”他确定了三个明确而具体的目标,这些目标代表了即将发布的Ruby 3的特征:快速、并发与正确。

为了加快Ruby的速度,开发团队将着手改进其JIT编译器(用于生成原生代码)。为了实现并发,他们没有选择其他语言的解决方案,而是打算尝试自己的一种方法。Node.js添加了Promise来通知异步操作的完成,而ECSMAScript 7添加了带有关键字async和await的控制机制,但Ruby 3将实现人们期待已久的异步i/o功能“fiber”,作为更好的控制异步线程的方法。”由于在fiber之间切换上下文很快,因此可以提高性能。“

他们认为这种方法能够提升性能的另一个原因是:它是由Ruby的falcon应用服务器的创建者开发的,松本认为这个项目非常快。但这并不是他们提高性能的唯一方法。他们还实现了“Ractor”(即Ruby Actor),类似于JavaScript提供背后“Web worker”脚本的方式。每个Ractor都可以并行运行,松本解释说,这利用了现代多核系统中的并行处理。

Ruby的第三个目标是正确性,这个目标指的是提早检查错误,主要由类型分析器负责实现,它将生成Ruby签名(松本将之类比为TypeScript中描述类型的d.ts文件)。Ruby 3将为其核心库提供类型签名,可用于类型检查,还可以用于增强将来的IDE。

但是它也有其局限性。松本解释道:“我们不追求类型系统的完整性和合理性,因为Ruby就是Ruby。Ruby基本上是动态类型的,这意味着,即使我们现在有了渐进式类型系统,也无法进行任何完全正确的类型检查,所以只能放弃。我们不会在语法中添加类型声明。”

三种新功能

Ruby 3的语法发生了一些变化。松本对三个新特性非常满意,他表示:“Ruby会越来越好。首先是复杂的模式匹配语法,你不必解构数组和哈希,因为可以编写模式,非常简便。”

第二个新功能可以给等号右侧的变量赋值。他说,虽然从外观来看,我们会觉得有点“不自然”,IDE也会有点不适应,因为一般表达式都以变量开头,即使将值分配给很长的一个代码块也是如此。“如果可以反过来,将赋值变成右值运算,那么看起来会很自然,但我们并不建议在所有地方使用。你不必用右值赋值来替换每个赋值操作,但是在某些情况下,这非常方便。”

Ruby 3中的第三个新功能是编号的块参数,“你不必再给临时的本地块参数起名字。”

松本表示:“稳定性很重要”,所以他并没有表示Ruby 3之后会有任何重大的语法变化。相反,他们将专注于改进Ruby现有的支持工具,例如用于语言服务器协议的Solargraph,用于静态类型检查的Sorbet,以及帮助开发人员编写出符合Ruby规范的代码的Rubocop 。“这些工具证明,工具越好带来的用户体验就越好。因此,我们必须继续努力。我认为我们需要更多的工具,然后我们还需要改进这些工具。”松本还希望看到更好的类型检查工具和格式化工具,或者更好的性能调整和调试工具。此外,对于如何加快Ruby的速度,松本还有一些其他想法,例如在位于虚拟机上方设置另一个轻量级JIT编译器,比如MIR或DynASM。

更加轻量级的Ruby

最后,在有关Ruby 3的讨论中,松本还提到了另一个想法:“虽然这只是一个疯狂的主意,但我正在考虑建立一个更加轻量级的Ruby子集,这个子集不仅更简单更严格,而且更快或更容易优化。”

这个Ruby子集可以向下兼容,即可以在所有现有已有的Ruby版本中运行(尽管并非所有版本的Ruby都可以在这个轻量级的Ruby中运行)。在解释其基本原理时,松本展示了一张幻灯片,上面写着:“这款轻量级的Ruby运行得更快。”他表示:“这只是一个初步的想法。还不是十分明确。我们必须保持兼容性,但是如果我们止步于这个Ruby子集,那么可能会缺乏灵活性,但是应该更容易优化。”

松本还表示:“我有很多疯狂的想法,我们会逐个尝试,让Ruby变得越来越好。”

作者 | DAVID CASSEL

译者 | 弯月

来源:CSDN

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编程
    +关注

    关注

    88

    文章

    3441

    浏览量

    92443
  • ruby
    +关注

    关注

    0

    文章

    43

    浏览量

    3414
收藏 人收藏

    评论

    相关推荐

    《长安三万里》热映!背后阿里云出大力,人均算力时代要来了

    电子发烧友网报道(文/吴子鹏)2023年暑期档真的是好戏连连。在《消失的她》以32亿票房大获成功之后,近几天追光动画新作、国产动画《长安三万里》引起人们广泛热议,票房也是迅速攀升。在这部动画电影
    的头像 发表于 07-27 01:13 5050次阅读

    腾讯突然宣布,微信鸿蒙版要来了

    应用,仅支持鸿蒙内核和系统的应用,被称为 “纯血鸿蒙”而备受关注, 这意味着, 真正的国产手机操作系统要来了 ,而且影响力惊人, 一上线就是仅次于 Android 和 iOS 之后的全球第三大手机操作系统
    发表于 04-30 19:34

    苹果折叠屏iPhone新专利获批 苹果折叠屏手机要来了吗?

    苹果折叠屏iPhone新专利获批 苹果折叠屏手机要来了吗? 我们看到苹果公司折叠屏iPhone专利已经获批;果粉都在期待的苹果折叠屏手机要来了吗?新专利也显示苹果已经找到了提升折叠屏耐用耐摔性的方法
    的头像 发表于 04-17 17:05 621次阅读

    OpenAI预计最快今年夏天发布GPT-5

    OpenAI正计划在未来数月内,可能是今年夏季,发布备受瞩目的GPT-5模型。据悉,部分企业客户已提前体验了OpenAI最新模型及其ChatGPT工具的改进版Demo。一位CEO在体验后赞不绝口:“它真的令人惊艳,相较于之前的版本,GPT-5带
    的头像 发表于 03-22 10:40 345次阅读

    苹果12.9英寸巨屏iPad Air要来了

    苹果会在每年3月份针对iPad产品线进行更新,今年iPad Air系列将会带来一个史无前例的大变化,新增一个大屏版本。
    的头像 发表于 01-23 09:08 400次阅读

    华为黑科技充电车要来了

    华为再度掀起黑科技风潮,新一款创新力之作——华为充电车(或被戏称为行动充电机器人)近日亮相于国家知识产权局的中国专利公布公告中。这款充电车外观设计专利已经获得授权,勾勒出一个圆润流畅、被寄予“可爱”期待的外观。在这款充电车上,你将看到配备有直流和交流充电枪,它们巧妙地隐藏在电子交互屏幕下方的收纳箱两侧。 据百能云芯电.子元器.件商.城了解,这辆充电车身上布满了各种超声波雷达,令人瞩目的是车顶的构造,有望搭
    的头像 发表于 12-18 16:11 331次阅读

    小米汽车要来了?你会买吗?浅谈小米汽车的核心技术之汽车PCB线路板

    小米汽车要来了?这是近期引发了无数网友热议的话题。小米作为一家以手机为主的科技公司,为什么要涉足汽车领域呢?小米汽车有什么特点和优势呢?今天,捷多邦小编就来聊聊小米汽车的核心技术之一——汽车PCB
    的头像 发表于 11-20 10:30 1492次阅读

    Ruby 与 Python之间的差异

    Ruby 与 Python 之间的差异在很大程度上可通过 for 循环看出本质。 Python 拥有 for 语句。对象告诉 for 如何进行协作,而 for 的循环体会处理对象返回的内容
    的头像 发表于 10-30 11:50 341次阅读

    摩尔定律的终结真的要来了

    英特尔共同创始人戈登·摩尔(Gordon Moore)在今年与世长辞,而他对半导体芯片晶体管密度持续增长的著名预测依旧闻名于世。詹姆斯·麦肯齐(James McKenzie)深入研究了这一60多年来
    的头像 发表于 10-19 10:49 354次阅读
    摩尔定律的终结<b class='flag-5'>真的</b><b class='flag-5'>要来了</b>吗

    慢的不是Ruby,而是你的数据库

    为了进行对比,我尝试用 Rust 和 Ruby 创建了一个内部尽可能相似的版本。结果令人失望,Ruby 和 Rust 的性能都很差劲,甚至存在一些错误,而且都没有进行性能优化。我确信 Ruby
    的头像 发表于 10-10 16:10 218次阅读
    慢的不是<b class='flag-5'>Ruby</b>,而是你的数据库

    苹果自研5G基带要来了

    天风证券分析师郭明錤表示, 苹果计划在2025年开始,在iPhone机型上使用自研5G基带。
    的头像 发表于 09-08 17:02 671次阅读

    新能源汽车充电桩费用开始上涨 充电桩价格上涨潮要来了

    新能源汽车充电桩费用开始上涨 充电桩价格上涨潮要来了吗 很多买新能源汽车的都是冲着充电便宜,甚至有的新能源汽车一公里不到一毛钱的低价费用,这可比燃油车便宜了不是一点半点,但是现在很多地方的用户都开始
    的头像 发表于 07-19 10:47 1878次阅读

    特斯拉“尝鲜”入局,汽车无线充电或许真的要来了

    无线充电,主要通过电磁感应、电磁共振、射频、微波、激光等技术实现无线电力传输,这个技术并不新鲜,中国等个别国家甚至可以在理论上做到在太空发电,然后用无线方式传输至地球。
    的头像 发表于 07-12 15:53 573次阅读

    USB4真的要来了

    台北电脑展上,祥硕展示了ASM2464在苹果M2、Intel 13代酷睿平台上的运行情况,都已经没有明显的兼容性、性能问题,实测顺序读写速度最高都可以达到3.7GB/s左右。此外,祥硕还有新的ASM3074 USB 3.2 Gen2x2 20Gbps Hub,支持三个5Gbps或者10Gbps USB 3.2接口。
    的头像 发表于 06-05 18:28 1255次阅读
    USB4<b class='flag-5'>真的</b><b class='flag-5'>要来了</b>

    电阻热噪声的主要来

    电阻的热噪声主要来源于导体中电子的随机运动,因此热噪声的谱密度与绝对温度成正比。
    的头像 发表于 05-15 11:45 650次阅读
    电阻热噪声的主<b class='flag-5'>要来</b>源