肯•汤普森当年开发 UNIX 的初衷是运行他编写的一款计算机游戏 Space Travel,这款游戏模拟太阳系天体运动,由玩家驾驶飞船,观赏景色并尝试在各种行星和月亮上登陆。他先后在多个系统上试验,但运行效果不甚理想,于是决定自己开发操作系统,就这样,UNIX 诞生了。
自 1970 年后,UNIX 系统在贝尔实验室内部的程序员之间逐渐流行起来。1971-1972 年,肯•汤普森的同事丹尼斯•里奇发明了传说中的C语言,这是一种适合编写系统软件的高级语言,它的诞生是 UNIX 系统发展过程中的一个重要里程碑,它宣告了在操作系统的开发中,汇编语言不再是主宰。
到了 1973 年,UNIX 系统的绝大部分源代码都用C语言进行了重写,这为提高 UNIX 系统的可移植性打下了基础(之前操作系统多采用汇编语言,对硬件依赖性强),也为提高系统软件的开发效率创造了条件。可以说,UNIX 系统与C语言是一对孪生兄弟,具有密不可分的关系。
肯•汤普森和丹尼斯•里奇因在计算机领域做出的杰出贡献,于 1983 年获得了计算机科学的最高奖——图灵奖。
Linux之父-Linus Torvalds(李纳斯.托沃兹)
1969年12月28日出生于芬兰赫尔辛基市。
父亲尼尔斯·托瓦兹(Nils Torvalds)是一名活跃的共产主义者及电台记者。
托瓦兹家族属于在芬兰占6%的少数民族芬兰瑞典人。他毕业于赫尔辛基大学计算机系,
当Linus十岁时,他的祖父,赫尔辛基大学的一位统计教授,购买了一台Commodore
VIC-20计算机。
Linus帮助他祖父把数据输入到他的可变成计算器里,做这些仅仅是为了好玩,
他还通过阅读计算机里的指令集来自学一些简单的BASIC程序。
当他成为赫尔辛基大学的计算机科学系的学生的时候,Linus Torvalds
已经是一位成功的程序员了。
1991 年,在学习了一套Unix 和C的课程之后,Torvalds购买了他自己的个人计算机(PC) 。
他对计算机的操作系统(MS-DOS)很不满,并且决定自己写一个操作系统。
于是他为自己配着 80386 处理器的新电脑写下了第一版的操作系统代码,开发工作是在 MINIX 中使用 GNU C 编译器完成的。
Minix是Andrew S.Tanenbaum,开发的一个以教学目的的类似Unix的操作系统,
Andrew S.Tanenbaum是一个想教他的学生真正的操作系统的内在工作原理的荷兰教授。
Minix是为在英特尔 8086 微处理器上运行而设计的,并且有可以用于研究的源代码。
Torvalds 决定开发超出Minix标准的一个操作系统。他称它Linux,Linus 'Minix的缩写。
Linus Torvalds 没有保留他的计算机编码的版权。他在因特网上公开了他的代码,并且邀请comp.os.minix新闻组的成员来帮助他建立他的操作系统。吸引了成千上万的程序员为之增补、修改和传播,短短几年就拥有了1000多万的用户,成为地球上成长最快的软件。
就在两年前,你去问一个程序员自由软件的前景,他肯定会告诉你,自由软件有意思,但难成气候。
而今,无数的程序员都将Linux作为自己首要的追求,否则不足以证明自己的境界。
创造简洁优雅的程序,写出干净而无冗长的代码,或者是超一流的程序,就足以赢得同行们的尊敬和推崇。
GNU大佬Richard Stallman
首先说说 编程大师Richard 的主要软件作品。
第一个是 GNU 操作系统。这个要从一个有意思的故事说起,Richard年轻时用到一个软件,结果发现有 Bug 。他于是找厂商要代码,说要帮助厂商修改一下,结果厂商说代码是有商业版权保护的,不能给他代码。Richard觉得这个事情很不合理,能不能自己实现一套完全自由的操作系统呢?单枪匹马,说干就干, GNU 项目就诞生了。GNU 系统最终没有独立成名,但是 Linux系统上绝大部分的软件都是来自 GNU 系统的,对,你没有听错,是绝大多数。
第二个是 Gcc 编译器。GNU 系统是由很多个软件组成的,其中一些的第一作者不是Richard 。但是,Gcc ,也就是 GNU 的 C 编译器是出自 Richard 之手。没有 Gcc ,那么 Linus 后来就没有办法去编译Linux 代码了。
第三个是 Emacs编辑器。熟悉编辑器之战的人自然之道这款编辑器的江湖地位,不多说。
Stallman认为当时最重要的是要开发一个自由的操作系统,于是GNU项目应运而生,通过从其程序设计中采用递归方式命名就可以看出,其目标是开发一个兼容UNIX,与UNIX系统类似但又不涉及UNIX庞杂版权的免费操作系统。GNU项目包括编辑器(Emacs)、编译器(GCC)、调试器(GDB)、内核(Hurd)、各种Shell及应用程序等多个项目,几乎涵盖了计算机应用的方方面面。
Stallman先生于1971年进入麻省理工学院(MIT)人工智能实验室工作,后来成为软件共享社区的重要成员。20世纪70年代中期的软件圈(当时还没有商业化的软件产业)鼓励自由复制、自由学习、相互切磋,计算机软件领域的一个优良传统就是为人人所共享。但风云突变,软件业的游戏规则随着一家公司的崛起而完全改变。20世纪70年代末,以微软公司创始人比尔·盖茨的《致电脑业余爱好者的一封公开信》为标志,以世界知识产权组织(WIPO)制定的《保护文学和艺术作品伯尔尼公约》为框架,计算机软件业迅速进入了版权时代,在这个巨大变革发生时,一个偶然的事件促使Stallman先生萌生了开发自由软件的念头,使他成为世界著名的自由软件精神领袖。
自由软件的故事大致如下:当时施乐(Xerox)公司先后两次赠送激光打印机(Laser
Printer)给实验室,由于当时激光打印机的体积比较庞大,所以只能放到离办公室很远的地方,遗憾的是,打印机的驱动存在问题,使用起来经常出现故障,好在当时打印机还提供了驱动的源代码,所以,Stallman很快就通过修改源代码解决了问题。可到了后来,也就是20世纪70年代末,由于软件的版权法已经生效,所以,Stallman无法获得打印驱动的源代码,导致打印机出了问题也无法自行修改,这次偶然的事件深深触动了Stallman,使他在头脑中诞生了自由软件的概念,并在其身体力行下,开拓了一条和商业软件封闭源代码截然不同的自由软件道路。
Richard 是非常激进的。他讨厌 Copyright ,因为Copyright 限制了普通人拥有和改动软件源码的权力,所以他主张 Copyleft ,Copyleft意味着任何人都享有对源码的使用权和修改权,同时如果你在以 Copyleft 授权的代码的基础上添加了新的功能,那么你开发的功能也必须是 Copyleft的。显然 Copyleft 是有病毒性的。
1974 年的时候,这哥们以优异的成绩从哈佛毕业了,获得了物理学士学位。
同时,理查德大学里还在麻省理工的人工智能实验室做程序员,水平也相当不错。
在理查德的哈佛小学弟比尔 · 盖茨刚辍学创业时,理查德跟实验室同事一起捣鼓出来的
Emacs 编辑器就开始风靡麻省理工了。后面理查德又写了 GNUEmacs
这个时候的理查德也非常喜欢在黑客社区蹦跶。
现在的黑客,通常指 “ 破坏计算机程序 ” 、 “ 钻程序漏洞 ”的人,但当时黑客更像是 “ 计算机疯子 ” :一些喜欢探索可编程系统的细节并不断优化的人。
那时候计算机行业氛围跟现在不太一样,自由拷贝、源码开放是当时的主流。
如果你想优化某个软件,那么找到它的源码( 大概率是开放的),然后动手改就完事了!这样自由的氛围造就了很多成功的软件,比如 Unix ~
但事情很快急转直下。
1976年理查德辍学创业的小学弟盖茨,发现软件的销量不太对,就写了份公开信谴责盗版行为,大意是:软件也是一种商品,应该收费卖钱;源代码是软件的核心机密,应该享受著作权且保密。
公司、程序员一听,卧槽有道理啊!有钱不赚是……
商业化席卷了整个软件行业,有才能的程序员投入了市场的怀抱,像 Unix这样被自由氛围成就过的软件,也被公司保护起来。
之前 Unix会以极低的价格甚至免费把源码给高校等研究机构,现在不但停止授权,还对之前的 Unix 和其变种声明了著作权利。
这种情况下, “ 计算机疯子 ” 们无法再自由的学习、修改、分发软件了。
如果是一般人面对这种事情,肯定也就算了,跟上时代 “ 同流合污 ” 。
但是真正的天才( 兼职疯子)是不会像现实屈服的,理查德决定再开个挂,就此改变了计算机的世界。
你不是要私有化么?你不是要自己玩么?
那我就自己做一套东西,然后整个开放掉!
理查德写一个跟 Unix 兼容的、自由的操作系统,起名叫GNU ,这个名字是 “GNU’s Not Unix ” 的递归缩写,并且建立一整套自由的生态,比如软件等。
在他这一套「 自由」的生态体系下,用户能够运行、复制、发布、研究、修改和改进程序,总之,有 100% 的控制权。
理查德作为大佬,号召了不少当时的黑客加入这个计划,还创立了 FSF (自由软件基金会 ),还雇佣了一批人来做事。
但,一个人能发起的力量终究是有限的。
所以查理德捣鼓出了一个 “ 病毒 ” ,GPL 协议。
这玩意是开源协议的一种,简单来说就是:GPL协议下的代码,你觉得有用随便拿去用,但你在此基础上发布的软件,代码也必须公开,不能保密。
在这种规则下, GPL 将自由感染到了互联网上的每一个角落。
以致于有人调侃, RMS 迟早会使可口可乐在 GPL 协议下公布他们的配方……
一切都很美好,除了理查德一直没写出自己满意的内核。
直到 Linus Benedict Torvalds 写出了Linux,并且把它放到网上让人随便用。
理查德发现以后,相当激动啊,就找到了 Linus 邀请他加入自己的自由软件大业。
就这样 GNU 以及 GNU 的生态再加上 Linux的生态组成了一个现代操作系统:GNU/Linux 。
GNU 官网会强调 Linux 是一个错误的称呼▼
虽然大部分人只知道 Linux ,不知道 GNU ,但是 Linux系统上大部分软件都来自于 GNU 。
你可能会觉得这些跟我们普通人好像没啥关系。
呐,小米、华为、中兴、魅族等咱们熟悉的大厂们都用过 GPL协议下的代码,开源的力量通过他们的产品抵达给每一位用户。
我们每一个人都或多或少的受益其中,只是可能不知道而已。