Python 与 Ruby:哪个最适合 Web 开发?

这两种语言在某些方面相似,但在解决问题的方法上却截然不同。
550 位读者喜欢这篇文章。
Top 4 JavaScript code editors

Opensource.com

Python 和 Ruby 是开发网站、基于网络的应用程序和 Web 服务的最流行的编程语言之一。

在许多方面,这两种语言有很多共同之处。从视觉上看,它们非常相似,并且都为程序员提供高级的、面向对象的编码、交互式 shell、标准库和持久性支持。然而,Python 和 Ruby 在解决问题的方法上却截然不同,因为它们的语法和理念差异很大,这主要是由于它们各自的历史。

选择哪种语言来实现 Web 开发需要认真思考,因为所有语言都有优点和缺点,而您的决定将产生后果。

基础知识

Python 最初是在科学领域中作为一种原型语言有机地开发的,如果原型有效,则可以轻松地将其转换为 C++。这发生在很久以前,那时它才首次用于 Web 开发。另一方面,Ruby 之所以成为主要参与者,正是因为 Web 开发;Rails 框架扩展了 Ruby 在开发复杂网站的人们中的普及程度。

哪种编程语言最适合您的需求?以下是每种语言的快速概述,以帮助您选择

方法:一种最佳方式与人类语言

Python

Python 采用直接的编程方法。它的主要目标是使一切对程序员来说显而易见。在 Python 中,只有一种“最佳”方式来做某事。这种理念导致了一种布局严格的语言。

Python 的核心理念包含三个关键的层次原则

  • 显式优于隐式
  • 简单优于复杂
  • 复杂优于繁琐

这种严格的理念使 Python 非常易读且易于学习,这也是 Python 非常适合初学者程序员的原因。Python 在入门编程课程中占据重要地位。它的语法非常简单,几乎没有什么需要记住的。由于其代码结构是显式的,因此开发人员可以轻松地知道一切来自何处,从而使其相对容易调试。

Python 的层次原则在该语言的许多方面都很明显。它使用空格来执行流程控制作为语言语法的核心部分,这与其他大多数语言(包括 Ruby)不同。您缩进代码的方式决定了其操作的含义。这种空格的使用是 Python “显式”理念的主要示例,Python 应用程序的形状阐明了其逻辑以及应用程序将如何运行。

Ruby

与 Python 相比,Ruby 专注于“人类语言”编程,并且其代码读起来像口头语言而不是基于机器的语言,这受到许多程序员(包括初学者和专家)的喜爱。Ruby 遵循“最小惊讶原则”,并提供了无数种方法来做同一件事。这些类似的方法可以有多个名称,许多开发人员会感到困惑和沮丧。

与 Python 不同,Ruby 使用“块”,这是一种一等公民对象,在程序中被视为一个单元。实际上,Ruby 将 OOP(面向对象编程)的概念发挥到了极致。一切都是对象,即使全局变量实际上也表示在 ObjectSpace 对象中。类和模块本身就是对象,函数和运算符是对象的方法。这种能力使 Ruby 特别强大,尤其是当它与其他主要优势结合使用时:函数式编程和 lambda 的使用。

除了块和函数式编程之外,Ruby 还为程序员提供了许多其他功能,包括碎片、可哈希和不可哈希类型以及可变字符串。

Ruby 的粉丝认为它的优雅是其最畅销的卖点之一。与此同时,Ruby 的“神奇”功能和灵活性可能会使跟踪错误变得非常困难。

社区:稳定与创新

尽管功能和编码理念是选择给定语言的主要驱动因素,但开发者社区的实力也起着重要作用。幸运的是,Python 和 Ruby 都拥有强大的社区。

Python

Python 社区已经包括一个庞大的 Linux 和学术社区,因此在数学和科学领域提供了许多学术用例。这种支持为社区带来了稳定性和多样性,随着 Python 越来越多地用于 Web 开发,这种稳定性和多样性只会增长。

Ruby

然而,Ruby 社区从一开始就主要关注 Web 开发。它倾向于比 Python 社区更快地创新,但这种创新也会导致更多事情出错。此外,虽然它变得更加多样化,但尚未达到 Python 所拥有的多样化水平。

最终想法

对于 Web 开发,Ruby 有 Rails,而 Python 有 Django。两者都是强大的框架,因此在 Web 开发方面,您选择哪种语言都不会出错。您的决定最终将取决于您的经验水平和您的哲学偏好。

如果您计划专注于构建 Web 应用程序,那么 Ruby 既流行又灵活。有一个非常强大的社区建立在其基础上,他们始终处于开发的最前沿。

如果您有兴趣构建 Web 应用程序,并且想学习一种更通用的语言,请尝试 Python。您将获得一个多元化的社区,以及来自 Python 应用的各个行业的巨大影响和支持。

标签
User profile image.
Tom Radcliffe 在学术界和工业界的软件开发和管理方面拥有 20 多年的经验。他是一名专业工程师(PEO 和 APEGBC),并拥有金斯顿女王大学物理学博士学位。Tom 将对定量、数据驱动流程的热情带到了 ActiveState。

7 条评论

虽然 Scientific Python 堆栈无疑是该语言当今最显着的特性之一,但它在 Web 开发中的历史至少同样悠久,仍然流行的 Plone CMS 基于 Zope 对象发布系统和无模式 Zope 对象数据库,这两者都是在 90 年代后期开发的,与现代 Scientific Python 堆栈的基础开始作为 Numeric 和 NumArray(在它们合并为 NumPy 之前)组合在一起的时间大致相同。

别忘了 Flask。

Huuuu... “Ruby 将 OOP(面向对象编程)的概念发挥到了极致”……嗯……

你能解释一下 Python 的限制在哪里吗?试过 type(type) 吗?或者,type(sys.modules['sys'])?

我不会说这些语言中的一种比另一种更面向对象!

作者没有提及当今 Web 开发中最重要的方面……性能和可扩展性。对于大多数基于云的解决方案,任何(或任何)堆栈都可以正常工作。但是,如果您有高流量服务和有限的资源……哪个更好?在我看来都不是,但是如果能看到一些性能和可扩展性比较就太好了。

> 但是,如果您有高流量服务和有限的资源

一些 RoR 开发人员转而从事 Elixir 和基于它构建的 Phoenix Framework (https://phoenix.erlang.org.cn/) 的工作,当涉及到高需求站点时,它非常出色。内置了长时间运行的任务、Web 套接字、并发性,并且具有与 RoR 大致相同的生产力优势。绝对值得一看!

回复 ,作者:chuckie (未验证)

很好的概述!谢谢!

PHP

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 获得许可。
© . All rights reserved.