《码农群英传》连载(一) —— Go 语言之父 Rob Pike

近几年来在计算机语言排行榜上成长最快的语言就是 Go 语言。它一往无前势如破竹,从几年前的 50 名以外快速跃进前十的宝座,并且还在快马加鞭向上攀登。程序员

你们都知道 Go 语言是 Google 推出来的,它是由 Google 包养了一群骨灰级程序员组成了一个叫着「Go Team」的精英团队共同打造。这个队伍里有鼎鼎大名的 Unix 操做系统发明人 Ken Thompson,大胡子形象的他在人群之中拥有极高的辨识度。Ken Thompson 今年已经 75 岁了,刚参与 Go 项目时他正处于我的职业生涯的半退休状态,头发几乎所有掉光。 算法

图片
这个队伍里还有另一个其貌不扬头发很少的灵魂人物,从 Go 团队创建之初,他就一直在里面了。这我的名气没有 Ken Thompson 那么大,知道他的人并非太多,而这我的其实才是 Go 语言「元团队」里最为核心的人物 ,他就是今天要讲的程序英雄 —— 加拿大人 Rob Pike。

咱们如今看到的他已是一个 60 多岁的老头了,年纪虽然只有咱们的 2 倍多一点,可是在程序界工做的经验已是咱们大多数人的 5 ~ 6 倍。咱们中国的程序员多半工做了十多年就几乎不肯再继续写代码了,可是他整整写了40多年尚未金盆洗手。别看他如今头发已经掉光了,遥想当年,他的头发也曾茂密过,从照片中看彷佛仍是一个不错的帅哥。 编程

图片

他来 Google 以前一直在贝尔实验室捣鼓它的 Plan9 操做系统,虽然几乎没人据说过世界上还有这么一个操做系统,Plan9 这个项目已经活了不少年,到如今还有很多人在继续维护,Plan9 的官方主页是 9p.io/plan9/。我翻阅了这个官网上对 Plan9 的说明文档,里面有关 Plan9 的论文多达几十篇,这些论文中 Rob Pike 的名字署满了近一半。这足以说明 Rob Pike 不容小嘘,他就是 Plan9 操做系统的灵魂人物。数据结构

他是一个全能型程序员,从操做系统写到编译器,又从文本编辑器写到了 UI 界面。看到 Rob Pike 的伟大功绩,我难免要开始感叹本身的眇小,在他老人家面前我就是一个小学生 —— 都不如。

我本觉得他只是一个单纯的程序员,可是查阅资料后发现,他竟然仍是一位业余天文学家,发明过珈玛射线射电望远镜。 编程语言

图片
更要命的是他还参加了 1980 年的奥运会射箭项目夺得了银牌。
图片
1990年他上了电视,参与了大卫莱特曼的电视节目《Late Night with David Letterman》。
图片
他写过两本书,分别是《Unix 编程环境》和《程序编程实践》,感兴趣的同窗能够买来读一读,字字珠玑,读后一定受益不浅。

他说过一句话让我等数据结构学的很通常的后辈特别受鼓舞 —— 只要掌握了数据结构中的四大法宝,就能够包打天下,他们是:array 、linked list 、hash table、binary tree 。这四大法宝可不是各自为战的,灵活结合才能游刃有余。好比,一个用 hash table 组织的 symbol table,其中个个都是由字符型 array 构成的 linked list 组成的。编辑器

他和 Linus 大神有类似的观点 —— 以数据为中心。若是已经选择了正确的数据结构而且把一切都组织得层次分明,正确的算法也就不言自明。编程的核心是数据结构,而不是算法。工具

若是你喜欢玩弄高级的算法和数据结构,他说过的话可能会打击你 —— 花哨的算法比简单算法更容易出 bug 、更难实现。尽可能使用简单的算法配合简单的数据结构。编码

在他心目中,他一直以 Ken Thompson 为本身的导师操作系统

在我加入贝尔实验室一年多后,我开始和 Ken Thompson 一块儿在开发一个针对由 Gerard Holzmann 设计的很小的图形化交换语言的即时编译器上作结对编程。我打字比较快,因此我坐在电脑前,Ken 站在我身后看我编程。咱们开发的很快,但常常会遇到问题,并且能够看出来出错了 —— 毕竟这是一个图形化的编程语言。当程序出错时,我本能的一头扎进问题,检查报错跟踪信息,添加调试打印语句,启动调试器,等等,但 Ken 只是站在那思考,彻底不理会我也不查看咱们写的出问题的代码。一段时间后我发现一个规律,Ken 常常会比我先找到问题出在什么地方,并且会忽然的喊一嗓子,“我知道什么地方的问题了。”每次他的判断都很准确。我认识到,Ken 已经在脑海里构建了代码的模型,当有问题出现时,那是他脑子里的模型出了问题。在思考为何会发生这些错误时,他能凭直觉找到模型中什么地方不对或发现写的代码跟这个模式什么地方有出入。   Ken 教会了我一个极其重要的习惯:纠错前先思考。若是你一头扎进问题中,你可能只解决了当前出现问题的代码,但若是你先思考这个错误,这个 bug 是怎么引入的?你一般发现和纠正一个更高层次的问题,进而改进了系统设计,防止了更多 bug 的出现。   我认识到这种编程思考模式很是的重要。有些人痴迷于一行行的、使用各类工具来调试全部的东西。但我如今相信,思考 —— 不看代码的思考 —— 是最好的调试途径,由于它能让你开发出更好的软件。设计

他和 Ken Thompson 一块儿发明了全世界无猿不知的 UTF8 编码格式。在前沿科技的量子计算和通信领域也作过一些深刻研究。

图片

经过仔细翻阅他在贝尔实验室的我的主页,发现 2003 年发起了一次严重车祸 —— 下坡的时候他从自行车上摔了下来!摔断了三根肋骨、锁骨碎裂、肩胛骨纵向分裂。辛亏当时带了头盔,否则有没有今天的 Go 语言都很差说。过后他饶有兴趣地将本身骨头的 X 射线底片放到了我的博客上和粉丝们一块儿仔细研究观赏。

图片

感兴趣的同窗能够点击「阅读原文」欣赏原汁原味的 Rob Pike 我的简历页,地址是 herpolhode.com/rob/。我不是很能理解 Rob Pike 为何将上面的虫子做为我的主页的头像。

关注公众号「码洞」,催更《码农群英传》

相关文章
相关标签/搜索