我对Ruby作者的采访记录


在秋季会议上,关于组织者权利的Ruby Russia I被作者搁浅,Ruby给予了他一个小时的讯问采访。我试图选择那些不厌其烦的问题,以便答案对我们有用,而不是“对所有好与坏”。祖父确实让我感到惊讶,老加开发者!删节内容是访谈的笔录,松本行弘对普通类型,尤其是hack的非凡见解,以及在评论中讨论所有这些内容的机会。我与Ruby小组Evrone保持联系我们定期邀请松本到莫斯科,有机会提前提出有趣的问题,以供将来采访。

作为语言的创始人,您会收到很多建议和想法。您最常问什么?

人们经常问:“我使用X语言。为什么不从X向Ruby添加函数?” 在大多数情况下,我答复认为这是不可能的。我们有不同的语言设计和不同的语言政策。我们不能仅仅从X中获取一些功能并添加到Ruby中。但是有时候我们仍然会借鉴其他语言的好主意,例如Python,JS或Elixir。

现在动态语言增加了显式指定类型的能力。它已经出现在Python,PHP和JavaScript(TypeScript)中。您对此有何看法,将如何开发Ruby第三版本中的类型?

Rust和Go是静态类型的语言。在大型项目中,成百上千的开发人员创建和维护了大量的代码,数百万行。在这种情况下,类型检查很方便,它使您可以检测错误。在其他情况下,我们必须编写测试以确保所使用的类型正确。测试量随着项目的增长而增加。在此,我看到了静态类型流行的原因,因为它的使用减少了测试的数量。

同时,显式类型声明是冗余信息。对于Ruby,语言本身可以处理类型,我们的代码也可以正常工作。我们想要类型检查的好处,但是我们不希望它们的手动规范多余。作为Ruby语言社区,我们努力为开发人员提供所有功能。我们将使用类型独立于Ruby程序的文件。因此,Ruby程序将不包含类型信息。

一个单独的类型信息文件(我们称为“红宝石签名文件”)将包含有关库,gem和您的库代码中使用的类型的信息。我们还将提供一个新的工具“ type profiler”,它将收集类型信息。它可以基于代码本身或类型注释来检测类型冲突或冲突。

使用签名文件,您可以优化使用的类型并帮助分析器验证您的代码。在收集了所使用的库和您的代码中的所有类型信息之后,探查器具有足够的信息来查找潜在的错误。

将来的Ruby版本将在某种程度上能够进行静态类型检查。Ruby仍然是一种动态语言,并且习惯于在我们的代码执行期间执行其中的主要类型检查。类型检查“第一级”使用有关代码中类型的信息,并帮助开发人员检测40%到80%的错误。类型检查“第二级”根据代码本身生成类型信息。将来,借助此类工具,我们将能够在Ruby中提供静态类型检查,而无需开发人员明确指定它们。

我喜欢这个主意,并期待将来的Ruby版本,看看这种方法会有多好。您正在尝试使用该语言真是太好了。您对Ruby的前景如何?您在朝哪个方向发展语言?

实际上,我不控制语言或社区。我只提供技术,然后社区决定要走的路。我们几乎在所有领域都有足够的技术来使Ruby灵活高效。例如,Ruby主要用于构建Web应用程序。但是我希望将Ruby应用于其他领域:研究和计算,人工智能,机器学习以及创新领域。我们正在努力使该技术适合更广泛的应用。

我们的开发人员喜欢用不同的名字称呼事物。“这是一辆跑车”,这是“家用车”。JavaScript是一种Web开发语言,C是一种低级系统语言。您喜欢将Ruby定位吗?

我将Ruby称为“一种高效的编程语言”。生产力是Ruby的主要目标之一,也是主要任务。它是为人而不是汽车而设计的。有时,当某些语法难以有效实现时,开发人员会抱怨该语言的设计。 Ruby的设计不是针对生产力,而是针对生产力。这使开发人员可以解决与项目本身相关的更复杂的任务。我们试图使Ruby尽可能高效,并且尽可能高效。

由于开发复杂性,Python没有多行匿名函数。听到这样的消息很高兴,尽管实现很复杂,但您和核心开发人员都在努力使程序员的生活更轻松。顺便说一句,如果我们开始谈论复杂性。想象一下,当您第一次开始开发Ruby时,您有机会回到过去,并给自己的建议。这将是什么建议?

不要从其他脚本语言中借太多。您的编程语言将是最好的通用语言。将来,对脚本的高度关注将成为一种雏形。

