Go 很好,为什么我们不使用它?

栏目: Python · 发布时间: 7年前

内容简介:Go 很好,为什么我们不使用它?

原文:Go is Great, So Why Aren't We Using It?

任何在 Zapier或者听过我周五快速演讲的人都可以证明,我认为 Go 是一个很棒的编程语言。在这篇文章中,我将分享一下为什么我认为它很棒,使用它的一些缺点,以及为什么它还不是我们 Zapier堆栈中的一部分。

Go是 Google开发的编程语言,旨在帮助大型开发团队成功构建和维护高性能软件项目。它于 2009年起开源 ,并于 2012年发布 Go 1.0 。此后,许多组织,包括像 Docker 和 Hashicorp这样的突出的公司已经开始在项目中使用该语言取得圆满成功。

我写第一行 Go程序大概是在 4年前。一开始,我不得“要领”。这个语言似乎很有趣,程序员们都在吹嘘 Go的好,但我对这些好处并没有什么概念。直到我把一个 Python 的真实项目移植到 Go,真实世界的需求才让我欣赏到 Go的美妙。

我移植的项目是使用 Redis 实现的一个非常小的 REST API。它只是一个简单的缓存系统,把“不活动的”数据移动到磁盘上,而把“活动的”数据保留在 Redis中。我需要一个简单的方法来分发这个 API并配置 Redis服务器,使其不会消耗大量的内存,并保持快速。使用 Go后,发现它的 Spoiler Alert非常适合这样的需求。

我认为 Go是伟大的编程语言是很多原因。要是现实世界需要,我能够在几天内对一个生产系统进行原型设计、测试和部署,而且在每秒能处理比原来多 5倍请求的情况下,CPU和内存的开销还都很小。

这是因为 GO很简单,只有一个非常小(但是很全)的标准库。我能够在几个小时内掌握绝大部分语言概念,内嵌包,和常用语句。

Zapier一开始是一个 Python商店。当上面所列的内容只有部分能在 Python中实现的时候,实现了整个列表的 Go显得非常吸引人。我们每小时要处理数以千计的 API调用,性能对于我们来说非常重要。那么为什么不换用 Go呢?

没有完美的编程语言;一切都需要权衡。Go在编译速度和应用程序性能上很优秀,但这是以 程序员 的生产效率作为代价的。

在权衡的过程中,最有争议的是 Go提供了静态类型系统,但却没有泛型。这就是说,容器类数据结构除列表和哈希表之外,不能摆脱对未知类型指针( interface{}类型)的类型转换。

Go还有一些不利于编程的东西:

使用第三方代码会让依赖管理变得困难。

•类型系统很简单,但与经典的面向对象和继承模型有很大不同。它非常像 C。结构 +接口。没有类。没有继承。

•没有规范的异常或 try/catch。这可能被认为是一种正面的架构,但 Go经常让开发者们跌进其 panic(严重错误)/recover(恢复)系统。

•有些人认识垃圾回收并适不用于像 Go这样的系统编程语言。我是喜欢垃圾回收的那类人。

Go!用在哪里比较好?

Go非常适合系统编程。它被吹捧为中级语言,介于像 C这样的低级语言和像 Python这样的高级语言之间。这里列了一些 Go适合构建的应用类型:

命令行应用

•网络服务

• Daemons(守护进程)

• 数据库

但是,甚至有人用它做这些事情:

嵌入式开发

•轻量级的微服务

•基础设施

Go足够灵活可以解决大多数问题,甚至有时候会比其它语言做得更好。这里有一个使用 Go的公司列表,让人印象深刻,它包括 Docker、Cloudflare、Dropbox、Intel、Hashicorp,当然,还有 Google。

Zapier是构建于 Python和 Django之上庞大的单体应用。它有大量使用 Python完成的关键点,很难在在服务运行的时候无缝切换到其它编程语言,虽然这并不是不可能!

我们在非常(非常!)早的阶段把整个应用拆分成微服务架构。这些服务是按需执行。然而,一旦我们发现某个系统达到临界状态需要高性能重写的时候,我认为 Go是一个选择。我们会遵循一个流程:

1、衡量当前系统并确定瓶颈。

2、针对这个瓶颈制定 Go的解决方案。

3、在产品中把这个解决方案作为 canary service进行衡量。

4、启动所有事情

5、(废除并)替换

采用某种编程语言是个困难的决定,Go并不是我们唯一考虑的语言。列表中还有别的一些语言,同样存在着优点/缺点:

Elixir (在 Erlang VM中)

• Rust

• Python 3 (我知道很疯狂!)

• PyPy

• Cython

综上所述:

Go是个非常棒的编程语言,我们可以用它来构建高性能系统。在像大多数语言那样进行权衡的时候,重点考虑的是稳定和易于使用。Go学起来很容易,多数程序员在使用数周后都能使用它高效地编程。

1 百余篇大数据文档下载!

2 超全数据分析资料免费下载!(包括SQL,R语言,SPSS,SAS,python,数据分析和数据挖掘)

3 清华大学数据科学院讲座内容集锦免费下载!

4 Python超全资料分享!


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Art of Computer Programming, Volume 3

The Art of Computer Programming, Volume 3

Donald E. Knuth / Addison-Wesley Professional / 1998-05-04 / USD 74.99

Finally, after a wait of more than thirty-five years, the first part of Volume 4 is at last ready for publication. Check out the boxed set that brings together Volumes 1 - 4A in one elegant case, and ......一起来看看 《The Art of Computer Programming, Volume 3》 这本书的介绍吧!

SHA 加密
SHA 加密

SHA 加密工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具