Google App Engine - Go和Python哪个更推荐?
我正在考虑写我的第一个应用程序,使用的是Google App Engine。我的母语是C#,所以用Java来写这个应用程序当然是最合适的选择。但是,我是个技术爱好者,想借这个机会学点新东西。
所以我在Python和Go之间纠结。
- 你有没有基于经验(最好是在使用App Engine的情况下)对这两种语言有强烈的偏好?
- 如果你是从C#(或者其他类似的语言)过来的,转变的过程怎么样?
6 个回答
这个问题有点主观,但我还是来聊聊。
Python 学起来比较简单,开发社区也很大,发展得很成熟,还有很多第三方库可以用来集成到你的应用里,绝对是个不错的选择。
不过,Go 语言设计得非常好,远比 Python 更加优秀。Go 是专门设计来让你在编译时就能发现大部分错误,而 Python 则以隐藏错误而闻名。Go 的代码通常更容易维护。而且,Go 的效率比 Python 高得多——在某些情况下,速度可以快好几倍,甚至更多,这取决于你在做什么。
这两种语言都很强大,写代码的速度也很快——你可以在短时间内完成很多事情。但 Go 还没有完全成熟,很多核心的 API 还在变化,开发者相对较少,实际应用的例子也不多。尽管如此,即使在发展的早期阶段,Go 已经展现出作为一种有吸引力的替代选择,并且有明确的应用场景。
我最近做了一个Python应用程序,用在Google App Engine(GAE)上。因为我之前是用C#的,所以我几天就能上手,主要是看文档和玩SDK(我之前有一点Python的基础)。
Python挺直观的,它既可以用命令式编程,也支持面向对象的编程。虽然从C#转过来可能需要稍微调整一下思维,但并不是特别难。我觉得用交互式解释器的话,一天就能学会。至于如何使用数据存储和了解GAE特有的API(比如blobstore、image、mail),可能会稍微复杂一点(涉及到事务、组、数据一致性模式等),不过你可以在实际开发中慢慢摸索,遇到需要的时候再去学习。
有一点需要注意的是,最近公布的定价方案让Python在GAE上变得不太划算,因为它目前无法处理请求,这导致每个请求都需要一个“实例”。我知道Go也是这样。相对而言,JVM(Java虚拟机)每个实例可以处理大约20个同时请求,如果我没记错的话。这意味着你是按实例每小时收费的。如果你打算在不久的将来发布你的应用,选择JVM会更实际。
另外,使用JVM的话,你还可以尝试Scala(一个新颖又酷的语言)和像Lift这样的框架,理论上可以让你更方便地迁移代码,避免被锁定(不过我得声明一下,我刚开始接触Scala,对Lift没有实际经验,所以说“理论上”)。
所以我建议你去看看邮件列表,看看其他人对最近变化的看法。
最近发布的Go运行环境在App Engine上被标记为实验性,这是有原因的:因为Go和Go-on-appengine都是新的,并且还在不断变化中。
如果你想尝试一下Go语言和在云端运行Go应用,那就去试试吧。但如果你想在App Engine上写一个正式的应用,建议使用Python或Java。