学了5年的C++,我为啥要开始学Go! 关注 共
2424字,需浏览
5分钟
·
2021-10-18 23:22
最近有一门语言登上了“程序员最想学习语言 ”的宝座,没错,就是Go语言!初学Go语言,Go语言简洁的语法特性以及其优美的编码风格一定会令你沉迷。 我之前是一名C++程序员,最初接触Go语言是因为使用到了Go语言的明星产品Docker,后来激起我开始想学习这门语言的欲望,并且Go程序员们还有一个非常可爱的称呼-Gopher。 Go语言,被称为"云时代的C语言",已经在某些领域逐渐替代了C、Python语言,成为不少开发者的第一生产语言,其在开发效率和运行效率之间取得了绝佳的平衡。Go语言既适应互联网应用的极速开发,又能在高并发、高性能的场景中如鱼得水 。从近几年的发展趋势来看,Go语言已经成为云计算、云存储以及区块链时代最重要的编程语言。
01.Go语言背景
Go语言出身名门,是Google公司的亲儿子。最初由谷歌公司的Robert Griesemer
、Ken Thompson
和Rob Pike
这3位技术大咖于2007年开始设计发明,设计新语言的最初动力来自对超级复杂的C++11特性的吹捧报告的鄙视,最初的目标是设计网络和多核时代的C语言。 到2008年中期,在语言的大部分特性设计已经完成并开始着手实现编译器和运行时,Russ Cox
作为主力开发者加入。到2009年,Go语言已经逐步趋于稳定。同年9月,Go语言正式发布并开源了代码。
02.Go语言优势 1).开发效率和运行效率的折中选择
在Go语言之前,计算机硬件发展得非常迅猛,但软件却总是跟不上硬件的步伐。 像C、C++语言,虽然运行速度很快,但是编译效率很低,像Java、Python语言,虽然开发效率很高,但是执行速度很慢。 而Go语言作为一名新兴语言,则站在了C和Java语言的肩膀上。Go语言虽然不像Ruby、Python等语言如此直白,也不像C、C++语言最接近系统底层。然而,Go一方面借鉴新语言的简洁,一方面又略过了如JAVA的Virtual Machine或是Python的Interpreter等中间环节,能直接将程序编译成电脑的二进制,具有相当优越的效能。
2.更适合多核时代
在Go诞生的年代,由于物理上的限制,摩尔定律差不多开始hold不住了,因此,各大电脑、手机制造商为了追求更高的速度,开始加入了多核心的设计。此时,程序语言设计也要求并行处理的能力,因为早期的语言尚未遇到过这种新兴的挑战,所以在语言层面上并没有提供并行编程的设计,从而导致进行多线程、多进程编程是一件麻烦事。 然而Go语言可以说是一个超级新星,Go内建的Goroutine类似于其它语言的线程,被称作Go协程,它更加轻量,可以轻松的同时开启数千个Goroutine,也不会占用太多空间;另一方面,在编程实现上,也更加方便,Go可以说是具有超前卓越的并行处理能力。
03.Go语言发展前景 说到Go语言最先想到的开源项目就是Docker和K8s ,在国内几乎所有的著名互联网公司都在使用Go。近年来市值飙升最快的国内大厂字节跳动,就是Go语言的重度使用者 。 BAT更不用说,在这些公司的业务中,Go都能在某方面占有重要的位置。国内也有很多公司在使用Go语言重构,如知乎早期大量的服务都是基于 Python 开发的,但在实践过程中发现 Python 资源消耗过大、不利用多人协同开发等各种问题,之后公司使用Go进行了大规模的重构,相比之前的 Python 项目,资源占用减少了 70% - 80% ,复杂接口的性能有 50% 左右的提升。 国外也有很多大厂正在使用Go,作为Go的开源者,Google在多个产品使用了Go作为主要语言。Google Chrome 就运用了Go语言编写的服务器,为百万级别以上的移动用户提供更快的页面加载速度以及更低的数据使用率。 说到Go的青睐者,中国程序员可谓是主力军!有数据显示,16%的Go语言使用者都位于中国,位列全世界第一位 。 下图是全国程序员8月薪资排行榜,Go的薪资水平仅次于Python,主要原因还是因为Go程序员多数集中在大厂。
04.Go语言应用场景
服务器编程,以前你如果使用C或者C++做的那些事情,用Go来做很合适,例如处理日志、数据打包、虚拟机处理、文件系统等; 网络编程,这一块目前应用最广,包括Web应用、API应用、下载应用等; 云平台,目前国外很多云平台在采用Go开发,CloudFoundy的部分组建,前VMare的技术总监自己出来搞的apcera云平台; 高并发,Go语言由于在语言层面适合多核时代,可以轻松开启上万个协程,所以更适用高并发的场景; 微服务,Go语言提供了很多微服务框架,如Beego、micro等;
05.有哪些知名的大厂在用
Go语言很多时候被描述为“类C语言”,或“21世纪的C语言”。从各种角度看,Go语言确实是从C语言继承了相似的表达式语法、控制流结构、基础数据类型、调用参数传值、指针等诸多编程思想,并彻底继承和发扬了C语言简单直接的暴力编程哲学等。 Rob曾说:”Complexity is Multiplicative”,因此Go的设计高度致力于Simplicity ;Go语言诞生是为了开发各类大型系统,在庞大的程序中,不能容易出错,所以Go也相当可靠;Go诞生于2009年,借鉴了许多优秀的语言,也面对摩尔定律的挑战,因此Go具有无与伦比的效率。 最后,再来看看都有哪些企业正在使用Go语言(包括但不限于以下企业)
你觉得Go语言前途和钱途如何,欢迎在留言区吱一声说说你的看法。 Go编程爱好者,专注于分享Go语言的基础教程,云计算,K8S相关内容的干货分享。
浏览
93 点赞
评论
收藏
分享
手机扫一扫分享
分享
举报
点赞
评论
收藏
分享
手机扫一扫分享
分享
举报