GO语言的优势与不足

新知榜官方账号

2023-12-08 22:32:33

引言

团队有项目考虑用GO重写,所以花了些时间调研GO。第一次接触GO是5年前,14年4月份,也是在我司,全职钻研一周,彼时C++中毒太深,内心排斥其他编程语言,看其他语法总觉得有点怪,而且有“C/C++能做任何事,故无用其他语言之必要”的思想在作祟。我读研阶段用过几年Java,工作以来一直使用C++/C,况且教出几个非计算机系(包括英语系)的职业程序员,所以,我就浮夸一回,声称熟练掌握C++吧。人都有思维定势,受限于自己的经验和认知,我亦不能例外,但好在我意识到这一点,所以在调研过程中,努力摒弃成见,尽量摆脱惯性,查阅关于GO的各种(包括核心设计师)文章,倾听拥趸和批评者的不同声音,结合自己的思考和分析,力求客观公正去评价GO。

GO语言简介

GO是Google开发的一种静态、强类型、编译型、并发型,并具有垃圾回收功能的类C编程语言。2009以开源项目的形式发布,2012年发布1.0稳定版本,距今已经十年了。GO的故事也很套路,G公司的Pike大牛听完C++0x的演讲,回到办公室,开始编译C++,等待编译过程中,转过椅子面向Robert,讨论语言的问题,然后拉上Ken爷爷一起合计,群嘲之后,受不了C++某些沙雕设计,还没等编译完成,三个老男人便一拍即合,决定一起搞点changetheworld的伟大事情,于是乎,GO诞生了。

GO的哲学

GO有GO的哲学,有它的取舍和审美,不一定每个人都认同,比如GO信奉LessIsMore,大道至简,GO遵照并行发生的规律,对并发的原生支持让GO更易于描述并行世界,GO设计选择的是组合,这个和现实世界比较吻合的设计,表现力更强,GO的接口是DUCK模型,接口是非侵入式的,GO的多个特性都是正交性的,正交性是保持事物稳定和简单的最好设计,GO规定左大括号{不能换行放置,没有为什么,对着干直接编译不过,GO编译器内建工具gofmt强制源码格式化,这其实也是一种哲学:给你(我认为)最好的,而不是给你选择。

GO的特色

GO是介于C与C++之间的语言,比C抽象层次高,比C++抽象层次低。GO的核心特征包括:1.原生并发,以东尼·霍尔的通信顺序进程(CSP)为基础的goroutine,适合现代多核机器;2.垃圾回收,非常高效;3.强大的标准库,对网络编程等的良好支持;4.CGO提供了GO调用C机制,扩展了GO的能力边界;5.内嵌关联数组;6.非侵入式的接口设计;7.简单清晰的语法,以及强编码规则。

GO vs C/C++

GO跟C/C++很像,这并不奇怪,因为设计师都是C语言大师,GO号称兼备C++的运行效率和PHP的开发效率,但benchmarks打脸了,从数据上看,GO的运行效率接近却略低于Java。

研发效率

GO的研发效率上优于C/C++,特别是*nix环境下。

流行度

GO曾获得TIOBE2016年度最佳,2017年10月获得第10,历史最高排名。GO成为云计算时代流行起来,促进了云计算的发展,Google用GO的多,今日头条、Uber等公司也用GO对业务进行了彻底的重构,golang.org、YouTube.com也在使用GO开发。美国市值TOP20有一半在使用GO,国外很多初创公司选择GO,国内关注高,但还未得到广泛应用,应用上呈现国外热国内冷的特点。GO的工程化水平低于C/C++和Java等第一梯队语言。

争议和不足

GO的异常处理经常被吐槽,GC提高了安全性却失去了控制力,组合代替继承真的好吗?包管理做的好吗?GO是否真的更简洁?这些都是争议点。GO是G公司的,虽然目前开源,但会不会哪天也像Oracle一样,开始薅羊毛,GO智慧产权的风险依然存在,而C/C++已经是宇宙人类的了,世界性的标准化组织在控制管理,风险无穷逼近于零。

小结

GO在一些点确实有突破,比如让并发编程更容易、运行更高效,比如垃圾回收让程序更安全,比如基于消息(Channel)编程的支持,比如内嵌关联结构,这些都很赞,也很重要。编程语言发展这么多年,任何突破都是艰难和宝贵的。GO适合网络程序、云应用、微服务、高性能分布式、大型多人协同,可能在开发效率上有非常大的提升,清晰度上也有提高,可能是理想的首选。是否要选择GO作为项目开发语言,要权衡折中,取决于领导决断,也取决于项目需求和心情。

附录

一段GO的示例代码,品味一下GO的STYLE。

本页网址:https://www.xinzhibang.net/article_detail-22331.html

寻求报道,请 点击这里 微信扫码咨询

关键词

GO语言 优势 不足 并发编程 垃圾回收

分享至微信: 微信扫码阅读

相关工具

相关文章

相关快讯

ChatGPT,Midjourney,文心一言,文心一格,bing新必应,Stable diffusion,文心一格,稿定设计,墨刀AI,mastergo,Adobe Firefly

短视频知识人物影响力榜

查看更多

新知榜独家 {{faTime.effecttime}}发布

总榜

人物 领域 粉丝数 影响力指数

{{item.manIndex}}

{{item.nickname}} {{item.field}}

{{item.fs}}

{{item.effect}}