Skip to main content
 Web开发网 » 操作系统 » linux系统

Go语言为什么没有流行起来?

2021年10月14日11470百度已收录

Go语言似乎并没有不流行,在各大榜单盘点最流行的编程语言时,Go语言都是榜上有名。

1.优势:简单

谈到Go语言大家的第一反应可能就是简单,当然这也是Go语言的一大优势,一个有经验的程序员一个晚上就可以掌握,而其他新语言如Swift它的相关文档就得有几百页厚。

简单带来的另一个优点就是更易于阅读,Go语言规范,有其他语言基础的程序员也能迅速上手,由于学习曲线平缓,团队之间的差距更小,更利于合作,另外Go 自带完善的工具链,大大提高了团队协作的一致性。

劣势:简陋

当然,在晚上学习一门语言是很好的,但Go是舍弃了很多现代抽象的功能才实现了简单性,舍弃了这些功能也就意味着你不能依靠更复杂语言的力量来对抗Bug。所以对于复杂性和抽象的爱好者来说,Go语言不是进步反而是倒退。

除此之外,每个程序员都有自己的编程想法,有的人想要泛型,有的人想要可扩展性......但Go语言的使用往往会让程序员有一种绑住手脚的感觉,无法大展拳脚。

2.优势:自动化节省时间

Go集成了很多方便快捷的功能,如自动声明变量,它看起来是一个很小的功能,但是却为程序员带来了很多便利,毕竟没有人希望一直在写“int”吧。另外,Go语言的GC机制也是一个很大的优势,因为每个人都对malloc和free函数感到厌烦了吧。

劣势:自动化可能是危险的

相信每个程序员都对编程语言的自动化的缺点感同身受:如果你采用GC机制来自动回收内存,那么可能会在错误的时间被触发;自动声明可能会导致嵌套作用域中使用相同的变量名,从而导致错误;另外,现在人们对于数据管理系统更加谨慎,所以自动化对我们来说可能不是优势反而是劣势。

3.优势:无虚拟机

在过去的几十年里,基于虚拟机的语言都是爆款,二进制代码可以在不同的芯片架构之间轻松移动,而且虚拟机在执行优化时可以实施一些安全规则,所以在VM中整合了很多好的想法。

但是启动虚拟机需要一些时间,但是Go语言就不用担心这一点,它可直接编译成机器码,除了glibc外没有其他外部依赖,部署十分方便。这使得Go语言在开发和调试过程中的速度都非常快。

劣势:无虚拟机

Go语言有独立的二进制文件,但是它们内存占用都非常大,例如你写一个“hello world”的示例,它就接近于2MB。二进制文件之所以会这么大,有一部分原因是它需要执行虚拟机的大部分功能,。

针对这一问题,Go 1.7做了一些努力,减少了编译器所使用的内存量并且在连接时间方面也有所提升,据悉,相对于Go 1.5.3它能够将总的编译时间降低大约20-30%。虽然这一变化让问题改善了很多,但是当服务器打开了数百个代码版本时,RAM仍会被阻塞。

4.优势:与C类似

Go语言带有强大的C基因,所以在支持底层代码方面毫无压力,1.5版本中完成的并发GC使得Go语言程序在响应时间方面有了质的飞跃,在软件开发效率和运行效率之间做出了绝佳的权衡。

劣势:与C类似

类C语言有很多,从显而易见的C#,C ++和Objective-C到Java、Rust、Swift,它们涵盖了很多有趣的功能,如果你想要完成一个项目,你可以很多选择,Go语言并不是唯一。

5.优势:无回调语法

许多程序员都从Node.js的深坑跳到Go,为什么呢?因为他们之前要做很多回调。回调结构对于Web页面上的JavaScript代码来说是很有意义的,它有助于通过Node提供服务器端开发的速度,但是它很难保持直线,尤其是在有三四层嵌套的情况下。

劣势:无回调语法

使用Go语言你不需要考虑嵌套方法,但是你仍然需要考虑以相同的方式编码交互。Node.js的嵌套虽然有些烦人,但是它能够让你在大脑中清晰的形成一个架构图,而Go语言由于不需要考虑嵌套,所以很有可能会出现失误。

6.优势:逐渐丰富的库

Google为用户创建服务器应用程序提供很多重要的库,尤其是网络库非常强大。

劣势:库缺乏

这个咋一听来好像是自行矛盾,但其实也很好理解,虽然Google对于Go语言给予了大量的支持,但毕竟Go语言还很年轻,所以标准库少也是在所难免的。JAR是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件,使用可执行的 JAR 文件,我们可以不用提取它或者知道主要入口点就可以运行一个应用程序。可执行 JAR 有助于方便发布和执行 Java 应用程序。Clojure,Scala,JRuby,Kotlin和许多其他的新语言被编译为JVM的字节码,它们可以与所有Java库一起使用。

7.优势:前景可期

Go语言之所以能够飞速发展,很大一部分原因是Google的支持。Google是一家重视未来的公司,我们可以从一些蛛丝马迹中发现与谷歌阅读器相比,Google似乎更致力于Go语言,目前Google在无人驾驶汽车和其它新奇特的东西投入了大量的精力,这也为Go语言的发展提供了助力。

劣势:在利基范围之外未能完全实践承诺

Go语言的上升令人印象深刻,但是能否继续上升,我们可能要打一个问号。企业对于代码的要求除了效率,还有稳定,要让企业将项目的未来从现有的语言突然变向押宝在另一种语言上,似乎不太可能。另外,Google对于Go语言的支持是优势也是掣肘,一旦Google风向有变,放弃Go语言转向一个更好的版本,那么对Go语言来说可能是灭顶之灾。

Java是AP计算机科学语言,C是Unix语言,Python更受社会科学家青睐,PHP非但没有死亡,反而越来愈好......每一种语言都有自己的使用场景,并且在自己的领域发展很好,如果Go语言不能尽快找好自己的定位,那么未来的发展可能会有影响。

评论列表暂无评论
发表评论
微信