为什么go会是我最喜爱的语言 -pg电子游戏网站

1顶
0踩

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

2017-08-28 11:29 by 副主编 jihong10102006 评论(0) 有8262人浏览
go
引用
原文:
作者:michael stapelberg
翻译:vincent

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

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

背景介绍

我曾经使用c语言和perl语言完成过一些大型项目。python、ruby、c 、chicken scheme、emacs lisp、rust和java(只用过开发android)这些语言我也都使用过。我还了解一点点的haskell、php、erlang和lua。在更早之前,我还用过开发过一些程序。

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

1.清晰度

格式化

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

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

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

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

高质量的代码

我使用了相当多的标准库(,),如下所示。

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

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

观点

我很赞同go语言社区的许多观点,例如:
  • 在缺省情况下应该较短,并且在使用名称时,它会变得更具描述性。
  • 保持较小的依赖关系树(在一个合理的程度上):。
  • 引入抽象层是有代价的。go代码通常相当清晰,代价是有时会重复一些。
  • 参见和。

很少有关键字和抽象层

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

和也是这样的。

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

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

2.速度

快速反馈/低延迟

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

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

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

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

最大的资源使用情况

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

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

3.丰富的标准库

提供了有效地使用公共通信协议和数据存储格式/机制的方法,如: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。请参阅这篇,关于pprof的介绍,或者。导入net/http/pprof 后,你可以在运行时配置服务器,无需重新编译或重新启动。

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

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

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

开始

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

如果你开始感兴趣了,可以看看,这篇文章里面描述了什么时候应该加入到gophers slack频道。见。

警告

当然,没有任何一个编程工具是完全没有问题的。鉴于本文解释的是为什么go是我最喜欢的编程语言,所以它介绍的都是go语言积极的一面。不过,我还是会提出一些问题:
  • 由于go包没有提供稳定的api,你可能需要使用一个特定的、可以工作的版本。最好的选择是工具。
  • 惯用的go代码并不一定会转化为最高的性能机器代码,而运行时则以(很小的)成本为代价。我发现在性能缺乏的罕见情况下,可以求 助于或汇编程序。如果你的域是硬实的应用程序或其他性能非常关键的代码,那么可能会有所不同。
  • 我上面提到go标准库是我所见过的最好的,但这并不意味着它没有任何问题。例如通过一个标准库最古老的包——go/ast,以编程的方式修改代码时,。
1
0
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 在熟悉go之后,我虽没有停下脚步,也去体验了d语言,但几乎立即就放弃了,它的设计还是太复杂。 就说说go吧。它的好其实也就两个字——简洁! 看很多朋友的留言都觉得这些”少个括号、少个分号”之类的东西没什么...

  • 作为网络安全初学者,会遇到采用go语言开发的恶意样本。因此从今天开始从零讲解golang...这些年我学过各种编程语言,从最早的c语言到c ,再到c#、php、java,再到ios开发、python,到最新的go语言,学得是真的杂。有时

  • 我为什么放弃go语言?有好几次,当我想起来的时候,总是会问自己:这个决定是正确的吗?是明智和理性的吗?其实我一直在认真思考这个问题。开门见山地说,我当初放弃go语言,就是因为两个“不爽”:第一,对go语言...

  • go编译速度快的几个原因使用import引用管理方式没有模板编译负担1.5版本后编译器的优化语言本身关键字很少。

  • go语言(或 golang)起源于 2007 年,并在 2009 年正式对外发布。go 是非常年轻的一门语言,它的主要目标是“兼具 python 等动态语言的开发速度和 c/c 等编译型语言的性能与安全性”。go语言是编程语言设计的又一...

  • 区块链的火热也带动了go语言开发者的突增,那凭什么go语言会成为最主要的区块链构建语言之一。我认为这得益于go语言的性能、抽象度、简单性和现代性。并且,当下最成功、最流行的go-ethereum和fabric都是使用go语言...

  • go 是一门非常不错的编程语言,并且逐渐取代 python 成为很多人的首选语言。但它也有一些缺点让很多开发者忍不住吐槽,比如它...然而,我在公司的 slack 编程频道中对 go 的抱怨却越来越多(猜到我是做啥了的吧?)...

  • 之前想了好久不知道要写啥,其实之前有一篇文章已经写了一半,但是觉得不好,就束之高阁了,本来想写一个从零开始的 go 语言的系列文章,但是觉得没有必要,因为零基础的参考资料太多了。 最后,我决定还是写我当前...

  • 我喜欢 go. 常用它实现各种功能(包括在写本文时的这个博客). go 很实用,但不够好。 不是说它有多差, 只是没那么好而已。一门编程语言, 也许会用上一辈子, 所以选择的时候要注意。本文专注于 go 的各种吐槽。 ...

  • spago是一个用go语言编写的美观且可维护的机器学习库,旨在在自然语言处理任务中支持相关的神经网络体系结构。spago如果您喜欢该项目,请★在此存储库中加注星标以显示您的支持! go用go编写的美观且可维护的机器...

  • 自 2010 年 5 月起,谷歌开始将 go 语言投入到后端基础设施的实际开发中,作为其母公司,内部有很多我们耳熟能详的应用都有使用 go 语言,比如谷歌地图、google cloud、y...

  • 大家周末好,我是煎鱼。最近有个朋友在学习 go,各种网上冲浪。他给我分享了一位资深程序员 liigo 关于 go 的文章,内容偏个人向,较为激烈。本文很长,能看到其他同学对于 go 在不同方面(无论好或坏)的认知。在...

  • 根据我的观察,我认为有这么几个原因: 国内云计算市场的发展: 一门编程语言生得好不如生得巧,然而 go 既生得好又生得巧。 go 在 09 年发布,在孕育了几年后,迎来了成长期。大约是在 12、13 年的时候「云」这个...

  • ​前言:go 语言大热的今天,来看看 michael stapelberg 在 2017 年...​​为什么 go 语言是我最喜欢的编程语言​​2017-08-19 发表,上次修改 2020-11-21我努力尊重每个人的个人喜好,所以我通常会避开关于哪种是...

  • 文章目录go语言简介go语言创始人1) ken thompson2) rob pike3) robert griesemergo 是编译型语言为什么要学习go语言go语言吉祥物go语言的特性有哪些?语法简单并发模型内存分配垃圾回收静态链接标准库工具链go语言为...

  • 它是严格的类型化的,使用大括号作为范围,即使你只写了一行控制结构,使用nil而不是null(在这里节省了1个字符),并且只用分号来分隔...如果,这能够引起你对go语言的兴趣,可以通过书籍或者教程去深入、系统的学习。

  • golang go语言i’ve been programming using php professionally since 10 years now. after my computer engineering degree, all i knew was that java was not my piece of cake any more (after 6 years using ...

  • python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。python社区提供了大量的第三方库,如numpy、pandas和requests,极大地丰富了python的应用领域,从数据科学到web开发。python库的丰富性是python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,matplotlib和seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

  • stm32单片机fpga毕设电路原理论文报告基于ide硬盘的数字图像存储技术研究本资源系百度网盘分享地址

global site tag (gtag.js) - google analytics
网站地图