学习Ruby:我喜欢的东西,Python遗忘的东西

2021-02-17 18:19:41

我最近有幸加入Workpath,担任工程副总裁。 Workpath的后端运行在Ruby on Rails上,尽管编码不是我日常工作的一部分,但我仍然需要并且想要学习堆栈。

由于我的大部分经验是使用Python,所以让我告诉您有关我在Ruby中喜欢的2件事,其中2件事使我想重新启动PyCharm!

Python和Ruby确实很相似。它们都是解释型,动态类型的通用语言。语法上有相似之处,甚至共享实现细节:

它们被编译为字节码,然后Python和Ruby解释器基本上都是C语言中令人着迷的巨大转换语句。

他们的解释器都受到全局解释器锁定的困扰,这限制了并行性……相似之处令人毛骨悚然!

但是Python和Ruby在当今占据着不同的位置:Python的据点是数据科学,而Ruby与Rails框架密不可分。但是,我认为这可能也是偶然的。语言的设计是如此相似,以至于我可以想象一个世界,其中Python是Web开发的通用语言,而Ruby拥有所有的机器学习库。

Ruby的语法简洁明了,并且在Python并非如此的领域中使用了该语言:

一直面向对象。在Ruby中,您只需使用类和方法来构造代码。在Python中,OOP是可选的,如果它实际上是“ Pythonic”,这是一个有争议的问题。 OOP并未从Python语言设计师那里获得太多的爱,因此您必须在没有专用关键字和类似语法糖的情况下努力。而且,对它的类型系统的研究越深入,就越有可能发现其C解释器发出的泄漏抽象。

块。 Ruby的声誉是允许以多种方式完成相同的事情(更多内容请参见下文)。但是我发现,块在语言语法中占有如此特权的位置,以至于您只是想在界面设计中使用它们。

当领导一个围绕大型代码库的团队时,我欣赏一种鼓励某种设计的语言。更少的技术决策,更多的时间专注于为客户创造价值!

另一方面,Ruby的“简洁”部分有点远。表达基本句法概念的方式几乎总是不同的。 Rubyists对单线加载有一个诀窍-以这个Rails范围为例:

当然,如果您只是从左到右阅读英语单词,那么您就会明白它的作用。但是在我的初学者看来,带有更多的括号会更加可读。

而且看起来Ruby决心继续添加语法。 Ruby 3.0带有向右分配功能,这使得这些宝石(heh)成为可能:

他们说,如果编程语言改变了您的思维方式,则值得学习。

在Python中,与我同在的是生成器。特别是对于处理数据,通过生成器来表达数据的生成或转换变得如此自然(且具有内存效率)。

实际上,我编写了一个Python脚本来生成上面示例中提到的Rails范围的不同Ruby表示形式。我将很难用Ruby或任何其他语言来快速编写以下代码:

生成器逐渐发展成为现代Python版本中异步协程的基础。而且Ruby 3.0带有一个非常相似的概念Fibers,这意味着也许我将不必长时间怀念生成器。

开源语言与其社区和生态系统息息相关。而且Ruby在这里似乎处于劣势,因为它是一种众所周知的语言,但是在工作场所却是利基市场,通常在前10名中都没有。

但是,我有限的经验是工具和库非常成熟。 Ruby似乎专注于一些关键项目,但这些都是坚如磐石。如果您想用Python编写Web应用程序,或编写BDD测试套件等,那么您几乎总是会面临各种各样的选择。

这种关注重点还在于几个关键的开放源代码库:尽管Ruby开发人员仍然很少,而且相距甚远,但是当您访问一个采访时,他们往往至少拥有80%的技术经验。

还有更多的要讨论的内容-Ruby语言中Rails的大量存在,Ruby 3.0中类型提示的出现,以及最后,我们如何将所有这些结合在一起以在Workpath中提供出色的产品。因此,敬请期待更多!

→了解有关Workpath的更多信息,或在open慕尼黑,🇩🇪柏林和🇪🇸马德里查看我们开放的Rails软件工程师职位