8

这是一个(n)历史问题,而不是语言之间的比较问题:

这篇 2005 年的文章讨论了 Python 缺乏单一的中央框架。对于 Ruby,这个框架显然是 Rails。为什么,从历史上看,这发生在 Ruby 上而不是 Python 上?(或者它发生了,那个框架是 Django?)

另外,假设性问题:如果 Python 有一个好的框架,它会更受欢迎吗?如果没有中央框架,Ruby 会不会那么受欢迎?

[请避免讨论 Ruby 或 Python 哪个更好,这太开放了,无法回答。]

编辑:虽然我认为这很明显,但我并不是说 Ruby 不存在其他框架,而是说Rails是最受欢迎的框架。另外,我应该提一下,我并不是说 Python 框架不如 Rails 好(或更好)。每个框架都有其优点和缺点,但正如 Ben Blank 在下面的评论之一中所说,Rails 似乎在受欢迎程度方面已经超过了 Ruby。在 Python 方面没有这样的例子。为什么?这就是问题所在。

4

11 回答 11

35

在我看来,Rails 将 Ruby 放在了地图上。一个简单的事实是,在 Rails 之前,Ruby 是一种次要的深奥语言,很少被采用。Ruby 的成功归功于 Rails。因此,Rails 在 Ruby 生态系统中处于中心位置。正如 slim 所指出的,还有其他 Web 框架,但要超越 Rails 成为领导者将非常困难。

另一方面,Python 的采用曲线非常不同。在 Rails 之前,Python 的使用比 Ruby 更广泛,因此有许多相互竞争的 Web 框架,每个框架都在慢慢建立自己的支持者。Django 在巩固支持方面做得很好,并成为 Python Web 框架世界的领导者,但仅仅因为社区的发展方式,它永远不会成为 One True Framework。

于 2009-01-02T15:03:40.680 回答
7

我认为将 Rails 描述为“单一”“中央”Ruby 框架是不正确的。

Ruby 的其他框架包括 Merb、Camping 和 Ramaze。

...哪种使问题无效。

于 2009-01-02T14:33:24.580 回答
7

真正的技术答案是 Python 中有三种主要的 Web 开发方法:一种是基于 CGI 的,其中应用程序的构建就像一个旧的一次性 Perl 应用程序一样通过 CGI 或 FastCGI 运行,例如Trac;然后是Zope,这是一个奇怪的过度设计的框架,它有自己的 DB 概念,一个奇怪的被误导的 through-the-web 软件开发概念等(但Plone仍然很流行);然后是 Django(和Turbogears等),它遵循与 Rails 相同的工具所需的哲学(可以争论谁先到达那里或谁做得更好)。很多人可能会同意 Django/Rails/ CakePHP方法比旧方法更好,但作为旧语言,Python 有更多的遗留框架仍在努力发展和保持相关性。这些框架将继续存在,因为已经有开发人员支持它们。例如,事后看来,很多人可能会说 Zope(尤其是 ZODB)是一个可怕的错误,但 Zope 3 比 Zope 2 好得多,而且已经有整个公司围绕 Zope 技术建立。

于 2009-01-02T22:08:20.120 回答
5

Rails 在其极端的“约定优于配置”方法中具有一定的革命性,这使它与几乎所有其他东西不同,并使其成为 Ruby 的“杀手级应用程序”,首先引起了很多人的注意。

所以问题实际上是“为什么 David Hansson 决定用 Ruby 而不是 Python 来编写 Rails?”

于 2009-01-02T14:39:57.670 回答
5

请记住,在创建 Rails 之前,Ruby 已经存在了很长时间。根据 Wikipedia,Ruby 是在 90 年代中期创建的。Rails 直到 2004 年才出现。Ruby 只是 David Hansson 选择用于 Rails 的语言。

是的,我会说Ruby 之于 Rails 就像 Python 之于 Django 一样

于 2009-01-02T14:43:19.893 回答
5

