Google App Engine - Go vs. Python推荐?

时间:2011-05-29 08:15:54

标签: java python google-app-engine go

我正在研究编写Google App Engine的第一个应用程序。 C#是我的“本地”语言,所以用Java编写应用程序当然是最符合逻辑的。但是,我是一个极客,并希望抓住机会学习新的东西。

因此它是Python和Go之间的折腾。

  • 您是否有基于经验的强烈偏好(理想情况下是在App Engine上写作)。
  • 如果您来自C#(或其他类似语言),过渡是怎么回事?

6 个答案:

答案 0 :(得分:13)

最近发布的针对App Engine的Go运行时标记为实验性的原因:Go和Go-on-appengine都是新的并处于变化状态。

如果你想在云中试用Go并运行Go应用程序,那就去吧。如果要在App Engine上编写生产应用程序,请使用Python或Java。

答案 1 :(得分:5)

这个问题与他们来的一样主观,但无论如何我都会咬人。

Python更容易学习,拥有更大的开发社区,已经成熟,并且有许多第三方库可供您集成到您的应用程序中。这肯定是胜利者。

那就是说,Go是一种设计精良的语言。远远超过Python。 Go专门设计为允许您在编译时捕获大多数错误,而Python几乎可以掩盖您的错误。 Go代码往往更容易维护。 Go也比Python大大提高效率 - 快几倍甚至几个数量级,取决于你正在做什么。

这两种语言都非常强大,编写代码的速度非常快 - 您可以在很短的空间内完成很多工作。但Go尚未完成,仍处于不稳定状态,核心API仍在不断变化。它有一个相对较小的开发人员基础,很少有“真实世界”的用法示例。尽管如此,即使在开发的早期阶段,它已经被证明是具有明确用例的引人注目的替代方案。

答案 2 :(得分:5)

我最近为GAE做了一个Python应用程序并且来自C#我没有任何问题/能够在几天内修补文档并使用SDK(我之前有过python的经验)。<登记/> Python是非常直观的,它是必要的和OO,可能需要稍微改变C#的思维,但没有任何革命性 - 使用交互式解释器将允许你在一天IMO中提取它。 学习如何使用数据存储区并找出其他GAE特定的API(blobstore,图像,邮件)可能会更多的工作(它的具体情况如事务/组,一致性模式......)但你可以随时找出这些东西/当你在你的应用程序中需要它时。

有一点需要注意 - 最近宣布的定价方案使得Python在GAE ATM上成为一个糟糕的选择,因为它无法处理当前的请求,这导致每个请求有一个“实例”。对于Go ATM也是如此(据我所知)。如果我正确记住邮件列表对话,JVM OTOH每个实例可以同时处理大约20个请求。而且您将按实例/小时付费。如果您计划在不久的将来发布应用程序,这使JVM成为最实用的选择。

同样使用JVM你可以使用Scala(一种新的/酷语言)和一个类似Lift的框架,理论上应该允许你移植你的代码/避免锁定(免责声明:我说理论上因为我只是开始使用Scala并且没有使用Lift的实际经验。

因此,我建议您浏览一下邮件列表,看看其他人对最近的更改有何看法。

答案 3 :(得分:4)

我个人更喜欢Python,因为它比Go 更加成熟。

过去,我很难理解选择不太成熟的技术会有什么风险。

警告,我有偏见推荐Python,因为我喜欢它,但你也应该小心,因为我听到很多人抱怨Google对Python-App-Engine提供了多少支持。人们要求多年来升级Python支持,没有人听到它们。

这就是说,Java可能是一个更明智的选择,特别是因为你习惯C#

答案 4 :(得分:3)

Go仍然是GAE的实验 - 所以也许不是学习新语言的最佳平台。 Python绝对是一个不错的选择。

考虑到一种新语言不要忘记,通过选择Java,您可以获得JVM,它不仅允许Java代码,还允许使用以下语言:Scala,Grails,Clojure,JRuby等许多其他语言。

答案 5 :(得分:1)

Python长期以来一直支持GAE - 大量经过测试的信息,基础设施等.Go是GAE的新手。

我会更多地决定语言水平。来自C#,选择Python你会更加“高级”,而选择Go更多地进入“低级”方向。更低层次的控制,也更加关注。如果您对应用程序开发感兴趣,请选择Python;如果更关注系统开发,请选择Go。对我来说,一个重要的方面是Go内置了演员风格的并发,但我不知道GAE对它的支持程度如何。