阅读文本大概需要3分钟。

根据 3 月 2 日,Hired 发布的《2019 软件工程师状态》报告中指出,具有 Go 经验的候选人是迄今为止最具吸引力的,平均每位求职者会收到 9 份面试邀请。

用什么语言的程序员最抢手_python

排在二、三、四位分别是 Scala、Ruby 和 TypeScript。Java 仅排在第九,平均每位求职者只能收到 6.5 份邀请。C++、C、C# 和 R 的邀请次数更低,垫底的 R 语言使用者甚至平均只能收 3 份。Go 语言人才成为市场中热门的语言,也和 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() *string {
 s := "Hello World"
 return &s
}

在实际的开发工作中,我发现有编程基础的工程师们,在学习 Go 语言时,往往会陷入下面的误区:

  • 大量使用共享内存的方式进行并发控制,而忽略了 Go 内置的 CSP 并发机制;
  • 常在方法调用间直接传递数组,导致大量内存复制。而 Go 的数组参数是通过值复制来传递的。
  • 总喜欢创建一个只包含接口定义的包,以处理依赖关系。而 Go 中接口的实现对接口定义是没有依赖的。



用什么语言的程序员最抢手_人工智能_02