我同意内德。我敢打赌,超过 90% 的 Ruby 安装都是为了运行 Rails。Rails 主宰 Ruby——没有一个应用程序能主宰 Python,主要是因为 Python 社区比 Ruby 社区要大一些。

于 2009-01-02T16:07:34.140 回答
2

如果没有 Rails,ruby 会不会那么受欢迎?绝对地。

Python 在一个真正的框架下会更受欢迎吗?你的意思是相对于几个?可能是,谁知道呢。无论如何,大多数人都同意 Django 是一个非常好的框架。

为什么,从历史上看,它会发生在 Ruby 身上?因为 DHH 在自己研究之后选择了 Ruby。

补充一下关于 Rails 因“约定优于配置”而取得突破的答案还有另一个原因,那就是 Rails 一直在出色地使用 Ruby 的元编程能力。Rails 的许多神奇之处在于它巧妙地使用了 ruby​​ 元编程,从而消除了开发 Web 应用程序的许多痛苦。

于 2009-01-02T17:51:17.520 回答
2

我不得不同意 Django 基本上是“Rails for Python”的等价物。为什么花了这么长时间?简单的答案是太多的选择。

在 Python 中,有许多请求/响应系统、url 重写器、ORM、模板语言等,您可以使用数十种不同的配置构建 Web 堆栈。事实上,这正是 Pylons 和 TurboGears 所做的,它提供了一个可靠的、可预测的堆栈来构建 MVC Web 应用程序。

Django 的不同之处在于它们封装了所有内容。他们没有走组件路线,而是建立了一个连续的系统。他们构建了自己的 ORM、自己的模板语言、自己的中间件系统等。他们的理由是 Python 没有像这样的统一系统。

于 2009-01-03T07:33:13.180 回答
1

Python 不是一招一式的小马。因此,它没有单一的“中央框架”。许多人第一次听说 Python 是“另一种不错的 OO 语言”,或者是通过它的众多用途之一听说的。

说句公道话,Ruby 也不是一招一式的小马。只是许多人将 Rails 视为“杀手级应用程序”,这让他们看到了一种以前不为人知的语言。我怀疑很多人在 Rails 之前从未听说过 Ruby,但这绝不是 Ruby 唯一能做的事情。

于 2009-01-02T15:02:40.200 回答
0

如果您关注新闻,您已经了解到 Merb 和 Rails 将合并。恕我直言,这是一个很好的举动。我认为这是因为开发人员有一个共同的目标:他们想要一个简单的 webdev 框架,它带有适合大多数任务的 OR 映射器、路由、模板语言等。

于 2009-01-05T12:19:03.087 回答
0

查看这篇文章,了解为什么我们永远不会看到 Python-on-Rails作者给出了 Python 从来没有也永远不会有中心框架的一些基本原因。我自己可能会补充说,Java 也没有,出于同样的原因。

根据作者的说法,Rails 严格依赖于它的“实现”,即 Ruby。Rails 被许多开发人员采用,而 Ruby 只是其中的一部分。Rails 在 Ruby(或像 Groovy 这样的 Ruby 想要成为)上完美运行,但更重要的是,正如许多其他答案所说,Rails 引领了 Ruby 的采用。

这就是为什么 Rails-for-Python 不起作用的原因,或者至少人们一直关注的 Rails 是不正确的。这与框架的实施或质量无关,而与采用的模式有关。这是关于将框架放在前面,将实现放在后面——即使这不是 Rails 开发人员的意图(尽管他们可能很聪明,这也是他们的意图)。

基本上,你不可能让一群热爱语言的人聚集在一个框架周围。在 Java 方面,虽然 Spring 很受欢迎,但它在 Java 社区中的受欢迎程度却远非 Rails。在成熟的社区中,开发人员对哪些隐喻在框架中有效和无效有自己的想法。就是为什么 Rails 会导致 Ruby 而不是相反的原因(通常,大多数情况下,并非在所有情况下)。

于 2010-05-19T10:09:31.670 回答