在Ruby语言的发展过程中,您进行了很多更改,进行了大量实验。其中有些成功,有些则没有。您认为在开发语言方面最大的成功是什么?您最喜欢什么?

如果需要选择一个,则这些是块。Ruby中的块是唯一的;这是高级函数的有用抽象。它们比其他语言要简单得多。这样既有局限性,又易于使用。

巧合的是,Ruby是我最喜欢的是块。在我自己的演讲和访谈中,我谈到了Ruby,它是一种具有DSL,语法糖和块的语言。方块很酷。

在其他语言中,例如Swift,如果将另一个函数指定为该函数的最后一个参数,则该参数函数的行为就像Ruby中的一个块一样。有这样的语法糖建议,甚至对于JavaScript也是如此。我为此感到骄傲。

是的,JavaScript具有粗箭头语法,通常将函数的最后一个参数用作“ Ruby中的块之类的东西”。我不禁要问相反的问题。在需要修复或已经修复的项目中,最大的错误是什么?

有一些。让我们从全局变量开始。它们对于脚本语言很有用,但现在看起来像一个雏形。我也很遗憾明确添加流-我们需要更方便的并发抽象。我的另一个设计错误是某些对象缺乏免疫力。例如,现在您可以更改时间对象的时区。不仅仅是创建一个新的不可变对象。这就是我的遗憾。

可变性很复杂,很容易导致错误。但是有足够的技术问题!我们人类是社交动物,了解您的生活,如何组织工作会很有趣。

我是一名全职的Ruby开发人员。我有一半的时间从事语言下一个版本的设计。在剩下的时间里,我正在研究MRuby的替代实现。主流实现是由核心开发人员创建的,我只做出决定,使其反映在代码中。

GitHub上的提交数量令人印象深刻,尤其是飞往俄罗斯的当天的提交数量。最近,开发人员谈论了很多关于倦怠的话题。您是否有空闲时间,爱好和可以保护您免于倦怠的东西?

幸运的是,我将所有的时间都花在了开源上。我没有来自客户的压力,没有老板,我为自己设定了任务。所有这些使我可以轻松地工作。除了下一个Ruby发布日期,我没有其他截止日期。这种自由让我感到放松,我也尝试不花时间在电脑前,关注我的亲戚,家人,帮助当地的教堂,walk狗和与猫嬉戏。

许多俄罗斯Ruby开发人员都喜欢日本作为一个国家,即日本的文化。他们看动漫,看漫画,并作为游客来到日本。作为日本本地人和软件开发人员,您可以向访问日本的其他开发人员推荐哪些地点和活动?

日本是一个多元化的国家。您可以参观未来主义的东京,那里有很多流行文化,例如漫画和动漫。同时,我们拥有山脉,森林和历史遗迹,例如古老的神社和庙宇。我们欣赏樱花盛开的美丽和秋叶的颜色。因此,这完全取决于您的口味和喜好,您可以享受很多东西:食物,自然,技术。您可以参观许多地方,尤其是在东京。我建议同事们注意我们国家的多样性,并在您的旅行中完全依靠这一点。

日本文化和语言中是否有任何因素影响Ruby的创建?

我们无法控制这种文化影响,因此很难评估。例如,在日语中,句子被粘在一起。就像“方法链接”在Ruby中起作用一样。也许这是日语的影响。日本是一个富裕的国家,我们不需要持续的努力。开源并不会带来金钱,但是从事主要工作或依靠赞助商的金钱,我和贡献者可以支持和开发语言,并开发出最好的技术。这也是日本的影响力及其带来的机会。

还有最后一个阴险的问题。人们通常会想象自己会代替他人,思考他们会做什么,如何行动。流行的编程语言的作者是否有从外部看不到的东西?

创建编程语言并不是一项非常困难的技术任务。许多在大学里学习开发编程语言的课程的学生可以自己编写语言,没有什么令人惊讶的复杂性。问题在于语言是表达思想的一种方式。这适用于编程语言和自然语言:俄语,英语,日语。诸如Ruby,Python或JavaScript之类的编程语言-它们可以帮助我们的思想表达思想。这是编程语言的主要任务。好的编程语言提供了一种表达思想的方法。对于Ruby而言,这种方法是“开发生产力和编写代码的乐趣”。对于其他语言,可能是“简单”,“效率”或其他。每种语言都有其自己的方法。如果你喜欢的话Ruby提供的表达思想的方法就是您的语言。

All Articles