前阵子,小灰看到国外开发者平台 HackerRank 发布了一份开发者技能报告,其中有一项关于《2019年你最想学的编程语言是哪个》的调查结果如下:
2019 年程序员最想学习的编程语言 Top 3 分别是 Go、Kotlin 和 Python,其中 Go 以 37.2% 的比例排在首位。
不知道大家最早是从什么渠道了解到Go语言的。小灰第一次听说Go语言,是几年前从一位日本程序员所写的书中所看到的。这位程序员就是松本行弘,Ruby语言的发明者。
在书中,松本行弘身为Ruby的发明者,对Go语言有着这样的描述:
“和其他一些语言相比,C/C++的历史比较悠久,因此不具备像垃圾回收等先进语言所提供的编程辅助功能。因此,由于开发效率一直无法得到提高,(谷歌)便产生了设计一种更好地系统编程语言的需求。而能够胜任这一位置的,正是全新设计的编程语言Go。”
那时候的松本行弘对Go语言予以了肯定,但或许连他也无法预测到,Go语言能够拥有今天的火爆程度。
或许有人说了:那么多新的编程语言,我哪儿学的动啊?我是不是掌握一门语言就够用了?
其实,小灰也曾对“程序员是否有必要掌握多门语言”感到困惑,想起之前看 Google 研究总监 Peter Norvig 发表过一个观点:
一个优秀的程序员至少应该掌握 6 种编程语言,其中包括一种支持类抽象的,如 Java 和 C++;一种支持函数抽象的,如 Lisp 或 ML;一种支持语义抽象的,如 Lisp;一种支援声明规范的,如 Prolog 或 C++ 模板;还有一种支援协程的,如 Icon 或 Scheme,一种支持并发的,如 Sisal。
事实上,精通一门编程语言和掌握多门编程语言,是不冲突的。小灰建议所有开发者都能有一到两门精通的主语言,并且可以掌握一些其他的语言,就像 Peter Norvig 说的,最好的就是每种类型的语言都可以掌握一门。
所以,学习并掌握 Go 语言是一个很不错的选择,它同时具备了 Python 的简易性,以及传统 C++ 和 Java 的性能,可用于所有对性能有较高要求的系统中,比如分布式系统、网络编程、高并发系统、服务端编程等。
那么,如何来学习 Go 语言呢?
找个高手,给你传道授业解惑
找出现有语言和 Go 语言容易混淆的不同点,强化练习
学以致用,尝试用 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日恢复原价
扫码订阅:
程序员小灰 粉丝特别福利:
1. 留言区说出你在学习编程语言中踩过哪些坑?点赞排名第一名的粉丝可获得极客时间 68 元任意课程兑换码,活动截止至3月7日12:00。
2. 购买专栏的小伙伴,加小伙个人微信号 neituiquan,备注“我已购买专栏”,可获得蔡超老师的QCon演讲视频一份。
机会有限,先到先得哦!