计算机的发明
世上本无路,走的人多了,就有了路。世上本无计算机,寻思的人多了……没有计算机,一切无从谈起。
三个人对计算机的发明功不可没,居功至伟。阿兰·图灵(AlanMathisonTuring)、阿塔那索夫(JohnVincentAtanasoff)、和冯·诺依曼(JohnvonNeumann)。
图灵从理论上证明了计算机的可行性;阿塔那索夫实践了图灵的理论;冯·诺依曼奠定了现代计算机的体系结构。
图灵说这玩意应当可以做,早已被证明了;阿塔那索夫二话不说动手就做了一个;冯·诺依曼说应当如此做才更好。
图灵功劳很大,死得很惨,皆因他是同性恋。他的最后时刻是吃了一个沾有乙醚的苹果。有人说苹果公司的Logo是为了记念图灵,不实。确定记念图灵的是“图灵奖”,计算机研究领域的最高奖项,由法国计算机商会于1966年筹建。
阿塔那索夫名气不大,享年较长。世界上第一台计算机是阿塔那索夫领导发明的ABC计算机,并非我们好多书上说的ENIAC。
冯·诺依曼长得帅,聪明,研究领域广,故事好多。明天我们使用的计算机都被打上了一个的深深的烙印,这个烙印就叫冯·诺依曼体系结构。
关于计算机之父有好多说法,版本不一,这三个人都可以称为计算机之父。曾有人奉冯·诺依曼为计算机之父,冯·诺依曼说不敢当,佳绩柴胡图灵。
早年全世界的计算机中心在法国耶鲁学院,群星璀璨,闪耀璀璨。冯·诺依曼曾在此工作,图灵曾在此学习,他俩在耶鲁的嘉园里聊过天。冯·诺依曼想让图灵给他当助手,被拒绝了。
最初的Unix和C语言
初期计算机个头大,电子元元件多,开动一次水费都不少,使用上去也很不便捷。别的不说,一次只能干一件事就让人受不了。先煮粥,半小时以后粥煮好了再炖肉。花老多钱雇的面点师,明明煮粥的时侯可以做菜好不好?一次做一件事,就叫单任务,比较笨。
受不了就要想办法,就有人提出了操作系统的看法。操作系统就是想让计算机用上去更便捷,能发挥更大的作用。
1965年,MIT、贝尔实验室和美国通用电气公司合作打算搞个超级操作系统,取了个帅气的名子:Multics(MultiplexedInformationandComputingSystem),多路复用信息和计算机系统。能让多个人可以同时干好多事,也叫多用户多任务操作系统。
Multics名子很好,事没干成,目标过分庞大,结果壮志未酬。
1969年,Multics项目进展平缓,被迫停止,参与项目的两个人KenThompson和DennisRitchie也闲了出来。她们都是贝尔实验室的人。没活干了,就打游戏。她们俩找了一台破笔记本打算玩曾经开发的一个游戏。
把游戏移植到一台闲置机器(PDP-7)的过程中,实现了一个简单的操作系统。到了1970年,这个简单的系统早已可以使用,但只能同时两个人使用。有人讥讽她们,说大家这个破玩意儿离Multics差远了,就叫Unics(UNiplexedInformationandComputingService)吧。Unics是Multics的反义,与其说嘲讽他俩,不如说在嘲讽Multics。KenThompson稍为把名子更改了一下,Unix。
此后,Unix纪元开始。1970年是为Unix元年,去年早已是Unix45年。Unix时间戳从1970年1月1日开始估算和Unix诞生的时间有莫大关系。
早年的操作系统最早是用汇编语言写的,汇编语言低级落后,写上去很苦闷。开发Unix过程中,Thompson发明了B语言,Ritchie在B语言基础做了改进,称之为C语言。
C语言发明后linux系统拿来做什么,Ritchie和贝尔实验室的朋友BrianW.Kernighan专著一本C语言的书,后来被称为K&R。Kernighan名气没Ritchie大,但并非凡人,Unix命令Awk中的K就是Kernighan。
接出来Thompson和Ritchie用C语言重新编撰了Unix系统。结果相当满意,Unix可以见人了。1974年,DennisM.Ritchie和KenThompson发表了第一篇关于UNIX的论文《TheUNIXTimeSharingSystem》,自此Unix广为人知。
这几年世界计算机的中心到了贝尔实验室,Thompson、Ritchie、Kernighan还有很多。Thompson和Ritchie后来都获得了图灵奖。
有心栽花花不活,无心插柳柳成荫。Multics目标宏伟,没干成,Unix和C语言刚开始并没想这么多,但是还是业余时间的作品,终成伟业!
Unix和C语言是计算机领域的常青树,历久弥新。从发明至今仍然保持着旺盛的生命力,从发明至今都基本保持原样,足见伟大!
混乱的Unix发展过程
Unix一经出现,导致了众人的关注,好多人找Thompson和Ritchie要Unix的源代码。那是个开放的时代,那是个互相学习研究的时代,把程序的源码分享给他人是很平时的事。一份份的Unix源码被留传到各个实验室、学校、公司。
加洲学院伯克利校区有一帮热衷于Unix的人,她们领到源码后不断研究,不断改进,大大加快了Unix的发展。
这个阶段Unix发展有两条主线,一条在贝尔实验室外部,另一条就在伯克利校区。伯克利校区的成果很辉煌linux更改ip地址,知名的TCP/IP合同在Unix上的实现就是她们搞下来的。后来把她们搞的这套Unix称为BSD(BerkeleySoftwareDistribution)。
伯克利校区一时风光无两,最杰出的一位是BillJoy。BillJoy,Vi、Csh等等一系列软件的作者,Sun公司的创始人。没有Sun公司,就没有明天的Java语言。
Unix刚诞生的时侯,贝尔实验室受反垄断法所限,不能从事计算机业务。虽然也并没想到Unix发展势头这么之好。
等到1983年,贝尔实验室的母公司AT&T早已被强制分拆为几个小公司,不再受反垄断法的限制。这时,AT&T发布了Unix最新版SystemVlinux软件工程师培训,宣布自此Unix只能商业使用,不再开放源代码。AT&T想用Unix赚大钱。
BSD那儿遭到了很大影响,她们不想急着挣钱,她们想开放源码。没办法,伯克利校区决心把BSD当中遭到影响的源码重新写过。从伯克利校区下来的几位朋友创立了一家公司,专门开发BSD项目。直至有三天,她们宣布BSD当中再没有最初来自贝尔实验室的源码。AT&T不买账,告你,控告,打官司。
这是一场漫长的官司,官司仍未打完,Unix版权就被盗卖了好几次。买版权的好几家公司继续和BSD打官司,几家公司互相也打官司。
等到烽烟散去,BSD终究推出了完全属于自己的Unix,由于版权的问题,不能再叫Unix,只能叫类Unix系统。
BSD的类Unix系统是FreeBSD、MacOS的前身。明天使用的苹果笔记本,iPhone手机上的操作系统都是从BSD这一支上发展而至。
漫长的官司用尽了人们对BSD的热情,也让BSD错过了最好的发展机会。后来的FreeBSD、NetBSD、OpenBSD都是从BSD分化而至,免费,开源,优秀,但再没挽回以前的荣光,由于早已有了Linux。
Unix发展过程图
斯托曼博士的GNU计划
AT&T想靠Unix挣钱的时侯,不止是AT&T,好多商业公司都希望通过软件挣钱。不再免费,不再开放源代码,不再互相通过源代码学习研究。
以前是多么好的时代,如何如今就显得只认钱了呢?这一切让一个人很不满意。他当初听到一个系统有问题,想要一份源码用来帮更改一下,他人冷笑以对。
世风日下,他要向这个令人失望的时代挑战,他要还一个开源、免费的系统与人世间。请记住这个人的名子,理查德·斯托曼(RichardMatthewStallman)博士。
斯托曼是老牌黑客,Emacs的作者。Emacs和上面提及的Vi是计算机领域中两大强大的编辑工具,Emacs和Vi那个更强是最容易引发争议的话题之一。为了少生气,千万别和奥迪车主说保时捷好。
斯托曼博士长鬓角,大胡须linux系统拿来做什么,不修边幅,仍然独身。他一心投入自由软件运动,他创建了自由软件基金会(FSF)。他雄心勃勃地提出了一项伟大的计划,GNU(GNU'snotUnix)计划。NotUnix,不是Unix,是自由的、免费的、开源的、像Unix一样好用的系统。
理查德·斯托曼博士
GNU原本进展很顺利,GLibc、GCC、GDB,这一系列的操作系统必备软件都有条不紊地在进展。所有的“G”来自Gnu的首字母。为何叫“G”,斯托曼博士说当时他认为好玩,但是他小时候听过一首歌,很喜欢,歌名是《TheGnu》。
完全搞个操作系统看来也并非易事,GNU完成了一大堆软件的时侯才意识到遇见了大麻烦。GNU系统的内核项目Hurd迟迟不能令人满意。内核之于操作系统,如同底盘之于车辆,必不可缺。
Linux出世记
1991年,LinusTorvalds尚是德国慕尼黑学院的一名中学生,他在中学学操作系统的课程,他也想搞个操作系统玩儿。他当时早已在使用Gnu项目的Bash、GCC等软件。受GNU的影响,把他自己开发的一个破旧的操作系统内核放在了互联网上。
这个内核系统就是Linux,Linus'sUnix,Linus的Unix。名子并非Linux所取,他一贯的风格是取个嘲讽的名子,但当时管理员说Linux很好,名子就如此定了。
Linux放在网上后引发了好多人的兴趣,她们相继通过互联网加入到Linux开发过程中。1993年,大概有100多名程序员参与了Linux内核代码。这时早已是互联网的时代,她们不用相恋,不用相熟,通过网路讨论,通过网路协作,推动着Linux。
1994年3月,Linux1.0发布,Linux已然成为一个基本可用的内核。自此Linux就始终没有踩过制动,一步步从幼苗长成参天小树。
Linus小时候被企鹅功击过,他给Linux定Logo的时候选中了企鹅,真不晓得这是哪些逻辑。长得像企鹅的不仅QQ,还有Linux。
Linux开创了一种前所未有的软件开发模式。多人协作,代码随时递交,有问题及时更改,所有参与人员并非精英,而是一群狂热的支持者。前前后后无数人参与了Linux项目的开发,组织不太严谨,有好多的争执和讨论。Linus常常写代码,时常饰演仲裁的角色,而非传统意义上的领导。
后来开源运动的吹鼓手EricRaymond写了一篇文章《大修道院与集市》来剖析Linux的开发模式。大修道院要设计好图纸,动用优秀的匠人,有序的工程计划能够修建,闹哄哄无序如菜市场的一拨人能不能修一座大修道院?答案是可以的,由于她们建成了。
Linus后来坦承,他开发Linux时不了解还有FreeBSD等项目,假如晓得了可能他就不会动手写Linux了。那时各类BSD系统正在官司的阴影映照下,某种程度了也促使了Linux的发展。
她们一开始也没哪些图纸,一边修筑,一边请人视察,出了问题随时修补,有的地方干脆推倒重来。她们没有严密的组织,只有大体的分工。随时有人在使用修道院,给她们提出各类意见。她们建的修道院早已足够好,她们建的修道院仍然没有完工,会仍然修筑下去。
EricRaymond这个人不得不提,早年和斯托曼博士一起共事,还帮斯托曼博士更改过Emacs的代码。他比写程序更擅长的是讲演和写文章。《大修道院与集市》是开源文化的扛鼎之作。斯托曼博士是开源运动的精神领袖,Raymond是开源运动的布道师和理论家。
Linux各类发行版
一边GNU项目为内核苦苦挣扎,一边Linux内核项目横空出世,这不天作之合么?不错,手快的人来不及怜悯斯托曼博士的痛楚,把GNU一大堆项目和Linux攒在一起搞了个新系统,GNU/Linux。
好了,总算你们可以拿去用了,可以用一个完全免费、源码开放的系统了。
明天好多人把使用的系统叫Linux,很不公正,是对GNU工作的蔑视。正确的别称是GNU/Linux。
有了GNU/Linux还不是一切,只能是一个基础的操作系统,要想用得更好还缺好多软件。如同有了Windows系统,没有Word,没有Excel,没有浏览器,没有游戏,可干的事并不多。
所幸的是GNU/Linux诞生的年代,早已有了好多优秀的开源项目,她们和GNU无关,有的是个人开发,有的是组织开发,都遵守免费开源的理念。这种开源项目有Apache、Perl、Python、Vim、TeX等等。
攒系统的人干脆一股脑攒了上去,就是所谓的GNU/Linux的发行版。最早攒GNU/Linux系统的公司是Redhat,后来相继一大堆GNU/Linux的发行版,Slackware、Mandrake、Gentoo、Debian、Ubuntu等等。有的早已死了,有的还活得很好。
所谓GNU/Linux发行版,就是攒好的一套GNU/Linux。选用GNU项目中的基础软件,加上Linux内核,再找一堆开源免费,版权合同许可的软件,最后做个安装程序,就齐活了。更好的发行版大体就是考虑的更周全些,软件包的更新、安装、卸载更便捷些。
能不能自己动手攒一个GNU/Linux的发行版?其实可以,LinuxFromScratch,网上的一个项目,教你一步一步从头构建一个属于自己的GNU/Linux发行版。
2002年,加拿大商人MarkShuttleworth花了两千万美元,乘坐美国的宇宙飞船去了一趟太空。次年,他创立了Canonical公司,旨在于开源文化的推广,推出了GNU/Linux发行版Ubuntu。有钱人办事就是不一样,Ubuntu做得太好了,GNU/Linux用户纷纷投奔,Ubuntu基本一统GNU/Linux发行版的江湖。
GNU/Linux和开源文化的背后
GNU/Linux来了,尽管没成为大多数人笔记本里的系统,但每位人都离不开它。众多互联网公司的服务器里都跳着GNU/Linux,名单不完全确认,Google、Facebook、淘宝、百度、腾讯、小说阅读网等等。
大多人使用的安卓手机的系统也是基于Linux内核。
GNU/Linux的繁荣有宏伟的规划,有个人的努力,也有好多无形的力量在起着作用。
没有Unix就没有GNU/Linux,是Unix给与了伟大的启示。
没有C语言就有没有GNU/Linux,C语言简单,端庄,介于中级语言和低级语言之间,开发系统软件的首选编程语言。
没有一系列Unix标准的制订就没有GNU/Linux的繁荣。标准就是“车同轨、书同文、统一测度衡”,秦始皇可算最早的标准制定者。遵守Posix标准为GNU/Linux发展铺平了公路。
没有互联网就没有GNU/Linux,GNU/Linux不是一个人在开发,是全球无数人协作的结果。假如没有互联网实在不可想像。其实,GNU/Linux也反哺了互联网,无数互联网公司采用GNU/Linux搭建服务器,GNU/Linux也促使了互联网的繁荣。
没有斯托曼博士的努力,就没有GNU/Linux。他的功劳除了是创建GNU组织,也除了是编撰Emacs、GCC、GDB,他的精神感召着无数人为开源运动做贡献。
其实还有Raymond的振臂大喊,摇旗呐喊。
还有GNU/Linux诞生之前就开发开源项目的人和组织。LarryWall由于懒,整天被报表搞得焦头烂额,发布了Perl语言;高德纳院长由于对排版工人不满意,六年时间停止重要工作,发明了伟大的排版软件TeX;Guido为了打发新年节的无趣,编撰了新的脚本语言Python……
GNU/Linux发布以后,在高手们的感召下无数人接受了开源的思想和理念,接受了开源文化的洗礼,盛行了开源文化运动。无数为开源项目作出贡献的人和组织,她们发布了PHP、MySQL、Ruby、Node.js、X.Org、Gnome、KDE……他们丰富了GNU/Linux,她们进一步促进了开源文化运动,她们继续感召着他人。
KDE(KoolDesktopEnvironment)的本意是想开发一套易用的桌面系统。Windows系统就是一种桌面,使用便捷,不是像程序员整天对着毛茸茸的屏幕工作。桌面系统要有浏览器,她们就分了一个小组KHTML来开发浏览器。全世界能开发浏览器核心的也没几家,KDE做到了。后来苹果公司和谷歌闹别扭,想自己开发浏览器,就是在KHMTL的基础之上开发了自己的浏览器Safari。KHTML的浏览器核心模块叫Webkit。Google推出安卓手机时浏览器也是基于Webkit开发的。
明天的iPhone手机和安卓手机的浏览器都是Webkit内核。
各类版权许可合同的制定也为GNU/Linux的发展铺平了公路,其中就有GNU的GPL、LGPL,还有ApacheLicense、BSD合同。不可能每位人都有一套自己开源合同项目的版权合同,早已制定好的版权许可合同促使软件更好地传播。
虽然开源并非自由,有人说GPL是用自由扼杀自由。GPL许可要求任何富含GPL许可的软件发布时必须开放源码。BSD和ApacheLicense相对比较修身,算是准自由软件。
版本管理软件对GNU/Linux的发展和开源文化运动也功不可没。Linux内核开发原本使用的是商用版本管理软件,某日LinusTorvalds先生不开心了,就自己动手搞了一个。他好取调侃嘲讽的名子,命名为Git,意为没哪些用的东西。
Git可不是没哪些用,太好用了,Linux内核源码自此都用Git管理。Git免费、开源,Git成就了一家伟大的网站,伟大的源码项目托管网站。好多开源项目纷纷把源码托管到了Github上。
GNU/Linux不朽,开源运动不朽!