丹尼斯·里奇、于旸——两位著名黑客

丹尼斯·里奇#

丹尼斯·麦卡利斯泰尔·里奇###

(英语:Dennis MacAlistair Ritchie;1941年9月9日-2011年10月12日[3][4]),著名的美国计算机科学家,对C语言和其他编程语言、Multics和Unix等操作系统的发展做出了巨大贡献。在技术讨论中,他常被称为dmr,这是他在贝尔实验室的用户名称(username)。

生平##

丹尼·斯里奇生于美国纽约州布朗克斯维尔(Bronxville),的父亲是阿利斯泰尔·里奇(Alistair E. Ritchie),是贝尔实验室的资深科学家。

里奇在哈佛大学学习物理学和应用数学,毕业后于1967年进入贝尔实验室工作。1968年在哈佛大学Patrick C. Fischer的指导下,发表博士论文〈程式结构与计算复杂性〉(Program Structure and Computational Complexity),但是他始终没有正式获得博士学位。

他亦曾是朗讯技术公司系统软件研究部门的领导人(2007年退休)。1983年他与肯·汤普逊一起获得了图灵奖,获奖理由是他们“研究发展了通用的操作系统理论,尤其是实现了UNIX操作系统”。1999年两人因开发C语言和Unix操作系统一起获得了美国国家技术奖章。

C语言和Unix##

当有人问里奇是什么启发他如此设计C语言时,里奇回答说“看来是件值得做的事”("looked like a good thing to do"),他说任何人在同一地方、同一时间会像他那样做的;但是许多人认为这只是里奇的谦言,如C++的开发者和设计师(亦是里奇在贝尔实验室的同事)比雅尼·斯特劳斯特鲁普就曾说:“假如里奇决定在那十年里将他的精力花费在稀奇古怪的数学上,那么Unix将胎死腹中”。

