新知榜官方账号
2023-12-08 22:32:33
团队有项目考虑用GO重写,所以花了些时间调研GO。第一次接触GO是5年前,14年4月份,也是在我司,全职钻研一周,彼时C++中毒太深,内心排斥其他编程语言,看其他语法总觉得有点怪,而且有“C/C++能做任何事,故无用其他语言之必要”的思想在作祟。我读研阶段用过几年Java,工作以来一直使用C++/C,况且教出几个非计算机系(包括英语系)的职业程序员,所以,我就浮夸一回,声称熟练掌握C++吧。人都有思维定势,受限于自己的经验和认知,我亦不能例外,但好在我意识到这一点,所以在调研过程中,努力摒弃成见,尽量摆脱惯性,查阅关于GO的各种(包括核心设计师)文章,倾听拥趸和批评者的不同声音,结合自己的思考和分析,力求客观公正去评价GO。
GO是Google开发的一种静态、强类型、编译型、并发型,并具有垃圾回收功能的类C编程语言。2009以开源项目的形式发布,2012年发布1.0稳定版本,距今已经十年了。GO的故事也很套路,G公司的Pike大牛听完C++0x的演讲,回到办公室,开始编译C++,等待编译过程中,转过椅子面向Robert,讨论语言的问题,然后拉上Ken爷爷一起合计,群嘲之后,受不了C++某些沙雕设计,还没等编译完成,三个老男人便一拍即合,决定一起搞点changetheworld的伟大事情,于是乎,GO诞生了。
GO有GO的哲学,有它的取舍和审美,不一定每个人都认同,比如GO信奉LessIsMore,大道至简,GO遵照并行发生的规律,对并发的原生支持让GO更易于描述并行世界,GO设计选择的是组合,这个和现实世界比较吻合的设计,表现力更强,GO的接口是DUCK模型,接口是非侵入式的,GO的多个特性都是正交性的,正交性是保持事物稳定和简单的最好设计,GO规定左大括号{不能换行放置,没有为什么,对着干直接编译不过,GO编译器内建工具gofmt强制源码格式化,这其实也是一种哲学:给你(我认为)最好的,而不是给你选择。
GO是介于C与C++之间的语言,比C抽象层次高,比C++抽象层次低。GO的核心特征包括:1.原生并发,以东尼·霍尔的通信顺序进程(CSP)为基础的goroutine,适合现代多核机器;2.垃圾回收,非常高效;3.强大的标准库,对网络编程等的良好支持;4.CGO提供了GO调用C机制,扩展了GO的能力边界;5.内嵌关联数组;6.非侵入式的接口设计;7.简单清晰的语法,以及强编码规则。
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。
相关工具
相关文章
相关快讯
推荐
中国首款3A游戏上线,《黑神话:悟空》出圈!
2024-08-21 13:46
盘点15款AI配音工具,短视频配音有救了!
2024-08-12 17:11
短视频文案没创意?10大AI写作工具来帮你!
2024-08-05 16:23
Midjourney发布V6.1版本,我已分不清AI和现实了!
2024-08-01 15:03
我发现了一款国产AI绘画神器,免费易上手!
2024-07-25 16:40
7位AI考生做今年高考题,能过一本线吗?
2024-07-19 17:17
世界上第一所AI学校来了,80亿人只需要1位老师?
2024-07-18 17:12
Sora首部AI广告片上线,广告从业者危险了!
2024-06-27 13:44
OpenAI与中国说拜拜,国产AI如何接棒?
2024-06-26 15:18
人与AI会产生爱情吗,专家发话了!
2024-06-17 17:28