第一句子大全,网罗天下好句子,好文章尽在本站!

为什么Go会是我最喜爱的语言?

时间:2019-09-15

点击上方CSDN ,选择置顶公众号关键时刻,第一时间送达!作者丨Michael Stapelberg翻译 丨 Vincent译者注:现在开发语言五花八门,每门语言都有

友情提示:本文共有 3095 个字,阅读大概需要 7 分钟。

点击上方“CSDN ”,选择“置顶公众号”

关键时刻,第一时间送达!

作者丨Michael Stapelberg

翻译 丨 Vincent

译者注:现在开发语言五花八门,每门语言都有自己的优缺点,作者在本文介绍了Go语言的有点,以及之所以成为最爱的原因。以下为译文。

我努力尊重每个人的个人偏好,因此一般我都不会参与讨论类似于什么是最好的编程语言、文本编辑器或操作系统这样的话题。然而,最近很多人问我为什么喜欢用Go语言,所以这里有一篇连贯的文章来填补我临时的个人漫无边际的空白。

背景介绍

我曾经使用C语言和Perl语言完成过一些大型项目。Python、Ruby、C++、CHICKEN Scheme、Emacs Lisp、Rust和Java(只用过开发Android)这些语言我也都使用过。我还了解一点点的Haskell、PHP、Erlang和Lua。在更早之前,我还用过Delphi开发过一些程序。

2009年当Go语言第一次发布的时候,我曾经稍微关注过。而真正开始使用是在2012年发布1.0版本的时候,1.0版本的主要特征就是Go-1兼容性保证。现在生产环境上面还有一些代码是我在2012年的时候写的,很多都没有改过。

1.清晰度

格式化

按照惯例,Go代码可以使用gofmt工具进行格式化。以编程方式格式化代码并不是一个新概念,但是与之前不同的是gofmt支持规范化风格。

将所有代码格式化成相同的方式使代码变得更容易阅读;看起来也更熟悉。这不仅有助于阅读标准库或Go语言编译器,而且在处理许多代码库时也会有很多好处――想想Open Source或其他的大公司就知道了。

此外,在代码评审过程中自动格式化也可以节省大量的时间,因为它消除了以前检查代码的维度:现在只需要让持续集成系统验证gofmt不会产生差异就可以了。

有趣的是,由于在保存文件时编辑器应用了gofmt,这也改变了编写代码的方式。我曾经尝试寻找一些格式化工具,可以查找代码的错误。而现在我可以很快的把我的想法转换成代码,因为gofmt将会让代码变得很漂亮(例如点击Format就可以将我输入的内容进行格式化)。

高质量的代码

我使用了相当多的标准库(文档,源代码),如下所示。

到目前为止,我读过的的标准库代码质量都是非常高的。

例如image/jpeg包:我不知道JPEG是如何工作的,但是一边查看Wikipedia JPEG文章,一边查看image/jpeg代码就可以很容易的理解了。如果这个包再多一些注释的话,我就可以把它作为教学的最佳案例了。

观点

我很赞同Go语言社区的许多观点,例如:

变量名在缺省情况下应该较短,并且在使用名称时,它会变得更具描述性。

保持较小的依赖关系树(在一个合理的程度上):少量的复制比一个小的依赖要好。

引入抽象层是有代价的。Go代码通常相当清晰,代价是有时会重复一些。

参见CodeReviewComments和Go Proverbs。

很少有关键字和抽象层

Go语言的规范只列出了25个关键字,我可以很容易地记住这些关键字。

内置函数和类型也是这样的。

根据我的经验,少量的抽象层和概念可以使语言更易于理解,而且新人可以更快的上手。

说到这一点,我对Go规范的可读性感到惊讶。它似乎是针对程序员(而不是标准委员会?)。

2.速度

快速反馈/低延迟

我喜欢快速反馈:我喜欢那些快速加载的网站和流畅的用户界面,无论什么时候,与功能强大的工具相比,我更愿意选择速度更快的工具。大型web属性的发现证实了很多人都是这么认为的。

