Python+;龙卷风vs斯卡拉+;举起

Python+;龙卷风vs斯卡拉+;举起,python,scala,comet,lift,tornado,Python,Scala,Comet,Lift,Tornado,我想启动一个基于谷歌地图的网络应用程序。 我最初的想法是,在第一阶段,重点应该放在前端,后端应该易于编写和原型化,并且应该尽可能帮助前端的开发 没有“经典”页面,只有meebo.com风格的界面。javascript+jquery。(也就是说,如果在所有静态页面上都没有,那么数量很少) 我注意到了comet风格的服务器推送模式,我真的很有兴趣用它做一些概念验证 您是否对以下方面有任何建议或优缺点或经验: Python+TornadovsScala+Lift 在web应用程序的其他领域,选择可能带

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

没有“经典”页面,只有meebo.com风格的界面。javascript+jquery。(也就是说,如果在所有静态页面上都没有,那么数量很少)

我注意到了comet风格的服务器推送模式,我真的很有兴趣用它做一些概念验证

您是否对以下方面有任何建议或优缺点或经验:

Python+TornadovsScala+Lift

在web应用程序的其他领域,选择可能带来哪些其他优势或劣势

注意:这是针对最多2个开发人员的,不是一个大型的分布式和不断变化的团队


谢谢

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

1。调试

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

2。易于学习


至于编程语言,我不知道你对这两种语言都有什么经验。如果您都是Python和Scala的初学者,我个人的观点是,您将更快地学习Python。

Scala是一种非常干净的语言,使您能够使用您认为合适的面向对象和函数范例

Python有更多的语法糖分,并且信奉“只有一种方法可以做到这一点”的哲学

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

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


Lift真正针对的是web应用程序,支持类似桌面的响应和行为。如果你只是想创建一个主页,肯定还有其他框架,它们不能让你像使用Lift那样学到很多东西。

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

  • Tornado实际上是一个IOLoop,它碰巧附带了一个在其上运行的HTTP实现(以及一些帮助程序)
这意味着它提供了您使用它进行web开发所需的一切

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

  • 你可以学习它,并且非常、非常、非常快地了解它
你要花一整天的时间才能弄清楚。它的代码是干净的,并且令人难以置信地得到了很好的注释,而且它还有很好的文档。我能够在大约一周内制作出一个龙卷风0.2(约2009年)的制作服务,这是我以前从未见过的。龙卷风的源代码非常反魔法

  • 它快速、稳定。负载不足
我不知道它是否是目前存在的最快的东西,但在我使用过的项目中,它承担了一些非常沉重的负载,无论是并发用户的数量,还是数据传输(例如,大容量图像上传),它的稳定性都非常稳固,和B)足够快,我没有必要考虑水平缩放或获取更大的硬件。
  • Python非常灵活,适应性强
我经常使用Python进行web开发,使用Tornado(有时还包括Django)。但是,我也将它用于与web服务本身完全无关的事情,如系统管理/自动化任务、报告和数据挖掘(例如,我用Python编写hadoop作业)以及其他事情,其中标准库模块(os、sys、shutil、itertools、集合等)使构建速度非常快。我几乎可以在任何环境中使用Python处理任何事情,无论输出是通过流、进入浏览器、进入胖GUI还是控制台


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

谢谢你的评论。我来自Java桌面和分布式代理领域。我对java有丰富的经验,但是我以前编写过C,C,C++和Python。Scala不会是一个问题,而且应用程序将比主页更复杂。像桌面一样的响应能力和行为是我想要的。我们都更了解python,但我对Java堆栈有更多的经验。关于调试,你说得很好,我忘了。我肯定会在PoC的评估过程中考虑这两种方法,谢谢你们,非常有说服力的评论。我感到欣慰的是,你和你的同事成功地使用了它。随着时间的推移,我可能更倾向于Python,尽管我最初想到的是Scala。我还是