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超全资料分享!


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

查看所有标签

猜你喜欢:

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

走出电商困局

走出电商困局

黄若 / 东方出版社 / 2013-11-1 / 38.00

高速增长的时代趋于结束,迅猛运转的加速器早已锈蚀 这是一场转型,更是一次新的机遇 《走出电商困局》是本年度最畅销管理书籍《我看电商》作者黄若的最新力作,意在深度剖析电商行业发展 ,破解电商困局。经历过10年超常规的快速增长,电商行业即将进入较为平稳的发展期。多年来这个行业不断融资不断烧钱却大多无法盈利的怪圈怎样突破?在很多企业面临估值下跌,资金吃紧,用户流失的关键节点,怎样从零售经营的......一起来看看 《走出电商困局》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

在线进制转换器
在线进制转换器

各进制数互转换器

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码