事实上,丹尼斯·里奇与肯·汤普逊两人开发了C语言,并随后以之开发出了Unix操作系统,而C语言和Unix在电脑工业史上都占有重要的地位:C语言至今在开发软件和操作系统时依然是非常常用,且它对许多现代的编程语言(如C++、C#、Objective-C、Java和JavaScript)也有着重大影响;而在操作系统方面Unix也影响深远,今天市场上有许多操作系统是基于Unix衍生而来(如AIX与System V等),同时也有不少系统(通称类Unix系统)借鉴了Unix的设计思想(如Solaris、Mac OS X、BSD、Minix与Linux等),甚至以Microsoft Windows操作系统与Unix相竞争的微软也为他们的用户和开发者提供了与Unix相容的工具和C语言编译器。

里奇还参加开发了九号计划和Inferno操作系统以及Limbo语言,而这些项目均是基于他以前的成果进一步开发的。

麻省理工大学计算机系的马丁教授评价说###

如果说,乔布斯是可视化产品中的国王,那么里奇就是不可见王国中的君主。乔布斯的贡献在于,他如此了解用户的需求和渴求,以至于创造出了让当代人乐不思蜀的科技产品。然而,却是里奇先生为这些产品提供了最核心的部件,人们看不到这些部件,却每天都在使用着。

从B语言到C语言##

里奇开发 C 语言的初衷,是在与肯·汤普森合作研发 UNIX 系统时需要一种更好的描述性语言。

刚开始,UNIX 内核是使用汇编语言编写而成的。然而随着开发进展,数据量猛增,能够对数据进行有效整理和灵活操作的需求便应运而生。在1970年前后,他们尝试通过改进 Fortran 语言来进行数据管理和操作,却没有达到预想的目的。随即几年后,二人合作公布出了 B 语言。

关于 B 语言的名字由来,传言有两个版本。一说B是为了纪念肯恩的妻子邦妮(Bonnie),另有说法称, B 指代 BCPL,这是上世纪60年代中期由剑桥大学开发出的一种计算机语言。这两种说法孰是孰非并不重要,重要的是 B 语言的命名决定了其后的改进版本被命名为, C 语言。

B 语言是一种解释性语言,也就是说它在软件运行和 CPU 运行中起到中间层的作用。与此不同, C 语言是编译语言,它在运行之前被编译成机器语言,直接在 CPU 上运行,其运行速度非B语言所能比。

最早期的 C 语言和我们如今所使用的版本框架上并没有太大出入,但是功能简化许多。当时为了满足研发新型 UNIX 内核的需要,它主要提供了数据结构和变量类型。

里奇曾开玩笑称, C 语言拥有汇编语言的力量和汇编语言的便利性。这句话的意思是, C 语言的运行方式更接近于硬件系统。但是,里奇的这句玩笑并没有准确定位 C 语言的地位, C 语言所提供的数据结构,力发千钧,足以贯穿所有高层和底层的语言。

罗伯解释数据结构的重要性:###

当你在编写一个大型程序的时候,你需要管理各个组件之间的联系,包括用户、文件、硬盘、程序执行等等。为了对这些部分进行有效的控制,首先就需要对所使用的信息和数据进行清晰有效的表达,这个表达形式就是数据结构。
正如 UNIX 的源代码清晰流畅,可读性强。如果没有一个好的数据结构作为基础,这是不可能实现的。比如,当我们需要对大量数据进行分类和整合的时候,如果使用的是 Fortran 语言,就会变得束手无策。

由于 C 语言中对于数据结构的有效准确的定义,使得其具有强大的可移植性。这种特性使得用C语言所编写出的操作系统可以用于不同的平台,这正是里奇在研发 UNIX 时最主要的初衷,也是如今新型操作系统的主流开发方法。

苹果,微软,以及其他,都是站在里奇的肩膀上##

比尔是英伟达公司的首席科学家,同时也是斯坦福大学贝尔实验室的教授,他说:###

C 语言的开发是科技史上不可磨灭的伟大贡献,因为这个语言把握住了计算机科技中一个至关重要的并且是恰到好处的中间点,一方面它具备搭建高层产品的能力,另一方面又能够对于底层数据进行有效控制。正是由于这种关联性和枢纽性作用,决定了 C 语言所导向的近三十年来计算机编程主流方式。
从贝尔实验室到微软,再到众人所熟知的利器, C 语言是怎样在科技打造世界的革命中成为了最强有力的武器呢?

革命风潮始发于1973年,里奇发表出第一篇关于C语言的学术性论文。5年之后,他和同事布莱恩·克尼汉撰写出里程碑式的一本书《C程序设计语言》(The C Programming Language)。克尼汉日后回忆说,为了说服里奇加入合著阵营他费尽口舌,他笑称甚至险些“扭断了里奇的胳膊”。

罗伯对于里奇的崇拜正是来源于这本书。当时,他还是多伦多大学里的一名本科生,他回忆道:“我是在病床上第一次读这本书,立马就被其清晰的描述和深入浅出的解读给吸引住了,这种语言和逻辑的清晰准确表达是日后任何教材或者参考手册都无法超越的,它堪称经典,甚至让我忘记了当时正在生病。”

通过这本书,当年如罗伯一样的很多大学生开始使用 C 语言。尤其当贝尔实验室公布出 UNIX 的源代码之后,C语言的风潮已经势不可挡。可以说, UNIX 源代码的公布不仅推进了计算机语言的发展,更决定了日后互联网时代的开源计划是应始之驱。里奇于1983年被授予图灵奖,并且于1998年获得了国家科技勋章。

罗伯介绍说,里奇是一个非常低调地科研工作者。和乔布斯力图形成垄断的个人主义截然不同,里奇一直希望自己的工作能够为更多的科研工作者所用,能够为他人日后的科研工作和科技进展提供便利。

克尼汉评价道:牛顿说他是站在巨人的肩膀上,如今,我们都站在里奇的肩膀上。

这句话,应该是对丹尼斯·里奇先生的一生最有力也是最中肯的评价。

著作##

  • 《C程序设计语言》
  • 《Unix Programmer's Manual》

TK教主——于旸#

简介##

于旸,网名“tombkeeper”,在国内黑客界被尊称为“TK教主”,现任腾讯玄武实验室总监。于旸从事信息安全研究工作十余年,主要研究方向聚焦在针对各类型漏洞的挖掘、利用、检测、防御,以及涉及硬件、无线等方面的复合安全风险。他曾发现并报告了Cisco、Microsoft等公司产品的多个安全漏洞。在2008年北京奥运期间,他曾担任公安部奥运会信息网络安全指挥部技术专家,及CNCERT奥运信息安全保障小组技术专家,并获得CNCERT颁发的奥运信息安全保障支持个人一等奖。于旸曾在BlackHat US、CanSecWest等国际安全会议上发表演讲,是CISP认证“恶意代码”这门课程的最初设计者,也是微软漏洞缓解技术绕过悬赏十万美元大奖全球两个获得者之一。绿盟科技研究院安全研究部高级研究员,从事信息安全研究工作超过十年。曾发现并报告了Microsoft、Cisco等公司产品的多个安全漏洞。主要研究方向是APT防御、0-Day检测、移动和无线安全等领域。

研究方向##

主要集中在APT防御、0-Day检测、移动和无线安全等领域。

答记者问##

问:听说您找到第一个漏洞的时候,还在医院实习,您是如何燃起对信息安全领域的兴趣的?
实际上我对信息安全的兴趣并不是“燃起”的。我从小就热爱自然科学和工程技术,直到现在也是这样。只不过信息安全研究对物质条件要求比较低,只要一台电脑就可以研究很多东西,比较适合自学,所以当年很自然走向了这个领域。如果我生于豪门,小测验考一百分就可以得到质谱仪作为奖励,生日礼物是一个基因实验室,我可能就干别的去了。
虽然我读的是医科大学,但二年级也开了计算机课,学一些 DOS 系统操作、Foxbase 数据库之类。后来自己买了台计算机,才发现这里面可研究的东西太多了。另外比较幸运的是,当时全市唯一的计算机专业书店和计算机硬件市场都在我们大学附近。我买书和买硬件主要靠稿费和省下来的生活费。有段时间,我每个月只花 90 元吃饭,所以那时候身材特别标准。
一开始,信息安全只是我的业余爱好之一,促成我走上职业道路的是 Nimda 蠕虫事件。当时在自己电脑上架设了一个蜜罐,在 Nimda 蠕虫爆发当天捕获了它,并写了一份分析报告。虽然现在看来那份报告非常稚嫩青涩,但那是国内第一份对蠕虫这种新型安全威胁做出多角度分析的报告,被很多网站转载。甚至在那之后很长一段时间,各家安全公司对蠕虫类的分析报告,都以我那份报告的内容框架作为模板。有家安全公司因为我向他们提供了那份报告,送了我一套他们的软件。然后我很快又发现了那套软件的一个漏洞。虽然是非常简单的堆栈溢出,现在看来,也很稚嫩青涩,但这些都让当时的我非常自豪,并树立了信心。作为一个读了 5 年医科大学的人,做出决定去从事另一种技术工作,这种信心是很重要的。

问:您曾经说过,能不能从事信息安全工作是先天决定的,这些先决条件都包括什么?您是如何发现的?
说“先天”可能有些夸张,也许用“成年之前”这个词更合适。另外,信息安全工作分很多种,我特指的是信息安全攻防技术研究这个领域。
王尔德说:“教育是令人羡慕的东西,但要记住:凡是值得知道的,没有一个是能够教会的。”我见过很多出色的研究者,发现大家有一些共有的特征,包括想象力、观察力、好奇心、联想能力,等等。同时,我也见过一些技术底子好又努力的人,但没有做出比较好的成就,而他们的共性就是缺乏前面说的那些特征。所以这算是我的一点个人主观经验。

问:由您推荐,诸葛建伟、肖梓航、杨坤三位译者翻译的《Android安全攻防权威指南》一书最近已经出版了。Android系统和安全领域的图书很多,您在选择阅读技术书时有哪些标准?在阅读一本好书的时候应该注意什么?
我选书主要看作者是谁,另外也会参考 Twitter 等社交媒体上人们的推荐。比较优秀的技术专家,更有可能写出比较棒的内容,同时也更可能因为爱惜名誉,写东西比较认真。
我以前自学的时候,不知该看什么,就把书店里相关的书都买了。但现在安全类书太多了,有钱全买也没时间全看。但我仍然建议,如果你不确定一本书是不是该买,那就宁可错买,不可错过。如果买回来,翻了几页发现不好,只能拿来垫显示器,也不过损失几十元。但如果买对了,一本好书带来的益处将是无比巨大的。
读计算机技术类的书,最重要的是不能光抱着书读,得动手跟着做。

参考文献###

http://www.ituring.com.cn/article/196609
http://zh.wikipedia.org/wiki/丹尼斯·里奇
http://www.zhihu.com
http://baike.baidu.com/view/945392.htm
http://www.guokr.com/article/67488/

原文地址:https://www.cnblogs.com/xuzhili00/p/5274058.html