我选择使用 Go 语言的几大理由

📅  2018 年 11 月 5 日 📖  阅读时间 1 分钟

自暑假彻底宅在家中,就没在更新博客了。倒不是变懒了,只是生活平淡的和老年人一般,是真没什么值得写出来让大家看的。最近家里灯坏了,一到晚上 6 点就已然漆黑一片。这种黑夜时间变长的感觉,只属于秋冬。时间可过得真快,我还没从暑假缓过神来,这就又遇到了秋天。

从当初高二拿了一个 10 吋上网本窝在宿舍里学写一些简单的 Python 小代码,到现在维护几个库。今年,已经是我使用 Python 也已经第 6 个年头了。其实也没有这么喜欢 Python,当初使用的契机也仅仅是上手简单,能够快速实现自己的想法罢了。Python 的出现让大家缩短了开发周期,就我逛 V2EX 的感觉来说,写 Python 的同学自由时间好像可以比别人多一倍。

但是,这些年用下来,我感觉 Python 执行效率是真的不太行,而且 Python 的代码量一多就感觉好难管理。我虽然还没有到天天优化代码效率的地步,但是运行一些代码的时候往往需要等待较长时间,等到泡完咖啡再回头看结果,思路往往已被迫中断,记不起之前的一些特别的想法了。

与 Go 语言的相遇其实没什么偶然,因为最近几个月我常逛的几个技术社区里 Go 的文章都多了起来,同时我也想学习一门新的语言,Go 自然成了我的首选。在试用过 Go 语言一周之后,我突然产生了一种相见恨晚的感觉。

于我而言,虽说 Java,JavaScript,Swift 等也有涉猎,但 Python 和 C++ 无疑是我最熟悉也是用最多的两门语言。Go 语言的设计风格上是非常融合的,这也让我看到了设计工程师的心血以及强烈的个人风格(“强迫症”)。

我切换到 Go 理由

Go 已经成为了我的主力语言。当然了,在数据挖掘和算法学习上依旧使用 Python 为主力语言。下面介绍下我觉得不错的 Go 特性。

理由 1

非常容易并发。

这条我放在第一,主要是我对并发编程其实熟悉程度非常低,但是 Go 语言能够快速的通过go function这样的方式建立 goroutine。我在使用 Go 开发的第一个进化算法项目中就使用了,效率提升非常之卓越。

理由 2

对 C 的兼容。

时至如今,C 的经典和运行速度都还是令人津津乐道的。对 C 的兼容也在很多时候能够让我能更快的找到一个替代方案来完善程序,而不是像别的语言,在没有时间的情况下还得花费大量的时间查询文档。

理由 3

代码风格非常统一。

与其说是设计者的强迫症,其实代码风格我个人也是有强迫症的。自带的 fmt 工具全自动的统一风格,让我在阅读别人代码的时候也非常的舒适。同时自动纠错,未使用库的清除等等,非常的强迫症,但是让 Go 所带来的严谨,非常不错。

理由 4

可以方便的交叉编译+单文件运行。

单文件运行的便利,经常在服务器上写一些服务的人应该深有同感。以往写程序都是本地写完,服务器端环境得配置一遍,然后上传,再运行。可现在用 Go,本地写完,上传运行,就没事了。

交叉编译不用说,方便的爆炸。在给别人分享一些小程序的时候都很方便。

理由 5

执行效率足够快。

虽然还是比 C,Rust 慢。但是比起 Python 的话,比喻成开车和步行也不为过。

总结

Go 在云计算领域现在已经运用相当广泛了,本身也脱离了 C 编译,自举了。Go 的设计目标是新时代的 C,而这点,我真的在使用中感受到了。几乎所有的 C 的使用痛点,在 Go 中都得到了大幅的改善。随之而来的也有些新的问题,网上有非常多的讨论,但是一方面,我对编程语言目前没有那么高的要求,另一方面我对 Go 有信心,随着语言版本的革新,问题点一定会逐步改善。

如果你觉得想改变下自己的语言,又有 C 的基础在,我真的真的很推荐你去尝试一下 Go。

附上我学习 Go 语言看的第一本书: