在后端工作时,我如何放弃Ruby取而代之的是Python



我们为Sqreen的软件开发人员Benoit Zen为您翻译了一篇文章。 Benoit正在开发一个后端Web服务,最近已从Ruby切换到Python。

2008年,当我仍在学习软件开发人员时,我的两个朋友决定成立一家公司,并将其命名为Feedbooks。 他们的目标是创建任何人都可以快速找到并下载的高质量电子书(如果需要,可以与朋友分享)。 该项目以数字samizdat库的形式呈现给他们。

该网站将成为该服务的代名词,必须快速,高效且易于管理。 大约在那个时候,出现了Ruby on Rails演示视频“如何在15分钟内创建博客”,此后创始人决定使用该视频。

Skillbox建议:为期两年的实践课程“我是PRO Web开发人员”

我们提醒您: 对于所有“哈勃”读者来说,使用“哈勃”促销代码注册任何Skillbox课程时均可享受10,000卢布的折扣。


几周后,他们需要帮助,他们求助于我。

像我们这一代的许多开发人员一样,我使用PHP和Mysql,有时甚至将自己的股份添加到开源CMS中。 我对这项工作非常熟悉,实际上是Ruby。 我什至从未听说过他(别忘了,我们正在谈论2008年,译者注)。 总的来说,我开始使用Ruby,并在接下来的十年中使用了Ruby。

为什么是Ruby?


事实是,这是一种非常富有表现力的语言。 它的主要创建者着手使程序员在使用Ruby时感到高兴。 然后他走了。 这里几乎所有元素都是对象。 Ruby虚拟机将语法转换为真实的语句。 它在不断地改进,以使生成的代码在每个新版本中都变得更好。 Ruby易于分析,修改,甚至创建专门的接口。

Ruby on Rails的核心是DSL套件和基础架构,可轻松构建模型驱动的Web应用程序。 如今,它特别适合创建业务逻辑和建模将在其中扮演重要角色的应用程序,并且非常有用。

在我的Sqreen公司,我在后端与Ruby一起工作。 但是很快,就决定使用Python。

喜欢Ruby,但改用Python,为什么呢?


首先,我们的后端是许多服务的一堆,其中一些对世界开放,而有些则不开放。 客户首先看到的是使用Jekyll生成的公司静态站点。 然后工具栏打开-这是一个动态的React应用程序。 该面板使用专用的API,我们将其称为“外部接口的后端”。 他是我们的主要角色。

最初,我们决定不使用不同的语言编写API,因为我们希望所有语言都与某些业务逻辑和模型相对应。 此外,在旅程的开始,我们意识到,至少代理的后端应该易于扩展,以支持不断扩大的客户群。

不幸的是,Rails太慢了。 当然,他并不是唯一的一个; Ruby的微型框架很多,其中包括著名的Sinatra。

但是我们仍然决定选择Python。 有两个主要原因。 首先,我们的指南对此很熟悉,因为许多产品以前都是使用Python开发的。 其次,我们需要深入的数据分析,而Ruby并不能很好地进行分析。 选择是显而易见的。

Python入门


在这个阶段,我几乎没有Python的经验-早些时候,我只在上面写过一些小脚本,这些脚本有助于项目的整体实施。 我必须快速掌握并加速我们所使用的API的开发工作。 幸运的是,基本组件并不取决于您使用哪种语言:HTTP / HTML / JSON / REST-所有这些都保持不变。 在Ruby中,使用Rack实现了应用程序与Web进行较低级别的通信的能力。 事实证明,很多Rack都来自Python,因此它工作起来并不难。

但是语言呢? Ruby是一种面向对象的语言,Python也是面向对象的。 但是,两种语言之间的差异仍然很大。 因此,Ruby使用关键字描述了块;在Python中,为此使用了空格。 我需要习惯它,并且我更喜欢Ruby路径的开始/救援/结束。 但是,Python允许您编写更有效的代码,这些代码可以快速运行。

我个人为了快速理解Python语法做了什么? 最主要的 -我开始使用Python Koans进行练习,这是一个开放源代码项目,可让您学习Python,并提供越来越复杂的单元测试。

Python Koans引入了该语言的各种功能,此处的文档非常详细。

此外,我还研究Python文档-该语言非常全面。 该语言分为多个模块,每个模块都有详细的说明。 它包括答案,说明为什么存在该模块,正在尝试解决什么问题以及如何实现所有这些。

给那些想换成Python的人的建议


如果您是正在考虑切换到Python的Ruby开发人员,那么就做吧,您可能会喜欢。 没错,您必须记住,在开始创造新机会之前,您必须掌握该语言的许多功能。 交互式教程和文档是一个很好的起点。 此外,培训应得到实践的支持,值得立即开始实施实际的应用程序。
Skillbox建议:

Source: https://habr.com/ru/post/zh-CN438960/


All Articles