龙空技术网

互联网大厂为什么纷纷热捧槽点多多的go语言?

胖子老豆 469

前言:

现在同学们对“游戏c语言后端框架是什么”可能比较着重,同学们都需要了解一些“游戏c语言后端框架是什么”的相关知识。那么小编在网上搜集了一些对于“游戏c语言后端框架是什么””的相关内容,希望小伙伴们能喜欢,我们一起来了解一下吧!

编程语言的宫殿上,类c语言和类lisp语言就像两个风格迥异的阵营,各自都有自己优秀的代言人,但go语言在其中既不显眼,又不优雅,真的很普通(天天写go代码的人最懂它的槽点)。

前两天几个同事饭后遛弯就聊起来为什么这么烂的go语言却有越来越多的公司用它?为什么它成了这条街上最靓的仔?

已经知道的几个例子:

滴滴起步的时候很多代码都是php写的,后来为了稳定性和性能,逐步替换成了go语言;知乎一开始用python构建了整个系统,但后来全部使用go语言做了重构,并且声称这一技术改造提升了系统的性能和稳定性;我司(字节跳动)也大规模使用了go语言,公司内部的绝大部分平台天然支持了go语言,基于go语言公司内部孵化出了应用面极广的http和rpc框架;阿里云的核心是以C++开发的飞天系统(Apsara),但从2015年起,在不少团队就逐步引入了go语言作为系统的补充,甚至某些核心模块也以go语言为主进行开发。

就在不久前的几年,甚至现在也是,后端编程语言排行榜上python和Java才是最受欢迎的,可越来越多的岗位都在招go语言开发者,原因无非是以下几点:

上手极其容易,go语言只有25个关键字,相比之下Java的关键字数量“高达”48个,更多的关键字意味着语言的feature更多,掌握起来更难,简单的语言便于企业招人,降低门槛;go语言是一门静态语言,在编译期可以保证语法正确性,相比python来说这是一个巨大的优势,我就曾经写过一个线上数据统计脚本,上线之后发现数据误差很大,查看日志才发现是一个if条件测试的时候没走进去,在线上才触发这个语法错误,没办法只能回滚,要是能在编译阶段发现就不必费这个劲;go语言没有虚拟机,性能更好,虽然虚拟机的横空出世提供了一次编译处处运行的巨大优势,但毕竟多了一层处理,会消耗更多的内存和CPU,资源消耗上就不够友好,更何况202x年代,很多程序也并不需要这种价格的可移植性;最近这些年云原生概念越来越普及,为了能最大限度的在k8s这样的平台上部署服务,且能在最短时间内拉起服务,在空闲时尽可能节省内存资源,相比Java,go语言兼职完美,用过Java的人都知道,JVM是吃内存大户,可以说是你有多少我就能吃多少,启动也慢,而go语言启动快,吃内存少,非常适合容器化之后快速拉起;go语言提供了非常易用的并发机制——协程(gorountine),这也是go语言核心竞争力,非常轻量的执行流,搭配channel这样的同步机制,可以非常简单的实现各种之前大段代码才能完成的复杂操作;go语言虽然没有虚拟机,但提供了自动内存回收机制,无需像C++一样自己管理内存(但go语言有指针!)go语言有docker、k8s这样子的杀手级应用背书,更背靠着Google这样的亲爹,有着强大的生命力和可能性!

还有一些就不多说了,比如go里面的interface,就是一个不能说很牛逼,但非常有意思的设计……

当然,go语言也有很明显的缺点,包括但不限于:

没有像spring boot或者flask这样很优秀的框架,搭建复杂应用系统很费劲;error处理机制很丑陋,很容易写出来满屏 if err != nil 的代码;内置数据结构初始化没有合理的size,一律默认为0,如果不是熟手很容易写出低性能代码;没有泛型,必须定义出诸如MaxInt64、MaxUint64、MaxInt32、MaxUint32这样的丑陋代码,当然go 1.18之后终于有泛型了

槽点真不少,平时写代码都快麻木了,哈哈哈[呲牙]

我是胖子老豆,一个喜欢读历史的程序员,大家有什么感兴趣的技术话题可以留言讨论,或者点名某一主题我来输出文章大家探讨~

标签: #游戏c语言后端框架是什么