【问题标题】:Python+Tornado vs Scala+Lift?Python+Tornado vs Scala+Lift?
【发布时间】:2011-11-05 20:54:03
【问题描述】:

我正在寻找一个基于谷歌地图的网络应用程序。 我最初的想法是,第一阶段的重点应该放在前端,后端应该易于编写和原型化,并且应该尽可能地帮助前端的开发。

不会有“经典”页面,只有 meebo.com 风格的界面。 javascript + jquery。 (意思是,即使没有静态页面,也很少)。

我注意到了彗星式的服务器推送范式,我真的很想用它做一些概念证明。

您有什么建议或优缺点或与 :

合作的任何经验

Python + Tornado vs Scala + Lift ?

一个选择可能会在 Web 应用程序的其他领域带来哪些其他优势或劣势?

注意:这适用于最多 2 名开发人员,而不是大型分布式和不断变化的团队。

谢谢

【问题讨论】:

  • Lift 带有丰富的 JavaScript DSL,使编写 Ajax/Comet 网络应用程序变得非常容易,您只需要更新页面的某些 sn-ps。 (我没有使用 Tornado 的经验,因此只能发表评论)。
  • 为什么 Comet 服务器推送?对于一个典型的地图应用程序,我想所有的交互都在客户端开始,所以 AJAX 回调应该就足够了,除非有进一步未说明的要求,否则你不需要服务器推送。

标签: python scala comet lift tornado


【解决方案1】:

出于以下原因,我建议使用 Python:

1.调试

我发现在编写 Python 代码时特别有用的是能够轻松调试(参见 pdb 模块),您只需要一个命令提示符和一个文本编辑器来设置断点。 使用 Scala,您可能不得不依赖 IDE 来进行所有调试。

2。易于学习

至于编程语言,我不知道您对这两种语言的体验如何。如果你同时是 Python 和 Scala 的初学者,我个人的看法是你会更快地学习 Python。

【讨论】:

  • 我们都更了解python,但我对Java堆栈有更多的经验。您确实对调试提出了很好的看法,我忘记了这一点。在使用这两种方法评估 PoC 时,我一定会考虑它,谢谢
【解决方案2】:

Scala 是一种非常简洁的语言,使您能够根据需要使用面向对象和函数式范式。

Python 有更多的语法糖,并且信奉“只有一种方法可以做到”的理念。

Scala 通常与 Eclipse/Idea 等 IDE 一起使用——尽管也存在对 vim/emacs 的支持——并且使用 SBT 构建。如果您不习惯这些工具,第一次设置它们可能需要一些努力。

Python 经常与更轻量级的编辑器一起使用。默认情况下,重新运行更新的 Python 脚本更容易。

Lift 真正针对 Web 应用程序,可实现类似桌面的响应和行为。如果你只是想创建一个主页,当然还有其他框架,它们不会像 Lift 那样让你学到很多东西。

【讨论】:

  • 谢谢你们。我来自 Java 桌面和分布式代理领域。我在 Java 方面有丰富的经验,但我以前写过 C#、C、C++ 和 python。 Scala 不会有问题,而且应用程序会比主页更复杂。我想要的是类似桌面的响应能力和行为。
【解决方案3】:

我认为 Python 和 Tornado 是一个很棒的团队,原因如下

  • Tornado 确实是一个 IOLoop,碰巧附带了一个在其上运行的 HTTP 实现(以及一些帮助程序)。

这意味着它附带了您使用它进行 web 开发所需的一切。

这也意味着,如果您发现您需要其他后端服务来帮助扩展您的应用程序,tornado 很可能在该领域很有用。实际上,我在 Tornado 中编写的 后端 服务比前端服务多(但一位同事的体验完全相反——他更面向前端,并且发现与它一起工作也很好) )。有点跑题了,但我们也在 Tornado 之外使用了他们的模板模块并取得了巨大的成功。代码非常模块化,几乎没有相互依赖,因此重用其组件是轻而易举的事。

  • 您可以学习它,并且非常非常快速地了解它。

这需要你一整天的时间才能弄清楚。它的代码很干净而且注释得非常好,而且它还有不错的文档。我能够在大约一周内使用 Tornado 0.2(约 2009 年)制作生产服务,这是以前从未见过的。龙卷风源码很反魔法。

  • 它快速且稳定。负载下。

我不知道它是否是现有的绝对速度最快的东西,但在我使用它的项目中,它承担了一些非常重的负载,无论是在并发用户数量方面,还是在数据传输(例如大容量图像上传),并且 a)在稳定性方面完全坚如磐石,并且 b)足够快,我不必考虑水平扩展它或获得更大的硬件。

  • Python 非常灵活且适应性强。

我经常使用 Python 使用 Tornado 进行 Web 开发(以及其他东西,有时也包括 Django)。但是,我也将它用于与 Web 服务本身完全无关的事情,例如系统管理/自动化任务、报告和数据处理(例如,我用 Python 编写 hadoop 作业)以及标准库模块(os、 sys、shutil、itertools、collections 等)使构建速度非常快。我可以在几乎任何环境中将 Python 用于任何事情,无论输出是通过流、浏览器、胖 GUI 还是控制台。

它周围还有一个很棒的社区,里面有非常聪明的人,他们也非常友好。我无法将它与 scala 社区进行比较,但与许多其他社区相比,Python 很容易成为我的最爱,这与我为何如此痴迷于它有很大关系。我是多语种,但如果我有任何问题,我最想向 Python 社区成员提出这个问题 :)

【讨论】:

  • 谢谢,非常有说服力的评论。我发现您和您的同事已成功使用它,这让我感到放心。随着时间的推移,我可能更倾向于 Python,尽管我最初想到的是 Scala。在赏金结束之前,我仍在等待更多的经验和意见,但绝对是迄今为止我听到的最好的。谢谢:)
猜你喜欢
  • 2012-11-19
  • 2011-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多