1.计算机的发明,世界上没有出路。走的人多了,就会有路。世界上没有电脑,思考的人太多了……没有电脑,一切都无从谈起。这三个人对计算机的发明功不可没,立下了汗马功劳。艾伦·马西森·图灵、约翰·文森特·阿塔纳索夫和约翰·冯·诺依曼。图灵从理论上证明了计算机的可行性;阿塔纳索夫实践了图灵的理论;冯·诺依曼奠定了现代计算机的体系结构。图灵说这个东西应该是可以造出来的,而且已经证明了;阿塔纳索夫一言不发地做了一个;冯诺依曼说,这样做应该更好。AlanMathesonTuring,Atanasoff,vonNeumannTuring做出了很多贡献,因为他是同性恋而惨死。他的最后时刻是他吃了一个沾有氰化钾的苹果。有人说苹果的Logo是为了纪念图灵,这是不对的。纪念图灵的是计算机研究领域的最高奖项“图灵奖”,由美国计算机协会于1966年设立。阿塔纳索夫名气不大,很久以前就去世了。世界上第一台计算机是阿塔纳索夫发明的ABC计算机,而不是我们很多书上提到的ENIAC。冯诺依曼长得帅,聪明,研究领域广,故事多。我们今天使用的计算机都打上了很深的烙印,这就是所谓的冯·诺依曼架构。关于计算机之父的说法有很多种,也有不同的说法。他们三人堪称计算机之父。曾有人将冯·诺依曼奉为计算之父,但冯·诺依曼表示自己不敢,荣誉应该归图灵。早年,世界计算机中心在美国普林斯顿大学,星光熠熠,耀眼夺目。冯诺依曼在这里工作,图灵在这里学习,他们在普林斯顿花园聊天。冯·诺依曼希望图灵成为他的助手,但被拒绝了。2.原始的Unix和C语言KenThompson,DennisRitchie,BrianKernighan早期的电脑很大,电子元器件太多,一次启动电费很多,使用起来很不方便。如果没有别的,一次只做一件事是压倒性的。先煮粥,半小时后再炒粥。花大价钱请一个能边煮菜边煮粥的厨师可以吗?一次只做一件事叫做单一任务,这是愚蠢的。实在受不了就得想办法,就有人提出了操作系统的想法。操作系统是为了让电脑使用起来更方便,发挥更大的作用。1965年,麻省理工学院、贝尔实验室和美国通用电气公司合作打造了一个超级操作系统,并给它起了一个霸气的名字:Multics(MultiplexedInformationandComputingSystem),复用信息和计算机系统。它允许多人同时做很多事情,也被称为多用户多任务操作系统。Multics是个好名字,但是事情做不成,目标太大,结果没有兑现。1969年,Multics项目进展缓慢被迫停止,参与该项目的两人肯·汤普森和丹尼斯·里奇也闲着。他们都来自贝尔实验室。当没有工作可做时,就玩游戏。两人找来一台坏掉的电脑,开始玩他们之前开发的游戏。在将游戏移植到空闲机器(PDP-7)的过程中,实现了一个简单的操作系统。到1970年,这个简单的系统开始运行,但一次只能供两个人使用。有人嘲笑他们,说你这狗屎跟Multics差远了,就叫Unics(UNiplexedInformationandComputingService)吧。Unics是Multics的反义词,与其调侃,不如说说Multics。KenThompson稍微改了个名字,叫Unix。从此,Unix时代开始了。1970年是Unix的元年,今年是Unix的第46个年头。Unix时间戳是从1970年1月1日开始计算的,这与Unix诞生的时间有很大关系。早年的操作系统先是用汇编语言写的,低级落后,写起来很痛苦。在开发Unix的过程中,Thompson发明了B语言,Ritchie在B语言的基础上进行了改进,称之为C语言。C语言发明后,Ritchie和贝尔实验室的同事BrianW.Kernighan合着了一本关于C语言的书,后来被称为K&R。克尼汉不如里奇出名,但也算不上非凡。Unix命令Awk中的K是Kernighan。接下来Thompson和Ritchie用C重写了Unix系统,结果还是比较满意的,Unix可以见人了。1974年,DennisM.Ritchie和KenThompson发表了第一篇关于UNIX的论文《The UNIX Time Sharing System》,从此Unix广为人知。近年来,世界计算机中心先后来到贝尔实验室、汤普森、里奇、克尼汉等多家。汤普森和里奇后来都获得了图灵奖。有心种花,花不生,无心种柳,成荫。Multics的目标雄心勃勃,但没有实现。Unix和C语言一开始没想那么多,还是业余的作品,最终成就大业!Unix和C语言是计算机领域的常青树,长盛不衰。自发明以来,一直保持旺盛的生命力,基本保持了发明以来的原貌,可见其伟大!3、混乱的Unix发展历程Unix一经出现,就引起了大家的关注。很多人向Thompson和Ritchie索要Unix的源代码。那是一个开放的时代,一个相互学习和研究的时代,一个程序的源代码与他人共享是很普遍的。Unix源代码的副本被传播到各个实验室、学校和公司。在加州大学伯克利分校有一群热衷于Unix的人。他们得到源代码后,继续研究改进,极大地促进了Unix的发展。现阶段有两条主要的Unix开发路线,一条在贝尔实验室,另一条在伯克利。伯克利的成就非常辉煌,就是他们提出了著名的TCP/IP协议在Unix上的实现。后来,他们创建的Unix被称为BSD(BerkeleySoftwareDistribution)。加州大学伯克利分校有过风华正茂的时刻,其中最杰出的是比尔·乔伊。BillJoy,Vi、Csh等一系列软件的作者,Sun公司的创始人。没有Sun,就没有今天的Java语言。Unix刚诞生时,贝尔实验室受到反托拉斯法的限制,不能从事计算机业务。其实没想到Unix的发展势头这么好。到1983年,贝尔实验室的母公司AT&T已经被强行拆分成几个小公司,不再受到反托拉斯法的限制。这时,AT&T发布了最新版本的UnixSystemV,宣布Unix只能用于商业,不再开源。AT&T想通过Unix赚大钱。BSD方面受到了很大的影响。他们不想急着赚钱,他们想开源。没办法,Berkeley决心用BSD重写受影响的源代码。伯克利的几个学生成立了一家公司来开发BSD项目。直到有一天,他们宣布BSD中没有原始来自贝尔实验室的源代码。AT&T不买账,不起诉你,起诉,打官司。这是一场旷日持久的官司,Unix的版权在官司结束前已经被转卖了好几次。几家购买了版权的公司继续起诉BSD,几家公司也互相起诉。当硝烟散去,BSD终于推出了自己的Unix。因为版权问题,已经不能叫Unix了,只能叫Unix-like系统。BSD的类Unix系统是FreeBSD和MacOS的前身。现在使用的苹果电脑和iphone的操作系统都是从BSD分支发展而来的。漫长的官司耗尽了人们对BSD的热情,也让BSD错失了最好的发展机遇。后来的FreeBSD、NetBSD、OpenBSD都是从BSD中分化出来的。它们是免费的、开源的、优秀的,但它们并没有重振雄风,因为已经有了Linux
4。GNU项目RichardS.RichardMatthewStallman的GNU项目当AT&T想从Unix赚钱的时候,不仅AT&T,许多商业公司都希望通过软件赚钱。不再免费,不再开源代码,不再通过源代码相互学习和研究。以前多好的时候,怎么现在只认钱了?这一切都让人非常不满。他曾经看到一个系统有问题,想要一份源代码帮他修改,却遭到别人的冷笑。世界在走下坡路,他要挑战这个压抑的时代,他要还世界一个开源自由的系统。记住这个人的名字,RichardMatthewStallman博士。Stallman是一位资深黑客,也是Emacs的作者。Emacs和前面提到的Vi是计算机领域两个强大的编辑工具。Emacs和Vi哪个更好,是最具争议的话题之一。为了避免吵架,千万不要跟宝马车主说奔驰好。Stallman博士留着长发、留着胡子、邋遢而且总是单身。他热衷于自由软件运动,创立了自由软件基金会(FSF)。他雄心勃勃地提出了一个伟大的项目,即GNU(GNU'snotUnix)项目。NotUnix,不是Unix,是一个免费的、免费的、开源的、和Unix一样简单易用的系统。GNU先是进展顺利,GLibc、GCC、GDB等操作系统必备的一系列软件都在有条不紊地进行着。所有的“G”都来自Gnu的首字母。为什么叫“G”,Stallman博士说他当时觉得很好玩,小时候听过一首歌,非常喜欢。歌名是《The Gnu》。看来要完全搭建一个操作系统并不容易。GNU在完成大量软件的时候意识到自己遇到了大麻烦。GNU系统的内核项目Hurd长期以来一直不尽如人意。内核之于操作系统就像引擎之于汽车一样不可或缺。五、Linux的诞生1991年,LinusTorvalds还是芬兰赫尔辛基大学的一名学生。他在学校学习操作系统课程,他也想建立一个操作系统来玩一玩。他已经在使用Bash、GCC和Gnu项目的其他软件。受GNU的影响,他把自己开发的一个简单的操作系统内核放到了网上。这个内核系统就是Linux,Linus'sUnix,Linus'sUnix。该名称不是由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早年曾与Stallman博士共事,并帮助Stallman博士修改了Emacs代码。他比写程序更擅长的是说话和写文章。《大教堂与集市》是开源文化的杰作。Stallman博士是开源运动的精神领袖,Raymond是开源运动的布道者和理论家。6.Linux的各种发行版GNU项目为内核而苦苦挣扎,而Linux内核项目又凭空诞生,这不是天作之合吗?是的,手快的人无暇同情Dr.Stallman的痛苦,大量的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/Linuxdistribution就是已经保存下来的一套GNU/Linux。选择GNU工程中的基础软件,添加Linux内核,找一堆版权协议授权的开源免费软件,最后做一个安装程序,就大功告成了。更好的发行版通常被认为更全面,更新、安装和卸载软件包也更方便。你能自己构建一个GNU/Linux发行版吗?当然,在线项目LinuxFromScratch将教您从头开始逐步构建自己的GNU/Linux发行版。2002年,南非商人马克·沙特尔沃斯斥资2000万乘坐俄罗斯飞船进行了一次太空旅行。次年,他成立了Canonical,致力于推广开源文化,并推出了GNU/Linux发行版Ubuntu。有钱人做事的方式不同。Ubuntu做得如此之好,以至于GNU/Linux用户转向了他们。它已经成为大多数人电脑中的一个系统,但每个人都离不开它。很多互联网公司的服务器运行的是GNU/Linux,名单不完全确定,谷歌、Facebook、淘宝、百度、腾讯、小说等。大多数人使用的Android手机系统也是基于Linux内核的。GNU/Linux的繁荣有宏伟的计划,有个人的努力,还有很多无形的力量在起作用。没有Unix,就没有GNU/Linux,而Unix给了很大的启发。没有C语言,就没有GNU/Linux。C语言简单、优雅,介于高级语言和低级语言之间,是开发系统软件的首选编程语言。没有一系列Unix标准的制定,就没有GNU/Linux的繁荣。标准是“车同轨,书同文,度量衡统一”。秦始皇可以算是最早的标准制定者。遵循Posix标准为GNU/Linux的发展铺平了道路。没有互联网,就没有GNU/Linux。GNU/Linux不是一个人开发出来的,而是全世界无数人协作的结果。如果没有互联网,这是不可想象的。当然,GNU/Linux也反哺了Internet。无数互联网公司使用GNU/Linux搭建服务器,GNU/Linux也促进了互联网的繁荣。没有Stallman博士的努力,就没有GNU/Linux。他的贡献不仅是创建了GNU组织,还编写了Emacs、GCC和GDB。他的精神激励了无数人为开源运动做出贡献。雷蒙当然是举起双臂呐喊,挥舞旗帜呐喊。在GNU/Linux诞生之前,也有一些人和组织开发了开源项目。因为懒惰,LarryWall整天被各种报道压得喘不过气来,于是他发布了Perl语言;Knuth教授因不满排版工人而停止了十年的重要工作,并发明了伟大的排版软件TeX;无聊,写一门新的脚本语言Python...GNU/Linux发布后,在前人的启发下,无数人接受了开源的思想和观念,接受了开源文化的洗礼,开源文化运动应运而生.无数人和组织为开源项目做出了贡献,他们发布了PHP、MySQL、Ruby、Node.js、X.Org、Gnome、KDE……他们丰富了GNU/Linux,他们进一步推动了开源文化运动,他们继续激励他人。KDE(KoolDesktopEnvironment)的初衷是开发一个简单易用的桌面系统。Windows系统是一种桌面,简单易用,不像程序员整天对着黑屏工作。桌面系统需要浏览器,所以他们分了一组KHTML来开发浏览器。世界上很少有公司能开发浏览器内核,而KDE做到了。后来苹果和微软关系尴尬,想开发自己的浏览器,于是在KHMTL的基础上开发了自己的浏览器Safari。KHTML的浏览器核心模块称为Webkit。谷歌推出Android手机时,浏览器也是基于Webkit开发的。现在的iPhone和Android手机的浏览器都是Webkit内核。各种版权许可协议的制定也为GNU/Linux的发展铺平了道路,包括GNU的GPL、LGPL、ApacheLicense、BSD协议。不可能每个人对自己的开源协议项目都有一套版权协议。已制定的版权许可协议使软件更好地传播。事实上,开源不是自由。有人说GPL是用自由来扼杀自由。GPL许可证要求任何包含GPL许可证的软件在发布时必须是开源的。BSD和ApacheLicense比较宽松,可以算是准自由软件。版本管理软件也对GNU/Linux的发展和开源文化运动做出了贡献。Linux内核开发最初使用商业版本管理软件。有一天,LinusTorvalds先生不高兴,于是他自己造了一个。他取了一个自嘲的名字,取名为Git,意思是没用的东西。Git不是一无是处,就是这么好用,Linux内核源码也从此开始用Git管理。Git是免费和开源的。Git打造了一个很棒的网站github.com,一个很棒的源代码项目托管网站。许多开源项目都在Github上托管了他们的源代码。GNU/Linux不朽,开源运动不朽!