根据 3 月 2 日,Hired 发布的《2019 软件工程师状态》报告中指出,具有 Go 经验的候选人是迄今为止最具吸引力的,平均每位求职者会收到9 份面试邀请。
二、三、四分别是 Scala、Ruby 和 TypeScript。让人费解的是 Java 仅排在第九,平均每位求职者只能收到 6.5 份邀请。C++、C 和 C# 的邀请次数更低,垫底的 R 语言使用者甚至平均只能收 3 份。其实,每门语言都有其优势,但我想跟大家聊聊 Go 语言为何受到如此多的关注。
今年恰逢 Go 语言发布 10 周年,2007 年 3 位 Google 天才程序员想通过开发一种新型的语言,解决 Google 软件开发中面临的问题:多核硬件架构、超大规模分布式计算集群、Web 开发模式导致的前所未有的开发规模和更新速度,于是 Go 语言诞生了。
这些也是互联网公司面临的普遍问题。也因此,阿里、腾讯、百度、滴滴等一线公司,几乎都在自身业务中用到了 Go 语言。对应地,招聘市场对 Go 语言工程师的需求,不论是数量还是薪资,都在与日俱增。
在去年的 QCon 北京全球软件开发大会上,我做了题为《讲给 Java / C++ 开发者的 Go 高效编程》的主题演讲,会后跟大家交流,发现许多人对 Go 语言的学习有需求和热情。而我身边有不少工程师,都开始学习和使用 Go 语言。
最早接触到 Go,是我在亚马逊(中国)担任首席架构师时。偶然的机会,我发现亚马逊的一个主流服务框架对 Go 语言提供了支持,并且列举了 Go 语言特性和由此带来服务开发的优点。那以后,我开始学习并尝试使用 Go 语言来编写服务。
我从小学四年级开始学习编程,学习和使用过很多不同的 编程语言,对于语言学习的体会就是,学习一种新的语言最重要的是了解他的特点(如:内存管理和并发)及特有的编程模型(如:函数式编程,面向对象编程等)。学会使用新语言来思考,而不要总是套用以前的习惯编程模式,表面上是使用新语言开发,实则把一种语言翻译成另一种语言来表示。
正如 C 语言程序员学习 C++ 一样,由于原有习惯思维模式的影响,很多工程师在使用 Go 语言时也会常常会陷入一些误区,会用 C 或 Java 语言的方式进行 Go 语言编程。
比如下面的这段代码,在 C / C++ 程序员的眼里是不是觉得存在严重 Bug ?可是他在 Go 程序里是完全正确的:
func foo() *int{
var i int
i=10
return &i
}
在实际的开发工作中,我发现有编程基础的工程师们,在学习 Go 语言时,往往会陷入下面的误区:
大量使用共享内存的方式进行并发控制,而忽略了 Go 内置的 CSP 并发机制;
常在方法调用间直接传递数组,导致大量内存复制。而 Go 的数组参数是通过值复制来传递的。
总喜欢创建一个只包含接口定义的包,以处理依赖关系。而 Go 中接口的实现对接口定义是没有依赖的。
正是这些误区,导致了大家在学习和使用 Go 语言过程中的低效和不准确,而这些又很难在技术社区或书中找到答案的。为了让大家更高效掌握 Go,我在极客时间推出了《 Go 语言从入门到实战》视频课程。
课程会通过大量代码实例讲解 Go 语言的特性,并将 Go 与其他语言的不同点进行比较,指出它们在编程和应用上的差异,帮你少走弯路。
我是谁?
我是蔡超,目前在 Mobvista 担任技术副总裁兼首席架构师,之前的 9 年,我曾在亚马逊(中国)、惠普等世界级 IT 公司担任过首席软件架构师。
我拥有 15 年的软件开发经验,学习和使用过很多的编程语言,如:BASIC,PASIC,Perl,Python,C/C++,Java,Lisp,Haskel l 等,当然,也包括 Go 语言。 在这些语言里,Go 简单,高效及高生产力的特性,非常适合于大规模互联网服务的开发,现在我在 Mobvista 带领团队,使用 Go 语言构建了国内最大同时也是全球排名前十的移动广告平台,这个平台每天处理着来自世界各地的超过 500 亿次请求。
我能帮你做什么?
如果你有一门或多门编程语言的使用经验,希望快速掌握 Go 语言,并有效利用其特性来进行实际项目的开发,那么这门课程非常适合你。
课程分为基础篇与进阶篇两个部分:
基础篇,我会对比 Go 语言的基础语法和其他其他编程语言的不同,帮你高效率的入门 Go 语言的开发。
进阶篇,我会帮你分析 Go 语言在开发中的常见问题,比如并发编程模式,常见并发任务,高可用性服务设计,性能调优等等难题,帮你从入门走向实战。
![1438140842.jpg](https://static.studygolang.com/190309/72d9625d7772a6ee5fafca444cfe4ba6.jpg)
有疑问加站长微信联系(非本文作者)