2011年10月6日乔布斯逝世,全球各大媒体都用头版头条进行报道。

几天后的10月12日,丹尼斯·里奇在新泽西独居的家中去世。这个可以比肩乔布斯的人,在当时媒体上则少有报道。

霍兰德类型说_霍兰德代码类型_霍兰德类型表

罗伯·派克当时说:

“史蒂夫·乔布斯上周去世引发了巨大的反响,这当然合情合理。影响更为广泛的丹尼斯却不为公众所知。”

罗伯·派克何许人也中创网,他是谷歌GO语言的三位发明人之一。作为业界的传奇性人物,他曾经与丹尼斯·里奇在著名的贝尔实验室共事20年。

引子:闻名遐迩的C语言

丹尼斯·里奇为世人所熟知的贡献有两个。其一是Unix系统,其二就是即是不是程序员也熟知的一门编程语言——C语言。

C语言这个计算机编程语言为什么会妇孺皆知。因为我们现在用的互联网,计算机操作系统,电子设备都或多或少有C语言的影子。

霍兰德类型说_霍兰德代码类型_霍兰德类型表

Windows操作系统,苹果MacOS系统,Linux系统都是基于C语言实现的。这个世界上绝大部分流行的编程语言,都选择了用 C 语言来实现其编译,以及基础部分的运行。无论 C 语言设计本身有何种缺憾,在今天它已无可取代。

在计算机编程的各种语言中,C++是从C语言派生而来,Java的语言特点是从C语言那里沿用和发展的。就连现在最火热的Python语言最基本的部分也是由C语言实现的。

寻踪后我们就会发现,C语言的身影无处不在。

霍兰德代码类型_霍兰德类型说_霍兰德类型表

但丹尼斯·里奇的一生,带给我们的不仅是计算机领域的一门编程语言,而他的工作及人生态度,总结起来有以下这三点值得我们学习。

1、职业和兴趣的不断匹配

丹尼斯·里奇的本科和研究生专业都不是计算机。他本科学的是物理学,研究生是听从父亲的建议学的应用数学。博士论文写的题目是关于函数的次递归层次结构。

丹尼斯·里奇在接受采访时曾说:

“我开始对于物理学比较感兴趣,现在仍然是一个业余爱好者。早先上大学时包括读研究生,我在计算机理论方面花了不少时间(如图灵机、复杂性理论)。这其间,我对真实的电脑也非常着迷,着迷于所编即所见的编程经历。也正是因此促使我进入这一领域。”

丹尼斯·里奇在学习生涯中发现,自己不足以成为物理方面的学者,也不足以成为算法方面的专家。

他毕业后的第一份工作是给军方研制核武器,但显然不符合自己的志向,而计算机方向对他来说却是不错的选择。26岁时丹尼斯·里奇就进入了著名的贝尔实验室。

霍兰德代码类型_霍兰德类型说_霍兰德类型表

丹尼斯·里奇(右)和肯·汤普森

在贝尔实验室里,丹尼斯·里奇的第一份工作是参与贝尔实验室,麻省理工以及通用电气三方合作的项目,研发一种同时运行多个程序的操作系统——Multics。

后来因为研发难度过大,贝尔实验室最终退出。这时候里奇的同事——肯·汤普森,想让里奇借鉴之前的设计思路帮忙做一个个人项目——Unix系统。

后来Unix系统大获成功,成为上世纪80年代主流的操作系统。但这个系统因为不是通用的计算机语言编写的,移植到其他计算机上要重新编写程序。所以丹尼斯·里奇就在汤普森Unix系统B语言基础上进行改进,添加了数据类型和新语法,形成了跨时代的C语言。

霍兰德代码类型_霍兰德类型表_霍兰德类型说

1980年,Unix广告的照片

和今年以97岁高龄获得诺贝尔化学奖的约翰·B·古迪纳夫一样。他们所学专业和最终获得成功的领域其实并不对应。但是在学习过程中,他们会发现自己对什么更感兴趣,或者说哪个领域更容易施展自己的能力。

学习的过程就是一个探索自己兴趣和能力,和职业进行匹配的过程。

美国职业指导专家约翰·霍兰德,他根据大量的职业咨询经验及其职业类型理论,就编制了一套职业兴趣测试系统。

霍兰德认为,个人职业兴趣特性与职业之间存在一定的关系。有什么样的性格组合就会对应相应适合的职业。

比如程序员这一类职业的代码就是IRC,它就是结合了研究型,现实型和传统型的兴趣特点。

里奇和古迪诺夫都是在学习中找准了自己职业的落脚点。而不是听从旁人的意见霍兰德代码类型,所学专业有多么有前途,是不是有父辈对其的帮助等等。

我们都说兴趣是最好的老师。但很多时间我们去从事感兴趣的事情,却发现深入之后是那么的索然无谓。