Go编译器的作者们尊重我对低延迟的渴望:编译速度对他们来说很重要,在进行新的优化时,是否会减慢编译速度也成为了一个需要考虑的范围。

我的一个朋友以前没有使用过Go语言。在使用goget安装RobustIRC桥之后,他们觉得Go语言肯定是一门解释性语言,我必须纠正他们:不是的,Go编译器就是这么快。

大多数Go工具都不例外,例如gofmt或goimports都是非常快的。

最大的资源使用情况

对于批处理应用程序(相对于交互式应用程序),充分利用可用资源通常比低延迟更重要。

很容易配置和更改一个Go程序来利用所有可用的IOPS、网络带宽或计算。作为一个例子,我写了关于填充一个Gbps链接,并优化了debiman来利用所有可用的资源,减少了它的运行时间。

3.丰富的标准库

Go标准库提供了有效地使用公共通信协议和数据存储格式/机制的方法,如:ip、HTTP、JPEG、SQL……

Go的标准库是我所见过的最好的。我认为它是组织有序的、干净的、体积小、全面的:我经常发现可以用标准的库来编写合理的程序,外加一两个外部包。

特定于领域的数据类型和算法(一般而言)不包括在标准库之外,例如golang.org/x/net/html。在进入标准库之前,golang.org/x名称空间还充当了新代码的登台区域:Go-1兼容性保证排除了任何突发的更改,即使它们显然是有价值的。一个突出的例子是golang.org/x/crypto/ssh,它必须打破现有代码以建立更安全的缺省值。

4.工具

我使用go get工具进行下载、编译、安装和更新Go包。

使用的所有Go代码库都使用内置的testing工具。这不仅在简单快速的测试中得到了结果,而且在覆盖率报告中也很容易得到。

每当一个程序使用比预期更多的资源时,我就启动了pprof。请参阅这篇golang.org的博客文章,关于pprof的介绍,或者关于优化Debian代码搜索的博客文章。导入net/http/pprof 包 后,你可以在运行时配置服务器,无需重新编译或重新启动。

交叉编译就像设置GOARCH环境变量一样简单,例如:GOARCH=arm64,目标是树莓派3。值得注意的是,工具也可以跨平台工作!例如,我可以从amd64电脑中剖析档案gokrazy :go tool pprof ~/go/bin/linux_arm64/dhcp http://gokrazy:3112/debug/pprof/heap。

godoc以纯文本形式显示文档,或通过HTTP提供服务。godoc.org是一个公共的实例,但是我运行一个本地的应用程序,可以离线使用,也可以在尚未发布的包中使用。

请注意,这些是使用该语言的标准工具。从C开始,上述每一项都将是一项重要的成就。我们认为他们是理所当然的。

开始

希望我已解释清楚为什么喜欢和Go语言一起工作。

如果你开始感兴趣了,可以看看初学者的资源,这篇文章里面描述了什么时候应该加入到Gophers slack频道。见https://golang.org/help/。

警告

当然,没有任何一个编程工具是完全没有问题的。鉴于本文解释的是为什么Go是我最喜欢的编程语言,所以它介绍的都是Go语言积极的一面。不过,我还是会提出一些问题:

由于Go包没有提供稳定的API,你可能需要使用一个特定的、可以工作的版本。最好的选择是dep工具。

惯用的Go代码并不一定会转化为最高的性能机器代码,而运行时则以(很小的)成本为代价。我发现在性能缺乏的罕见情况下,可以求助于cgo或汇编程序。如果你的域是硬实的应用程序或其他性能非常关键的代码,那么可能会有所不同。

我上面提到Go标准库是我所见过的最好的,但这并不意味着它没有任何问题。例如通过一个标准库最古老的包――go/ast,以编程的方式修改代码时,处理注释的方式会变得非常复杂。

――上周热闻回顾――

程序员有什么错?凭什么杀我祭天

Google 工程师一天写多少代码?

“好吃的”奥利奥 Android 8.0 正式发布

编程语言寿命预测

本文如果对你有帮助,请点赞收藏《为什么Go会是我最喜爱的语言?》,同时在此感谢原作者。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
相关阅读
去缅甸买翡翠 语言不通不说 你觉得你能买到真货吗?

