Google App Engine - Go vs. Python推荐?

isN*_*247 11 python java google-app-engine go

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

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

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

Nic*_*son 13

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

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

  • *Go*已经过了测试版,但截至2012年8月24日,GAE*中的*Go支持仍标记为"实验性". (3认同)
  • 截至2012年3月28日,GO现已退出测试版:http://blog.golang.org/2012/03/go-version-1-is-released.html (2认同)

tyl*_*erl 5

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

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

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

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

  • *"Go代码往往更容易维护."* - 你有证据吗?! (7认同)
  • "Go是一种非常精心设计的语言.远远超过Python" - 尽管你的POV免责声明,但事实上这听起来很事实,这是非常有争议的.我认为两者都是设计良好的语言 - 静态与动态是完全不同的论点. (3认同)
  • "Go是一种非常精心设计的语言.远远超过Python." - 这完全是胡说八道,你对Thompson和Pike权威的争论甚至更糟.这里有一个线索:*你*不是一位经验丰富的语言设计师,所以你不能很好地判断. (3认同)
  • @Jim Balter""你对Thompson和Pike权威的争论甚至更糟.这里有一个线索:你不是一个经验丰富的语言设计师,所以你不能很好地判断."" - 反驳的方式你自己!""Scala. - Jim Balter"""好的,你对设计精美的语言一无所知,我们得到它. (3认同)

Raf*_*tić 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并且有没有实际的升力经验).

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

  • Python 2.7支持线程并发:https://developers.google.com/appengine/docs/python/config/appconfig#Using_Concurrent_Requests (2认同)