兴趣的英文单词是interest,即inter-est。要深入其中,获得了深入的知识,才能体验到情绪上的满足感。这才是真正的兴趣。否则只能说那是一个爱好而已。

2、顺应人脑的学习方法

哥伦比亚大学计算机科学系,艾尔弗雷德·阿霍提到:

“丹尼斯·里奇不仅是富于创意的软件开发人员,更是一个顶级的技术作家。他可以把复杂的软件思想对初学者解释得简洁、清晰,且往往具有说服力。”

“他与克尼汉一起编写的《C程序设计语言》,在业内被评为编程的白皮书。不仅在编程语言方面,而且在宏观的编程思维方面,都是最佳教科书。”

拿到这本书你会发现,它正文仅150页左右。除了给出C语言的初始定义,而且教给初学者如何编写优雅而实用的C程序。

霍兰德类型表_霍兰德代码类型_霍兰德类型说

从1988年出版第二版后沿用至今。说明书籍撰写的内容相对稳定,小有漏洞。

作者在书的序中也提到,C语言不是大型语言,没有必要用很厚的书来描述。

书中采用教授方法不仅仅是讲述一些规则,而是采用阅读别人的代码,自己编写代码,修改某些代码的方式指导读者学习。

这种学习方法一直在计算机领域沿用至今。

《为什学生不喜欢上学》一书中,就从另一个侧面解释了为什么这种学习方法可以相对更容易学习一门编程语言。

这本书中提到,学生在学习新知识时,难就难在人的大脑本身缺乏缺抽象思维的能力。大脑倾向于接受具体的事务。只有足够多的具体事务,人脑才能更容易进行抽象思维。

所以学习C语言,从书中提供的直接可以运行的代码入手。先运行,看到代码的结果,在根据要求修改代码。这样在人脑中形成具体事务的印象。这时候再去理解抽象的概念,就会事半功倍。

反观我们现在一些书籍和教学方法,先从概念入手,感觉是由浅入深。但是一定程度上违背了人脑的思维方式,所以学习的效果其实并不理想。

3、开放不意味着无利可图

一流的企业做标准,二流的企业做品牌,三流的企业做产品。

丹尼斯·里奇的C语言从某个角度,也可以说就是一种平台。可以保证以此为基础开发的程序广泛流传和使用。它就像参天大树的巨型树干霍兰德代码类型,继承衍生出了更多的产品。

开放不意味着无利可图。

我们都知道安卓系统是开源的。根据以往的数据,在全球智能手机市场里,安卓系统的市场占有率已经高达87%。

每年可以给谷歌公司带来数百亿美金的盈利,可是它却一直是免费的,这是为什么?

其实谷歌主要的收入并不是安卓系统。谷歌本身作为搜索引擎公司,真正赚钱的是广告收入。

谷歌通过安卓系统,将广告投放到移动设备上获取收益。安卓系统以及谷歌的其他业务,都是增加其客户粘性的方法。

另外就是利用开源免费的平台,增加客户的使用量,形成稳定的生态链。使大家都在这个平台进行开发APP,没有了平台,这些APP就无法使用。所以当华为遭受制裁时,自主研发的鸿蒙系统就被提升到很高的战略高度。

霍兰德代码类型_霍兰德类型说_霍兰德类型表

1999年4月,克林顿总统为里奇和汤普森颁发国家技术与创新奖章

从丹尼斯·里奇的书中可以看到,成功人士他们不仅仅是做好自己的本职工作,而且还会更多的将所掌握的东西,传授给更多的使用者。公开开放,使这些知识技术成为使用者提升变现的工具。

所以麻省理工大学计算机系的马丁教授评价丹尼斯·里奇:

“如果说,乔布斯是可视化产品中的国王,那么里奇就是不可见王国中的君主。”

Java之父评价丹尼斯·里奇:

“C语言撑起了一切。我的整个职业生涯也是从C语言和Unix中发展而来”。

克尼汉称:

“牛顿说他是站在巨人的肩膀上,如今,我们都站在里奇的肩膀上。”

4、结尾

丹尼斯·里奇在2000年北京大学演讲时,一个学生提问:

“您发明了Unix和C语言是很久以前的事情了,请问在那以后您还做出什么成果吗?”

丹尼斯·里奇毫不介意的回答:“知道么,这是我第一次被问这个问题,我得考虑下这个问题的答案。”

因为他的毕生都奉献给了两件事,Unix和C语言。

霍兰德类型说_霍兰德类型表_霍兰德代码类型

汤普森(坐着)和里奇在PDP-11上一起工作

计算机历史学家保罗·茨露吉给丹尼斯·里奇做了最好的总结:

“里奇的名字并不容易让人察觉,也不为人熟知,但是假如有一个能够把计算机放大的显微镜,你会看到里面到处都是他的贡献。”

– END –

作者:米兰之翼。一手搞科研,一手带娃的奶爸。图片来自网络,文章欢迎留言指正。

参考资料:

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注