去缅甸买翡翠 语言不通不说 你觉得你能买到真货吗?

...在明末清初,这种料子被大量进贡至清朝,受到了慈禧的喜爱。于是这种玉石便在我国一发不可收拾的火了起来,变成了中国最火热的首饰之王。现如今在故宫当中还摆放着大量的翡翠文物,这种玉石不仅是在过去受到人们的喜...

2020-12-15 #经典句子

全世界都在说中国话 运动界汉语作为通用语言

全世界都在说中国话 运动界汉语作为通用语言

...通。说起汉语来甚至比张本智和还流利,也是深受球迷的喜爱。在本次联盟中仅有2位代表不会用中文沟通。他们分别是德国选手波尔和尼日利亚选手阿鲁纳。不过波尔此前就是前国乒选手、奥运参赛运动员许增才的弟子,并且...

2023-10-24 #经典句子

蒙学馆丨《幼学琼林》的异想世界·天文(1-3):读懂天象 读懂人世的语言

蒙学馆丨《幼学琼林》的异想世界·天文(1-3):读懂天象 读懂人世的语言

...跟父子俩都共事过的贾季说父亲赵衰像冬天的暖阳,让人喜爱。而其子赵盾就像夏天的烈日,让人畏惧。齐妇含冤,三年不雨;邹衍下狱,六月飞霜。在古代齐地楚州有个很有名的窦娥被地方官屈打成招蒙受冤屈的故事,被伟大...

2017-01-06 #经典句子

街舞开播太可了!王一博用舞蹈传递语言 用态度表达爱与和平

街舞开播太可了!王一博用舞蹈传递语言 用态度表达爱与和平

...你们如何看待呢,我只想说的是,他是对old school绝对的喜爱,更是对强者的足够尊重。用舞蹈来传递语言,让灵魂融入到舞蹈中,天生的无感跟绝对的实力,都是在不断地打磨中锻炼出来。心之所向,是王一博对大神级舞者的...

2023-09-19 #经典句子

如何在语言转型的关键性阶段培育一个4岁的孩子?

如何在语言转型的关键性阶段培育一个4岁的孩子?

...记起一些举止。他会不虚假思考地说“请”和“感谢”。喜爱听谜语和笑话。/婴儿喜爱听谜语和笑话,也喜爱听情节简单的长篇故事。我会边听边做4岁时,我的宝宝会立即迁移注意力。当我5岁的时候,我将是“一个思想和两个...

2023-06-29 #经典句子

语言情节能用俏皮可爱形容 这本古言小说解决了我最近的书荒

语言情节能用俏皮可爱形容 这本古言小说解决了我最近的书荒

...殿下的注意,抱紧睿王的大腿,受尽其宠爱,获得太后的喜爱。男主最初把女主当做妹妹来养,一养就是四年,着人细心照顾幼小的女主,作者更是笔墨浓重的渲染了男主对女主的偏爱。男主身为皇子,不得不上战场历练,于是...

2013-11-10 #经典句子

提升语言 增强自信 强化技能 游戏对孤独症儿童有多重要?

提升语言 增强自信 强化技能 游戏对孤独症儿童有多重要?

...脑部发育障碍,但他们首先同样是儿童,因而对游戏的的喜爱和需求与普通儿童并无多大差别。不可否认的是,由于孤独症儿童自身的社交沟通障碍及有限兴趣和刻板行为,他们中的多数人都无法像普通儿童一样参与到游戏中,...

2024-01-09 #经典句子

诗歌的语言可以更简单吗?伟大的文学老师苏轼有话要说!

诗歌的语言可以更简单吗?伟大的文学老师苏轼有话要说!

...评委点评,将节目中的知识浅显、系统地凝结在书中,供喜爱节目、喜爱诗词的读者翻阅、梳理。此外,书中还添加了与每场主题相关的画作和同主题诗词拓展,可见古人留下的瑰宝,节目中展现的只是万分之一呢!除了文化上...

2023-10-01 #经典句子