这是一个(n)历史问题,而不是语言之间的比较问题:
This article from 2005谈到缺乏一个单一的Python核心框架。对于Ruby,这个框架显然是Rails。 从历史上看,为什么这种情况发生在Ruby而不是Python?(或者它确实发生过,那个框架是Django吗?)
此外,假设的问题:如果它有一个好的框架,Python会更受欢迎吗?如果没有中央框架,Ruby会不那么受欢迎吗?
[请避免讨论Ruby或Python是否更好,这是无法回答的问题。]
编辑虽然我认为这是显而易见的,但我并不是说Ruby不存在其他框架,而是说人气那么大的是Rails。另外,我应该提一下,我并不是说Python的框架不如Rails好(或比Rails好)。每个框架都有其优点和缺点,但Rails似乎正如Ben Blank在下面的评论中所说的那样,在人气方面超过了Ruby。在Python方面没有这方面的例子。为什么?这是个问题。
答案 0 :(得分:35)
正如我所看到的,Rails将Ruby放在地图上。一个简单的事实是,在Rails之前,Ruby是一种次要的深奥语言,几乎没有采用。 Ruby将其成功归功于Rails。因此,Rails在Ruby生态系统中占据中心位置。简而言之,还有其他网络框架,但要超越Rails成为领导者将非常困难。
另一方面,Python有一个非常不同的采用曲线。在Rails之前,Python比Ruby使用得更广泛,因此有许多竞争的Web框架,每个框架都在慢慢建立他们的选区。 Django在巩固支持方面做得很好,并成为Python Web框架领域的领导者,但它永远不会仅仅因为社区的发展方式而成为One True Framework。答案 1 :(得分:7)
我不认为将Rails描述为''单一''中央'Ruby框架是正确的。
Ruby的其他框架包括Merb,Camping和Ramaze。
......哪种方式使问题无效。
答案 2 :(得分:7)
真正的技术答案是在Python中有三种主要的Web开发方法:一种是基于CGI的,其中应用程序的构建就像一个旧的一次性Perl应用程序,通过CGI或FastCGI运行,例如: Trac;然后有Zope,这是一个奇怪的过度设计的框架,有自己的数据库概念,一个奇怪的错误的网络软件开发概念等等(但Plone仍然很受欢迎);然后是Django(和Turbogears等),它由与Rails相同的工具所需的哲学引导(可以说是谁先到达那里或谁做得更好)。很多人可能会同意Django / Rails / CakePHP方法比旧方法更好,但是因为旧语言Python有更多的遗留框架仍在努力发展并保持相关性。这些框架将继续存在,因为已经有开发人员支持他们。例如,事后看来很多人可能会说Zope(特别是ZODB)是一个可怕的错误,但是Zope 3比Zope 2要好得多,并且已经有整个公司围绕Zope技术构建。
答案 3 :(得分:5)
Rails在其极端的“约定优于配置”方法方面有点革命性,这使得它与其他任何东西区别开来并使其成为Ruby的“杀手级应用程序”,导致很多人首先注意到Ruby。
所以问题是“为什么David Hansson决定用Ruby编写Rails而不是Python?”
答案 4 :(得分:5)
请记住,Ruby在创建Rails之前已经存在了很长时间。据维基百科称,Ruby创建于90年代中期; Rails直到2004年才出现.Ruby只是David Hansson选择用于Rails的语言。
是的,我会说 Ruby是Rails,因为Python是Django 。
答案 5 :(得分:5)
我同意内德。我敢打赌,超过90%的Ruby安装除了运行Rails之外别无其他用途。 Rails在Ruby中占主导地位 - 没有一个应用程序可以支配Python,主要是因为Python社区比Ruby社区更大。
答案 6 :(得分:2)
如果没有Rails,ruby会不那么受欢迎吗?绝对
Python会更受一个真正的框架的欢迎吗?你的意思是相反几个?可能是,谁知道。无论如何,大多数人认为Django是一个非常好的框架。
历史上,为什么它发生在Ruby上?因为DHH在做了自己的研究后选择了Ruby。
为了增加关于Rails由于“约定优于配置”而取得突破的答案,还有另一个原因,那就是Rails一直在使用Ruby的元编程能力。 Rails的许多神奇之处在于通过巧妙地使用ruby元编程来消除开发Web应用程序的痛苦。
答案 7 :(得分:2)
我必须同意Django基本上是“Rails for Python”的等价物。为什么需要这么长时间?简单的答案是选择太多了。
在Python中,有许多请求/响应系统,url重写器,ORM,模板语言等,您可以在许多不同的配置中构建Web堆栈。事实上,这正是Pylons和TurboGears提供的可靠,可预测的堆栈,用于构建MVC Web应用程序。
Django的不同之处在于它们封装了一切。他们建立了一个连续的系统,而不是去组件路线。他们构建了自己的ORM,他们自己的模板语言,他们自己的中间件系统等。他们的理由是Python没有像这样的统一系统。
答案 8 :(得分:1)
Python不是一个单一的小马。因此,它没有单一的“中心框架”。许多人第一次听说Python是“另一种优秀的OO语言”,或者是通过其中的许多用途之一。
公平地说,Ruby也不是一个单一的小马。只是很多人认为Rails是“杀手级应用程序”,让他们看到以前不太知名的语言。我怀疑很多人在Rails之前从未听说过Ruby,但这绝不是Ruby能做的唯一事情。
答案 9 :(得分:0)
如果您关注新闻,您已经读过Merb和Rails将合并。这是一个很好的举动恕我直言。我认为这是因为开发人员的共同目标是:他们需要一个简单的webdev框架,它带有一个OR映射器,路由,模板语言等,适合大多数任务。
答案 10 :(得分:0)
查看why we'll never see 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而不是相反的原因(通常,大多数情况下,并非在所有情况下)。