加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

再见,Python!你好,Go语言

发布时间:2019-02-05 01:43:07 所属栏目:建站 来源:AI前线小组 译
导读:Go 说话降生于谷歌,由计较机规模的三位宗师级大牛 Rob Pike、Ken Thompson 和 Robert Griesemer 写成。因为身世王谢,Go 在降生之初就吸引了大批开拓者的存眷。降生十年以来,已经涌出了许多基于 Go 的应用。就在不多久之前,知乎也舍弃了 Python,转 用
副问题[/!--empirenews.page--]

再会,Python!你好,Go说话

Go 说话降生于谷歌,由计较机规模的三位宗师级大牛 Rob Pike、Ken Thompson 和 Robert Griesemer 写成。因为身世王谢,Go 在降生之初就吸引了大批开拓者的存眷。降生十年以来,已经涌出了许多基于 Go 的应用。就在不多久之前,知乎也舍弃了 Python,转 用 Go 重构保举体系。

谷歌前员工 Jake Wilson 以为,比起各人认识的 Python,Go 说话着实有许多精良特征,许多时辰都可以取代 Python,他已经在许多使命中行使 Go 说话更换了 Python。那么 Go 说话到底有着什么样的奇异魅力?它有哪些胜于 Python 的处所呢?让我们一路来相识一下吧!

再会,Python!你好,Go说话

身世王谢的 Go 说话

对付一门只有十年汗青的新说话,Go 的成长势头相等迅猛,容器界的扛把子 Docker 就是用 Go 写的,海内也有不少团队普及行使 Go。克日,HackerRank 在社区提倡了 措施员手艺观测,来自 100 多个国度、高出 70000 名开拓者参加个中。观测功效表现,2019 年,措施员最想进修的编程说话 Top 3 别离是 Go、Kotlin 和 Python,个中 Go 以 37.2% 的比例排在首位。

再会,Python!你好,Go说话

但 Go 要想撼动编程界的常青树 Java 二十多年的职位无疑难度颇大。据 HackerRank 数据表现,2018 年,Java 在开拓者最受接待的编程说话排行榜中如故排名第 2,Python 排名第 4,Go 排名第 13,间隔第一名 JavaScript 尚有不小的差距。

但对本文作者 Jack Wilson 来说,Go 说话固然“岁数尚小”,但已经拥有许多很是优越的特征。

Go 说话到底亏得哪?

在许多使命上,我已经用 Go 说话取代了 Python,举几个例子:

  • 处理赏罚储存在 S3 上的云端日记
  • 在 S3 上的 bucket 和 / 或 region 之间移动 TB 级别巨细的文件
  • 匹配当地的数据库记录和 S3 上的文件,以担保文件处于同步状态

这些使命大多是一次性的,以是行使剧本说话操纵就会较量吻合。这些使命必要快速地编程,而代码用过一次一样平常就舍弃了。一样平常来说,这种使命的需求都较量新奇、较量专,其代码很少必要复用。下面就来先容一下,针对这种使命为什么可以用 Go 说话来更换 Python。

拥有编译器很利便

我常常在写 Python 时犯很初级的错误。我会给变量或函数命错名,或向它们转达错误的参数。这样的错误用调试器材可以找出一部门,但这种器材一样平常必要专门配置。我从来没很利便地设置过 pylint,并且我也不喜好用那些很重的、设置起来更贫困的 IDE。最惨的环境是,你也许会不警惕打错变量名,而这种错误又不太轻易发明。你的剧本也许会跑好几个小时才赶上这个错误,然后统统都瓦解了,你又得从新开始跑这个剧本。这种错误大部门都可以靠单位测试检出,但单位测试很少能包围 100% 的代码,并且我并不想挥霍时刻去给一个只用一次的剧本写单位测试。而带编译器的说话就可以办理以上全部题目。编译器可以检测出你犯的全部初级错误。出于这点缘故起因,我在写长达几百行的代码时,更倾向于行使 Go 这类说话。

开拓速率

然而,必要编译的说话的一个弱点是,一样平常你的开拓速率会降落。这点在 C/C++ 和 Java 等说话上浮现得尤其明明。而 Go 是一个很是简朴的说话,我发明它的开拓速率并没有被拖慢几多。不要误会,我的意思并不是说它比 Python 还快,而是想说,用 Go 说话没有比 Python 慢许多,一样平常到达行使 Python 开拓速率的 85% 照旧没题目的。相对付拥有编译器能停止的那些初级错误来说,我以为捐躯 15% 的开拓速率照旧很值的。

更好的并行性

你也许已经知道,Go 说话就是为并行而生的。在我的团队里常常会必要并行措施,由于我们要在 S3 上操纵我们数据库中大量的数据。假如该使命是 IO 麋集型的(现实上许多使命都是),我们就可以很轻易地陈设 Python 线程。但假如使命是 CPU 麋集型的,用 Python 就较量不利便了,由于有全局表明器锁的存在。我很是享受在 Go 说话中简朴代码不消修改就能直接多线程运行的直率感。不知你在 Python 中有没有碰着过这种题目:直接复制粘贴的多线程代码却完全不事变。在 Go 说话中就不会有此题目。

陈设简朴

我较量喜好把全部依靠放在单个二进制文件里。我常常在 EC2 处事器上运行本身的剧本,好让情形越发靠近我们在 S3 上的处事器。假如用 Python 的话,我必要担保全部必要的包都在处事器上装好,并且我的同事不能在处事器上装任何也许发生斗嘴的包。假造情形可以办理大部门题目,但我照旧认为用 Go 说话更利便。我一样平常是在 Mac 和 Linux 上交错编译我的代码,将其拷贝到长途处事器上,然后就可以任其运行了。我的代码所必要的全部依靠都在一个二进制文件里。

气魄威风凛凛同等

一开始,Go 说话的名目化器材 gofmt 其实是让我抓狂,尤其是它在代码缩进时要求行使 tab 键而不是空格键。我认为这的确是疯了。可是我用了一段时刻后,就开始“真香”了。写代码时,我在名目上可以天马行空,名目化器材会帮我完成统统。我的全部代码气魄威风凛凛都是同等的,纵然我是在写差异的项目。这是由于名目化是尺度 Go 器材的一个特征。但我假如想在 Python 中实现这一点,就要费些劲儿了。我必要正确地设置 pylint 器材,并要担保在每一个项目中都行使它。

更便捷的器材

Gofmt 只是 Go 说话浩瀚器材中的一个小例子。全部我喜好用的编辑器——VSCode,vim 和 Sublime Text 中,都有 Go 说话响应的扩展,让我可以或许利便地享受到 Go 器材的利益。这样,我就能得到写 Java 时的那种智能体验,却不必要真正行使一个 IDE。我在用 Python 时从未得到过这种体验。

Go 说话虽然也有弱点

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读