上周介绍并发编程课程的时候,有朋友留言说:用Go呀!
的确,不同的编程语言,其特性和设计思想都不一样。如果使用Go,单纯依靠语言内建的goroutine,用channel通讯,就可以免去不少并发的问题。另外,Java是一门面向对象的语言,然而在如今的世界里,许多任务并不需要严格的“面向对象”思维来解决,Java有时候显得笨手拙脚、老态龙钟。
喜欢Go的朋友还可以列举出一大堆理由来,比如没有复杂的对象层次结构、可以返回多个参数、编译为原生代码可以享受的效率和依赖的好处(当然VM也不是没有好处,JVM如今反倒成了通用平台)……
虽然Java的维护者们也发出了很多声音,但事实可以说明大多数人的选择,下面是Hacker News统计的招聘信息,可以看到Java一直很稳定,而Go后劲十足
别看Python一直高高在上,其实危机也不小。除了AI,运维管理一度是Python的传统领地,如今却被Go侵蚀了很多。据Google SRE的朋友(对,就是之前留言那家伙)说,Google已经在内部把运维脚本都从Python换成了Go。
这也就解释了为何Go的招聘需求那么火热。按照3月2日Hired发布的2019软件工程师状态数据,Go开发者能收到的平均工作邀请是最多的。
那么,用Go有什么问题吗?按照我自己的经验,结合网络上的讨论,我觉得最大的问题是,它对开发者的要求比较高。即便是用Go来解决“最擅长”的网络服务端问题,recover方法、共享资源的访问模式也都是需要特别注意的地方,而且其思维模式与传统的Web后端开发有较大差别。除非开发者是一张白纸,上手就直接用Go,否则无论之前只在学校学过Web编程,或者是有多年Java开发经验,都要经历转变过程。
如果你对Go有兴趣,又担心这门语言对自己来说显得太“怪异”,不方便学习,不妨参考 极客时间 新推出的视频专栏《Go语言从入门到实战》。与其它Go语言课程相比,此专栏最大的特点是通过大量代码说明Go的特性,并通过比较Go语言与其它编程语言,指出其在编程和应用中应当注意的点。
在实际的开发工作中,有编程基础的工程师们,在学习Go语言时,往往会陷入下面的误区:
-
大量使用共享内存的方式进行并发控制,而忽略了 Go 内置的 CSP 并发机制;
-
常在方法调用间直接传递数组,导致大量内存复制。而 Go 的数组参数是通过值复制来传递的。
-
总喜欢创建一个只包含接口定义的包,以处理依赖关系。而 Go 中接口的实现对接口定义是没有依赖的。
这些误区,蔡超在课程中都有很详细的讲解,只要你跟着学,就可以少走弯路,从入门到实战掌握 Go 语言。
蔡超是谁?
能在 QCon 上做演讲的嘉宾,绝对一肚子干货。蔡超有 15 年的软件开发经验,曾在亚马逊(中国)、惠普等世界级 IT 公司担任过首席软件架构师。目前在 Mobvista 担任技术副总裁兼首席架构师,带领团队用 Go 语言构建了国内最大同时也是全球排名前十的移动广告平台,这个平台每天处理着来自世界各地的超过 500 亿次请求,在 Go 语言实现项目上有着丰富的经验。
课程能带给你什么?
课程分为基础篇与进阶篇两个部分:
-
基础篇部分,会对比 Go 语言的基础语法和其他其他编程语言的不同,这样入门 Go 语言也会更加高效。
-
进阶篇的部分,会帮你分析 Go 语言在开发中的常见问题,比如并发编程模式,常见并发任务,高可用性服务设计,性能调优等等难题,学习的目的就是为了实战开发,相信这些问题也是大家非常期待的。
订阅福利
上新优惠 ¥99(原价¥129)
3月16日恢复原价
留言区说出你在学习编程语言中踩过哪些坑?点赞排名第一名的粉丝可获得极客时间 68 元任意课程兑换码,活动截止至3月7日12:00(上次的福利还有朋友没有领取,请记得到时给我发消息索取哟)。
蔡超QCon演讲视频,获取方式:订阅课程的用户,点击阅读原文即可领取。