同学们好!欢迎大家和我一起进入《大厂面试课之Go语言》系列课程的学习。
我们首先要回答的问题是“为什么要学习Go语言?”,然后会对本系列课程做一个简要的介绍。
为什么要学习Go语言?
Go语言是大名鼎鼎的谷歌公司在2008年首次推出的一门通用型计算机编程语言。它的三位主要发明者都是在业界享有盛誉的大佬级人物。比如,罗伯特·格利茨默,他不仅是谷歌V8引擎的发明者,同时也是作为谷歌四大基础设施之一的分布式锁服务Chubby和Java虚拟机的重要实现HotSpot的主要贡献者。再比如,罗勃·派克,他是UNIX、UTF-8和Plan9的主创者之一。当然,这里最著名的还要属肯·汤普逊,他既是堪称现代计算机编程语言基石的B语言和C语言的发明者,同时也以UNIX之父的名号享誉整个计算机行业。
纵观近年来TIOBE世界编程语言排行榜,Go语言的市场占有率、受关注度和社群活跃度,始终名列前茅。在刚刚过去的2022年,更是取得了第12名的骄人佳绩。与那些如Python、C、C++、Java等历史悠久的老牌编程语言相比,作为一门如此年轻的后起之秀,Go语言与它们的差距正在逐步缩小,在某些方面甚至超越了它的前辈。如果说Go语言是一门先进的语言,一门快速成长的语言,一门昭示未来的语言,一门在互联网和云计算时代的领军型语言,丝毫也不为过。
对于任何计算机编程语言而言,开发速度和执行效率,通常是一对不可调和的矛盾。开发速度快的如Python语言,其执行效率往往差强人意,而执行效率高的如C/C++语言,其开发速度又很难满足业务频繁更迭的互联网应用的需要。Go语言在开发速度和执行效率之间做了很好的平衡和折中,同时兼顾了缩短开发周期和提高运行性能两方面的要求,中庸平和,不走极端,务实笃行。
Go语言从诞生之初,发展到今天,已渐趋成熟,其间不乏成功的案例。基于Go语言的项目,如Docker、k8s、以太坊、超级账本等,正越来越为人们所熟知。成功的先例往往是后学的信心之源。
事实上在很多互联网大厂,越来越多的新项目,特别是一些后台服务器、Web服务器,从一开始就是基于Go语言开发的。这在以前,C/C++、Java甚至PHP可能才是他们的首选。与此同时,随着业务规模的不断扩大,全新的运营模式和价值增长点不断涌现,一些使用C/C++、Java或者PHP开发的旧系统,也面临着升级换代,甚至被重构的挑战,而Go语言为应对这类问题提供了绝佳的解决方案。比如知乎在使用Go语言替换掉早期的PHP代码以后,一举节约了超过80%的服务器资源。包括B站、字节、阿里、百度、腾讯等在内的互联网大厂,都在不约而同地积极拥抱Go语言。
Go语言被称为云计算时代的C语言。这一方面是因为Go语言在运行效率上堪与C/C++语言相媲美,另一方面也是因为Go语言在语法上与C/C++语言非常接近。因此具有C/C++背景的开发人员转向Go语言的学习门槛会非常低。如果您具有扎实的C/C++功底,即使不学习完整的Go语言,而只关注那些有别于C/C++语言的部分,同样可以获得很好的学习效果。
Go语言在国内的发展非常迅速,基于Go语言的技术生态也十分繁荣。象七牛云、滴滴、B站、知乎、字节跳动等企业的后台系统,完全是基于Go语言技术栈构建的。而在象百度、阿里、腾讯等传统互联网服务提供商的内部,也正处于逐步向Go语言技术栈转移的过程中。
下面我们就本系列课程的主要内容为大家做一个简要的介绍。
本系列课程大体分为两个阶段。第一阶段重点关注Go语言语法和一些基于Go语言的原生技术。除了为大家介绍Go语言的基础语法、面向对象以外,我们还会就并发编程、网络编程、JSON序列化和反序列化等问题为大家做一些展开。在这个阶段的末尾,我们会一起完成一个阶段项目——《聊天室》——作为这一阶段课程的实践环节和知识总结。
本系列课程的第二阶段是围绕一个微服务项目——《我家租房网》——展开的。在一步一步实现业务需求的同时,将诸如RPC、ProtoBuf、gRPC、微服务、go-micro、前后端分离、Gin、RESTful、MVC、Cookie与Session、Redis、MySQL与gORM、FastDFS以及Nginx等知识贯穿其中。学习者在完成整个项目以后,对其中所使用到的技术手段和技术工具会有一个全面且深入的理解。
谢谢大家,我们下节课再见!