快捷搜索:

黑客与C语言

黑客”这个词想必我们已经如雷贯耳了。我们一听到黑客通常在大脑中的印象就是一群穿着黑衣,躲在小屋里偷偷用着数台电脑针对某组计算机,神不知鬼不觉地进行攻击。他们通常会攻入一些网络或系统,潜伏在一些大型网站,窥探甚至窃取用户隐私,比如窃取你的QQ号、微信号、你的邮箱,诸如此类的事情。他们通常拥有高超的技术,于无形中做很多我们或惊叹或惊吓的事。他们就像《海盗船》的Jack船长一样分明是“恶势力”,却又诡异、神秘,有超强的能力,而好莱坞中各类电影和电视剧对黑客的渲染更是使我们对他们的世界充满了探究的意愿。

其实黑客有时候也是统称,也有灰客、白客。然而,以上这只是狭义上的黑客,其实在现在的英语中用Cracker来描述这种专门搞计算机系统以及网络系统破坏的人。而广义上讲,黑客(Hacker)对于程序员而言其实是指精通于计算机以及计算机网络的人。所以这么一来我们就能理解为何许多伟大的系统缔造者、编程语言缔造者能被称为黑客了,尽管他们并不是以破坏系统而闻名。

1. Unix系统创始人Dennis Ritchie

这里首先介绍的就是大名鼎鼎的Dennis Ritchie,于2011年12月逝世。他是伟大的Unix系统的创始人,同时也是著名经典的C编程语言的缔造者。曾在1983年从ACM获得图灵奖。在早些时候,Unix系统其实是用汇编语言开发的,那个时候Dennis Ritchie与另一个伟大的黑客Ken Thompson(现就职于Google,并打造了Go语言)在贝尔实验室一起实现了在DEC生产的PDP-7计算机上的Unix系统。那时,他俩准备将此操作系统移植到PDP-11上。刚开始,PDP-11上的Unix系统仍然是用汇编语言开发的,但是因为PDP-11与PDP-7的变化还是有不少的,所以那时候开发者打算用B语言来重写该系统。B语言是由Ken Thompson从BCPL编程语言简化而来的。然而,B语言无法很好利用PDP-11上的某些特性,比如字节寻址,这就使得Dennis Ritchie与Ken Thompson一起打造了更灵活、更强大的C编程语言。而C语言一开始也就是针对PDP-11计算机上的Unix系统而打造的。在1972年,Unix中的大部分代码都用C语言重写。到1973年,引入了结构体类型 struct 之后,C语言就基本成型了,因为它足够强大,所以足以担当Unix系统内核大部分功能的实现。而此时的C语言也被称作为“K&R C”。

当然,Dennis Ritchie也有他调皮的一面。在早期开发的Unix系统中,他特意留了一些后门。其他开发者用自己账号登录系统之后,他们发现自己的文件或某些资料被改动过,一直很纳闷。他们后来通过排查,发现了当时Unix系统的一个漏洞,把它堵上后,但没过多久自己的账号又被侵入了。后来才知道,原来是Dennis Ritchie在C语言编译器上埋下了后门,所以只要他们用编译器编一次程序,那么漏洞就会自动生成,哈哈……这个也让笔者联想起前两年很多iOS开发者通过百度网盘下载带有后门的Xcode,使得很多App受到木马侵袭,而且该木马能躲过Apple的代码审核机制。尽管该漏洞破坏性不大,因为iOS系统以及iOS设备处理器的本身运行安全机制很厉害,不过这也说明了来自编译器的后门是防不胜防的。

2. Linux系统内核缔造者Linus Torvalds

下面说的这位黑客应该大家非常熟悉了,就是大名鼎鼎的Linus Torvalds,Linux系统内核的缔造者,Git版本管理工具的缔造者。Linus Torvalds从1988到1996年在自己祖国芬兰的赫尔辛基大学修完了硕士学位。在此期间,他看了Andrew Tanenbaum的一本书《Operating Systems: Design and Implementation》,在此书中Andrew描述的是MINIX系统,该系统是Unix剥离下来的一个用于教学的版本。此时,由于在芬兰很难获得软件,所以这也促成了Linus Torvalds喜欢自己动手的习惯,他购买了一套Sinclair QL,然后自己为它写了一套汇编器以及编辑器,然后自己独立编写了一个类似吃豆人(Pac-Man)的小游戏,称为Cool Man。在1991年,他购买了基于Intel 80386的IBM PC,同时在此之前也收到了MINIX的一个拷贝,从而他就开始了在Intel 80386上的Linux内核开发。Linux的第一个版本正式版本1.0在1994年3月14号发布。在2005年,Linus创建了Git这一版本控制系统(VCS)的开源项目,基于GPLv2许可证。现在我们看到很多项目、工具以及网站都会默认使用Git工具进行版本控制,包括Xcode,GitHub等等。

当然,Linus Torvalds跟不少程序员一样,也有偏执、狂傲的一面。比如在开发Git项目过程中,有位开发者表示Git项目用的都是纯C语言而不是C++表示不可理解,而且也直言不讳:“别拿可移植性说事,那是屁话”。并且还指出,蛮力地直接操作文本,既??掠忠状恚??液苣迅?细卟愦?肼呒?5笔?inus Torvalds对此发出了强烈的不满!他一上来也爆粗口——“YOU * are full of bull shit”,紧接着他开始炮轰C++了,哈哈。大致意思如下:

您可能还会对下面的文章感兴趣: