找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 563750|回复: 0

为什么越来越多人在学Go语言?|极客时间

[复制链接]

该用户从未签到

发表于 2021-5-23 19:13:49 | 显示全部楼层 |阅读模式

您需要 登录 才可以下载或查看,没有账号?立即注册

×
很多人都在问我,到底该不该学习Go语言。直接给你答案吧,你也不信。所以,在正式回答之前,我们还是先说说,到底怎么判断一门语言是不是有前景。
左耳朵耗子之前曾经分享过他的经验,看一个技术能不能火起来,主要从三个角度,第一,有没有雄厚的资金支持。第二,有没有一个活跃的社区。第三,有没有杀手级的应用。这个逻辑对不对,你可以用Java以及另外一门没有火的技术来印证下。
就拿Go来说,他背靠Google公司,社区非常活跃,并且有Docker、Kubernetes这样的杀手级应用。现在,我们已经看到,Go是云计算时代的首选编程语言,并且,我还可以很确定的说,它正在成为下一个企业级编程语言。
Go语言是字节跳动内部使用最多的编程语言。为啥?因为字节跳动更看重效率,Go语言上手简单,学习难度低。另外, Goroutine 和 Channel 这两个神器可以很好解决并发和异步编程的问题。它是新一代的编程语言。
如果你的第一语言是PHP,或者Python,或者C#,并且职位是后端工程师,那我还是建议你学学Go。不是鼓吹Go,是我觉得这是趋势,我们不管是写程序,还是做其他事情,都应该顺应时代。

云原生是趋势,大部分云原生项目都是用Go写的。如果你想研究Kubernetes,不懂Go可以吗?Java那个赛道很拥挤,如果你想脱颖而出,为什么不试试Go呢?
到这里,你会说,语言没有好坏,只有合不合适。是这个逻辑,但是,技术的发展总是一浪接一浪,Go诞生的时间比较晚,就语言本身,他很多设计理念都是超前的,它代表着先进的生产力。
我知道,你还会反驳,Java虽然老了,可人家现在还是企业级编程语言的主力军。是的,结论没错。但你要知道,Java与其他语言竞争,底气从来不在于语法、类库有多么先进好用,而是来自它庞大的用户群和极其成熟的软件生态,这在朝夕之间难以撼动。这是周志明老师说的。
但是,Java也在变,因为如果不变,它由强大生态所构建的护城河终究会消耗殆尽。所以,类似Project Leyden、Project Valhalla之类的项目都是在推动Java往类似Go这样的原生语言的方向变。
现在主流的判断是Go语言做中间层、PaaS层的项目,Java做业务层,Rust/C++做系统层。不信的话,你可以去看看最新的一些主流开源项目,是不是这个逻辑。
不管怎么样,如果你是一名后端工程师,我还是建议你学学Go,不管是从换工作的角度,还是从个人发展的角度。不信的话,你去招聘网站搜搜Go工程师的待遇吧,那个不会骗人。
虽然都说 Go 上手容易,但是想要真正的会使用 Go 语言进行项目的编写,就没有那么容易了。因为大部分人在学习和使用 Go 语言 的过程中,都遇到过这么几个的困境:
一看就会,一写就懵;书籍或别人的代码基本能看懂,但自己写项目时却不知道如何下手;
写出来的代码有浓重的其他语言味道;
貌似都懂,面试就露馅;只会简单使用,不知道如何深入了解、如何进阶;
工程化实践经验为 0;只会基于别人的框架填代码,不会自己进行工程化;搬砖似乎永远没有竞争力;
说实话,这些问题我自己也遇到过。因为我们大多数人对于 Go 的学习可能仅限于语法,却不清楚它背后的设计原理,没有亲手做过项目。
为了帮助你更好的掌握 Go 语言,在这里我一定要向你推荐由极客时间出品的Go 进阶训练营,这个课程的设计对标字节跳动 2-2 级职位模型,目标是让你在 3 个月时间内,快速掌握、吃透 Go 语言,并胜任一线互联网公司的高级或者资深 Golang 工程师等职位。
毛剑是谁?
毛剑,资深Go 工程师,目前在一家大型互联网视频内容公司担任资深总监和技术专家的职位。
在 DevOps 领域,毛也使用 Go 语言做了大量的实践,结合 GitLab、Bazel、Kubernetes Prow 实现了完整的 CI/CD Pipeline,包括分布式增量编译、可靠的持续构建和发布系统,以及在线运行时平台(PaaS)等系统。
毛剑是忠实的 Go 语言粉丝,也是一名 Go 语言老手,毛剑曾在 GitHub 上开源了几个基于 Go 语言的项目,如果你想了解毛剑的技术实力,可以点进去看看,毕竟,Talk is cheap,Show you the code。
毛剑的 GitHub 主页:http://github.com/Terry-Mao
作为 Go 语言的布道师,毛剑也经常参加和 Go 有关的社区分享和演讲,包括 QCon、ArchSummit、Gopher China,GITC 等等这些业界知名的会议。
课程内容以及设计思路是什么?
整个训练营的内容,可以分为三大模块,先是 Go 语言编程实践、再到工程实践、最后是架构实践。
每个模块下面又可以分为 4 到 5 个子模块,当然,每个子模块又会细分出篇幅不等的更小的模块,总体算下来,差不多会有四五十个细分模块。
先说第一个大模块,Go 语言编程实践,毛剑会先从语言本身来讲 Runtime 的原理,包括 Goroutine、Channel 和 GC 等等,只有了解了这几个最关键的 Go 语言特性,才能让毛剑们更好地开展,如:并发编程、网络编程以及异常处理等这些子模块。
讲完 Go 语言本身的重点和难点之后,毛剑会开始讲 Go 语言的工程化实践,工程化意味着需要大规模落地到业务开发上,好的项目规范也更利于长期的迭代。这里面呢就包括如何设计项目结构,如何进行 API 设计和包设计,还有配置文件和单元测试等等工程化环节需要解决的重点问题。
最后一个大模块,就是架构设计了,毛剑会讲到当前最流行的分布式架构和微服务架构,当然,也少不了相关的中间件的讲解。
毛剑从 Go 语言实践到工程实践,最后到一个完整的大型分布式系统的实践,由浅到深,从语言到工程,从工程到架构,每个子模块毛剑都会结合毛剑这近 10 年的项目经验和积累来进行案例讲解,而不仅仅是单纯讲述理论知识。因为从实践中出理论,从理论践行实践,一直是毛剑学习成长的模式。
回复

使用道具 举报

网站地图|页面地图|文字地图|Archiver|手机版|小黑屋|找资源 |网站地图

GMT+8, 2024-11-27 22:27

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表