探索Go语言的优势与劣势

发表时间: 2021-12-22 08:16

梅特坎-阿尔古奇·6 min read

Go,通常被称为Golang,是谷歌的一种开源编程语言,在2011年进行了首次稳定发布。Robert Griesemer、Rob Pike和Ken Thompson在2007年首次启动了Go的设计,并在2009年开放了源代码。

要点Golang的灵感来自于Modula、Smalltalk、Oberon、Algol、Pascal、C和Newsqueak等语言。

编程语言继承自Oberon语言,而语法的灵感来自C,OOP来自Smalltalk。并发性取自Newsqueak。

优点

谷歌的Golang变得如此流行的主要原因是,与其他快速语言,例如C语言相比,它呈现出一些良好的优势。

编译运行时的错误、依赖性和速度都很庞大,所以像Ruby、Node.js或Javascript这样的语言有时可能不会带来理想的结果。Node和JS有点狂野,Ruby可能会变得不安全和缓慢,而Java有时会变得冗长和复杂。

围棋在一定程度上打击了这些问题,并确实为用户提供了一些优势。当然,也有一些缺点,毕竟,硬币有两面。

1)证书

谷歌资助了Golang。它有一些真正的天才,因为它的创造者Robert Griesemer、Rob Pike和Ken Thompson已经因其在Unix、JVM、C、B等方面的贡献而闻名。有趣的是,人们认为该语言的建立是为了解决过去的问题,并预测未来的挑战。

2)易于学习

如果你的开发团队希望从旧的语言转向新的语言,Go会是一个很好的选择,因为它的语法只有轻微的变化,因为它看起来与其他学过的语言几乎相似。文档也很容易遵循。团队可以在几周内掌握它,如果你使用的是标准库,有时甚至是几小时。编写一个简单的命令行应用程序和简单的HTTP服务器都是小菜一碟。

3) 并发

并发是出了名的困难,但幸运的是,有了这种开源的编程语言,并发是可操作的,非常容易。开发者可以更快地完成请求,更早地释放出硬件和网络资源。

4) 开源

如果有任何问题,Gophers(Golang的开发者被称为 "地鼠")会发现并纠正这些问题,因此在它们成为问题之前就能轻松解决。

5)支持垃圾收集的语言

该语言使开发者更容易进行内存管理等活动。它自己处理所有的运行工作。

6) 静态代码分析

编程语言完全依赖于静态代码分析。例如,godoc用于文档,glint用于代码风格列表,gofmt用于代码格式化等等。Go工具被实现为独立的命令行应用程序,所以它们可以很容易地与任何编码环境集成。这门语言在静态代码分析方面做得很好,而且它为你遮风挡雨,所以它是值得信赖的。

7) 附带内置测试工具

开发人员喜欢这种语言带有内置测试工具的事实,以及它有最简单的API的事实。这个工具的功效使得测试和剖析可执行代码变得容易。高级功能,如并行运行测试,标记测试等也是可用的。

8) 语言速度快

简单的结构和语法无疑是一个优势,开发者发现它更容易学习。此外,它没有类型继承和类。这使你更容易在市场上快速发布产品,甚至更好地维护它。

9) 直接编译成机器代码

由于Go没有虚拟机,如果你能排除Go的中间汇编,它可以直接编译到机器代码。这使得它的速度非常快。此外,你可以跨平台编译到Windows、Android、Linux等等。

10) 可爱的吉祥物

如果外观对你来说有一定的意义,你会爱上可爱的地鼠吉祥物,这是该语言的特征。

一些已经使用Go的公司。

  • 谷歌
  • 脸书
  • 英国广播公司
  • 苹果公司
  • Docker
  • 推特
  • 纽约时报
  • 滴答网
  • 经济学家杂志
  • IBM

根据 Tiobe Index,编程语言名人堂在2016年颁给了Go。请看下面的图片。

GitHub还提出了 list of popular programming languages.Go在前15名中。请看下面。

缺点

1)一种年轻的语言,所以它仍在发展之中

作为一种非常年轻的语言,开发人员可能会发现很难最大限度地利用这些库。他们可能不得不自己编写库,而且在有疑问时,也没有很多书籍或在线课程可以提供帮助。

2) 没有手动内存管理

手动内存管理很重要,缺乏它可能会导致开销的垃圾收集、暂停等问题,这反过来又会导致系统编程。

3) 太简单

该语言的简单性可能是一个问题,因为它使它变得肤浅。而为了使其简单,该语言浪费了几年的编程语言进展。

4) 错误处理并不完美

尽管Go中的错误处理并不完美,但它的不完美性可能会让你。人们仍在寻找解决方案,并提出了错误处理的建议。

5)运行时的安全性不是那么好

Go是安全的,但它并没有提供Rust所提供的安全级别。安全水平只是在编译时,在一定程度上是在运行时。Go专注于生产速度,而Rust则集中于安全方面。

其他缺点包括运算符重载,以及代码重复和元编程方面的问题,因为这些问题不能被静态检查。

闭幕感想

当你在做一个新项目,或者计划改进下一个项目时,Go绝对是一个好的选择。一旦你习惯了Golang的开发,你就可以让它成为主流,因为它的优势与劣势相比要优越得多。

它可以帮助你在时间和预算内建立复杂的应用程序,并且可以轻松处理每秒1000个并发请求,这在其他语言中可能是出了名的困难。毕竟,你可以在不使用任何第三方服务的情况下建立自己的产品。