
网上有关“在tc2.0的环境下怎么样来编写代码来实现集成界面系统?”话题很是火热,小编也是针对在tc2.0的环境下怎么样来编写代码来实现集成界面系统?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。
TC不可以!VC可以的!纯代码当然可以实现
转一篇别的地方的GUI历史吧!既然你说会加分,呵呵
追溯GUI历史作者:agiha 日期:2005-08-30
字体大小: 小 中 大
如果你使用电脑已经有一些年头,那么必定知道那些没有图形界面的操作系统,微软的DOS、UNIX以及最初的Linux,要熟练使用这些操作系统,用户必须牢牢记住大量的命令并且达到应用自如的程度。在那些年代,如果能够掌握计算机操作技能绝对会让人肃然起敬,但也正是由于操作的复杂性,计算机很难真正进入家庭、为普通用户所掌握。
计算机业界很早就意识到这个问题,以图形界面(GUI,Graphic User Interface)代替字符界面成为广泛的共识—图形界面操作直观,用户不加以特殊训练也能够很容易掌握,计算机应用的门槛大大降低。在上世纪八十年代之后,各种类别的操作系统都竞相引入图形界面,这其中除了我们熟知的微软Windows和苹果机之外,还有为数众多、但后来没落无踪的其他系统。在九十年代中期,图形界面开始真正取代字符界面成为标准,这其中又以微软的Windows 95为典型代表。进入到2000年后,操作系统原本残留的字符界面模式被完全取消,而图形界面也不满足以简陋的设计,朝向注重视觉体验的方向发展,苹果Mac OS X与微软Windows XP堪称是两大支柱。而在这之后,图形界面走向完美和个性化时代,终端用户都可以参与其中,为自己设计一套个人化的界面外观,而业界则将目光放到更遥远的将来,希望能在未来操作系统中采用3D化的全新视觉界面。
在下面的文字中,我们将向大家详细介绍图形界面的概念起源、实现以及详细的发展历程,期间将涉及到形形色色的操作系统。
从理论探索到产品雏型
GUI界面电脑的概念始于上世纪三十年代,当时有一位名为“凡尼佛·布什(Vannevar Bush)”的人物,他天马行空提出一个称为“Memex”的智慧设备,他认为这种设备具有与书桌类似的外观,同时还有两个可触摸操作的显示器、一个输入键盘以及一个扫描仪,通过这个设备,用户可以访问到人类的所有知识库。在那个年代,计算机远未产生,凡尼佛·布什的想法纯属没有根据的科学幻想,根本不可能成为现实。但不可否认的是,这套设想极富远见,它成功地描绘了半个世纪后的计算机形态,也许微软的平板电脑曾经从Memex的直接触摸操作概念中获取灵感。
道格拉斯博士的NLS系统
我们无法确认微软是否借鉴了凡尼佛·布什的天才设想,但可以确信的是,这套设想对操作系统引入GUI图形界面起到了至关重要的启蒙作用。1948年,道格拉斯·恩格尔巴特(Douglas Englebart,GUI与鼠标的发明者)在取得学士学位后进入美国国家航空咨询委员会(NACA,美国宇航局前身)工作,但他不满足于仅从事一些范围狭窄的小项目,而希望自身从事的工作能让整个世界获益。在一次上班途中,他突然回忆起凡尼佛·布什关于“Memex”的文章,并开始思考这样的设备应该如何实现。对于其中的触摸式显示屏,道格拉斯很自然就想到阴极射线管技术—在二战时,道格拉斯曾是一位雷达兵,而当时的雷达显示屏都是使用阴极射线管作为信号显示的核心装置。道格拉斯同时想到,屏幕上的信息应该以图形的方式存在,而操作者能够自由地在屏幕的任何范围选择自己感兴趣的内容。这个设想让道格拉斯兴奋不已,但他万万没有想到,第一个雏形系统到20年后才真正出现。
图1 道格拉斯·恩格尔巴特博士,被誉为“GUI之父”和“鼠标之父”。
后来,道格拉斯离职进入加州大学伯克利分校,并于1956年获得电气工程与计算机博士学位,之后道格拉斯博士进入著名的斯坦福研究所,而在此期间他可以真正将自己的构想变成现实。1968年,道格拉斯博士终于获得成功,他将自己所开发的“NLS”图形系统公开演示,这套系统包括一个圆形的CRT显示器、一个键盘和一个鼠标,其名称“NLS”是“在线系统”的缩写,因为它是建立在几台计算机联网的基础上。NLS可以显示出图形界面,用户可以通过移动鼠标在整个屏幕上自由选择内容,实现无纸化的办公。尽管今天看来这种场景再平常不过,但在1968年绝对是革命性的新概念,以至于道格拉斯博士在演示NLS系统时,许多家电视台都进行实时报道、并引起外界的轰动。道格拉斯博士被因此誉为是“GUI界面之父”,不过他还拥有另外一个同样响亮的头衔:“鼠标之父”—他为NLS系统研制的鼠标后来成为计算机的标准输入设备之一,并深刻影响了计算机发展的进程。
图2 NLS系统,拥有显示器、键盘和鼠标。
Alto电脑与Smalltalk语言
道格拉斯博士的NLS系统让外界震惊,无纸化办公成为许多企业津津乐道的话题,施乐公司(Xerox)因此感到深深不安。印刷设备是施乐的命脉所在,在NLS系统出现后,施乐担忧“无纸时代”的到来将对他们产生巨大的冲击,意识到其中的“风险”,施乐高层认为不如抢先掌握这门技术,成为新领域的领导者,遂于1970年成立著名的帕罗奥托研究中心(PARC)来专门负责此事。尽管无纸化的风险在后来被证明纯属多余(进入PC时代后,办公纸张不仅未减少,反而消耗越多),但施乐高层当时所作的决定仍然是非常英明的。PARC成为世界上最好的研究所,它拥有一流的设备和人材,几乎所有人都是博士,或是各自领域中最好的专家。很自然,PARC拿出了包括操作系统GUI界面在内的大量成果,而且也孕育了许多顶尖的科技人物,这其中包括3Com的创立者Bob Metcalfe以及微软的首席架构师(Chief Architect)查尔斯·西蒙尼(Charles Simonyi),当然这些都是后话。
PARC中心同时进行多个研究项目,在它们的第一批发明成果中就有激光打印机,这被誉为是打印技术的革命性突破。不过,PARC所发明的激光打印机无法独立工作,必须有一台图形化的电脑为它提供待打印的文档才行,而在那时,尚未有这样的电脑存在。PARC的计算机科学家干脆自己动手,他们从道格拉斯博士的NLS系统中获取灵感,并于1973年发明了Alto电脑。Alto被认为是操作系统GUI界面发展史上的里程碑,它拥有视窗(Windows)和下拉菜单(Pull-Down MENU),并通过鼠标(Mouse)进行灵活操作,真正打破了困扰业界已久的人机阻隔,极大提升了操作效率,由此也组成了工业界的WIMP标准。这里有一个不得不提到的插曲:一位名叫查尔斯·西蒙尼的伯克利分校学生有幸参与Alto开发项目,他为Alto电脑编写了一个文本编辑器:“Bravo”,Bravo改变了信息组织和显示的方式,被公认是第一个“所见即所得”的文字处理软件。
1975年,PARC正式对外公开Alto电脑,当时有大量的精英人物前往参观。在花旗银行的代表参观时,西蒙尼向他们演示Alto电脑、Bravo软件、网络和激光打印机的协作过程。Bravo使用各种字体来编辑文件,这些文件被显示在Alto电脑的屏幕上,然后相关数据通过以太网被传输到打印机上,而打印出的文件与屏幕上显示的内容看起来一模一样。“所见即所得”的概念由此产生,而这整整比苹果Macintosh电脑早了11年,但成为标准的却是后者。
与Alto电脑共生的还有Smalltalk语言。Smalltalk是第一种面向对象的编程语言,且具有类似Java的自动内存管理功能,用任何语言来形容这个伟大的成果都不过分。PARC使用Smalltalk语言来设计图形化环境,并带来许多崭新的GUI编程理念,今天我们所见的所有可视化开发平台,都可以看作是Smalltalk的思想衍生。在Alto电脑发明之后,PARC的许多开发成员都希望能够将它商业化—Alto比后来的苹果机屏幕要大,一样有鼠标和图形界面,前景可观。可遗憾的是,施乐一直拘泥于“产品越大越好”的大公司作风,只愿意生产复杂而昂贵的机器,对Alto电脑兴趣不高。Alto电脑定价为5万美元,而激光打印机需要二十万美元,后者自然成为施乐的新方向,Alto电脑则被施乐高层所忽视。随后,PARC的成员坚持对Alto进行多番改进,并最终发展到Alto III型,但开发者强烈的商业化意愿再度被施乐拒绝。直到1981年,施乐公司才将Alto电脑的精简版—Star 8010文档处理机以17000美元的价格推向市场,Star 8010与Alto有较大的不同,但它具备优秀的文档处理能力,多个文档可以并列在屏幕上不相互交叠,用户可以很方便地同时处理。可惜在这个时候,施乐已经错失抢占制高点的最佳时机,在市场上Star 8010没有获得多大的反响。更不幸的是,PARC的众多精英不满施乐而另谋出路,大量的精英加入苹果电脑公司展开冒险之旅,不过开发Bravo软件的查尔斯·西蒙尼却去了当时名不见经传的微软公司,后来他成为了微软的事实缔造者之一。
图3 施乐Alto计算机
图4 Alto的文件管理器
图5 施乐Star 8010文档处理机
苹果Lisa/Macintosh的诞生
施乐未及时将Alto推向市场错失良机,最终只有在施乐公司内部为员工所使用,没有对外推广。不过,Alto还是成为图形化操作系统的先导,后来的苹果Lisa电脑和微软Windows 1.0,都可以看作是Alto思想的直接继承。而在图形化操作系统方面,相比微软,苹果显然领先了一步。在当时,由史蒂夫·乔布斯和史蒂夫·沃兹尼克创办的苹果电脑公司被公认为是个人计算机的先锋,可它们在图形界面上并没有太大的建树。AppleⅠ完全基于命令行操作,后来推出的AppleⅡ虽然配有简单的图形界面,但没有鼠标,完全依靠键盘输入,同时也保留了传统的命令行操作。比较幸运的是,施乐公司的Alto没有被推向市场,而IBM在个人计算机领域后知后觉,AppleⅡ便成为当时可买到的唯一一款拥有“图形界面”的个人电脑,而苹果当然也就大发其财,进入前所未有的高速发展阶段。作为一家生机勃勃的年轻企业,苹果公司成为许多精英向往的乐土,施乐PARC中心出走的许多工程师随后都加入苹果,而这些工程师也就得以继续他们之前的工作,这样,Alto电脑及Smalltalk语言就以另一种形式出现在计算机的大舞台上。
从技术水平来看,AppleⅡ计算机无论如何也无法与同时代的Alto相比,PARC的前工程师们深知这一点,在他们的安排下,苹果电脑公司的创始人之一,即后来大名鼎鼎的乔布斯(Steve Jobs)得以进入PARC研究中心,他见到了传说中的Alto电脑并观看了相关演示。乔布斯详细了解了Alto电脑的整套概念,完全图形化的界面和用鼠标灵活输入的操控方式让他深感震惊。在此之后,乔布斯就成为GUI界面的忠实信徒,他决心开发一套类似的电脑并将它推向市场—这是发生在1979年的事情,而乔布斯的这次参观,直接改变了后来的“Lisa”计算机项目,PC与操作系统的发展方向因此被扭转到“正确”方向。
为了完成Lisa,开发者在AppleⅡ计算机上模拟了多种不同的界面原型,包括一套基于任务界面的“Twenty Questions”方案,以及一个拥有四列文件浏览的方案,后一项设计后来在NeXTStep系统和Mac OS X系统中也得到借鉴。不过,Lisa开发团队最终选择基于图标显示的方案,在该方案中,所有的文件、文件夹和应用程序都使用图标来表示,同时它还拥有下拉菜单条,而菜单栏则被放置在屏幕的最上部。如果我们对照一下现在的Mac OS X系统,便会发现它的基本元素仍然继承于Lisa。此外,Lisa计算机还拥有大量的创新,例如引入键盘快捷命令,一些操作频繁的菜单命令可借助快捷键实现,以滚动条代替原本固定高度的窗格;垃圾箱支持拖曳功能,那些不需要的文件可以通过鼠标拖曳的方式直接删除。另外,引入了菜单的前景、背景概念,那些暂时没有被选中的菜单处于较浅的“泛灰色”,这样用户操作时可一目了然。Lisa理所当然引入了鼠标,不过苹果公司对鼠标操作进行了非常大的改变—最初Alto电脑上使用了三键鼠标,后来施乐的Star 8010文档处理机则精简到双键方式,而苹果Lisa则使用只有一个按键的鼠标,这样做是为了简化操作起见(苹果显然低估了用户掌握技术的能力),但基于图标的GUI系统至少需要选中、运行等两种鼠标操作,为此,苹果发明了双击操作,这在后来成为所有GUI操作系统的标准,即便现在的鼠标已经拥有大量的按键。
Lisa计算机开创了许多前所未有的GUI概念,而这些概念也多数都被沿用至今。我们知道,之前的施乐Alto电脑和Star 8010文档处理机都有图标的概念,但Lisa才是第一部真正采用图标来表示文件的计算机。在Lisa系统中,图标文件以地址路径的方式加以组织,开启每个路径时都会弹出一个独立的显示窗口;而Lisa引入的“拖放操作”也堪称一大发明,它以直观自然的方式实现很多原本复杂的操作,例如,我们可以选中文件、文件夹并将它们拖到其他的窗口下,这样就完成拷贝操作;此外Lisa还有大量可有效简化操作的细微设计,如允许用户为每个文件指定执行的程序,只要双击该文件便会被相应的程序自动开启。几乎所有的这些细节在后来的GUI操作系统中都得到传承。
Lisa项目始于1979年,但直到1983年才正式开发完毕。可问题接踵而来,这部计算机售价定在1万美元,虽然在当时这样的价格不算昂贵,但还是有大量的用户无法接受,而如果用户群体不够广泛,专门为Lisa平台开发软件就变得很不现实。为此,苹果决定开发廉价版的Lisa,这也就是著名的“Macintosh”项目。Macintosh计算机在1984年被推向市场,它拥有一个9英寸的单色屏幕、128KB内存和一个软盘驱动器,保留了Lisa计算机大量的GUI特性,但它不具备多任务处理能力,也无法实现在两个程序间灵活切换,售价只有2495美元。Macintosh的发布引发巨大的轰动,人们第一次看到计算机拥有如此绚丽的操作界面、听到计算机能发出如此美妙的声音,而且也是第一次体验到计算机如此简便的操作。Macintosh的业绩堪称辉煌,苹果公司也到达发展史上的最高点—虽然此后,苹果公司一直走下坡路,但Macintosh的后续版本似乎没有受到特别大的影响,即便在九十年代中后期苹果濒临倒闭时,Mac OS 8和Mac OS 9在技术上依然没有落后对手。
图6 创下许多个第一的Lisa计算机
图7 Macintosh System 1的GUI界面
兴旺蓬勃的GUI运动
除了苹果的Lisa外,在上世纪八十年代还有大量的GUI操作系统,包括VisiCorp公司的VisiOn、微软的Windows 1.0和2.0、Tandy公司的DeskMate、Digital Research的GEM、IBM OS/2、NeXT公司的NeXTStep、为UNIX开发的X Window等等,但除了Windows、NeXTStep和X Window最终修成正果外,其他的所有GUI后来都没有得到持续发展。下面,我们将以出现时间的先后顺序来向大家介绍这些GUI的特性及发展概况。
图8 VisiOn的用户界面
VisiOn操作系统
在苹果致力于开发Lisa图形界面时,VisiCorp公司也在从事同样的工作。VisiCorp是世界上第一款电子表格软件VisiCalc的缔造者,当时它是最强的PC应用软件企业。不过,VisiCorp并非自己制造计算机,而是为IBM PC开发带有图形GUI的操作系统,这套产品被定名为“VisiOn”,发布时间是在1983年。
尽管VisiOn也实现了图形化操作,但它存在大量的不足:首先,VisiOn的价格过于昂贵,单套软件的售价就达到1495美元,这让许多用户难以接受;其次,VisiOn对硬件要求明显过高,它只有在512KB内存、带有硬盘和鼠标的PC-XT计算机上才能够工作,这样许多不符合要求的用户就被挡在门外。更要命的是,VisiOn在设计上并无过人之处,如它只支持640×200的单色图形模式,也未脱离基于文本的痕迹。例如,VisiOn根本无法支持图标功能,用户必须点击文本标签才能够打开文件或执行程序;在视觉方面,VisiOn仅支持固定宽度的字体显示,不仅明显逊于苹果的Lisa和Macintosh,甚至连施乐Alto、Star 8010都不如。另外,VisiOn对鼠标支持极为有限,它甚至无法支持鼠标斜线移动,而仅能让光标水平或垂直运动—这相当于1968年道格拉斯博士NLS系统的水平。虽然技术比Lisa落后了一大截,但它却是当时PC机唯一能够使用的GUI图形操作系统。不幸的是,当比尔·盖茨看到VisiOn给DOS带来的现实威胁后,发起了一场堪称经典的宣传战。微软竭尽所能向用户大力宣传Windows系统的种种好处,力求从心理上和精神上赢得用户,这场宣传战的目的在于瓦解潜在对手而非促进销售。事实上,在那个时候Windows不仅还没有面市,而且几乎还未开始设计。但微软的这场宣传非常有效,当VisiOn开始销售时,VisiCorp意外发现接受这套产品的人寥寥无几,因为几乎整个世界都在等待微软的“Windows”。VisiCorp公司轻而易举就被微软击败,同时VisiOn也走到了尽头,没有后来者为它延续生命。
图9 Windows 1.01的界面,它可支持两个平铺窗口的界限调整。
微软Windows起步
VisiOn无疑是非常失败的产品,但它却促使微软不得不开发比它更有竞争力的产品。起初,微软将自己的GUI系统命名为“Interface Manager(界面管理者)”,但后来选择了一个更形象、更有亲和力的名字Windows。Windows的原型系统于1983年推出,它的界面看起来就像是VisiOn与Microsoft Word for DOS操作界面的混合—Microsoft Word for DOS脱胎于Alto电脑的Bravo编辑器,它是西蒙尼加入微软后带来的杰作。
此后又过了两年,Windows 1.0才得以正式发布。与原型系统相比,Windows 1.0明显成熟,它拥有流行GUI的共有特点,例如页面滚动条、窗口控制器和菜单,但在细节设计上Windows与其他的GUI还是存在大量的不同,例如每个应用程序都有菜单栏,采用窗口平铺而非重叠设计。这其中有一个有趣的插曲,来自施乐PARC中心的设计者认为平铺设计优于重叠设计,但比尔·盖茨本人并不这么认为,遂定下未来的Windows GUI应采用窗口重叠方式,这套规则在Windows 2.0生效后被一直沿用至今。不过Windows 1.0还是采用平铺设计,当然它并非是一套独立的操作系统,而是为DOS系统设计的GUI图形界面。由于Windows 1.0功能弱小,绝大多数用户还是习惯于使用命令行。
图10 Tandy DeskMate系统外观
Tandy DeskMate GUI系统
Tandy计算机公司的名字也许没有多少人听说过,但在1984年,这家公司也发布了它们独自开发的GUI系统DeskMate。不过,DeskMate对鼠标支持非常有限,它主要依靠键盘操作,并采用平铺设计的窗口。理所当然,DeskMate非常难于使用,而在销售上,它一直与Tandy自己的计算机捆绑,未有公开推广。
Digital Research推出GEM GUI
1985年底,Digital Research公司推出一种名为GEM的图形环境,与Windows一样,它是一套为DOS系统设计的GUI,但同时也可工作在Atari的ST计算机上(Atari公司成立于1972年,由美国犹他大学毕业生Bushnell创立,从事供家庭娱乐的计算机软硬件研发,可以说是当今电子游戏机的始祖)。实际上,GEM也是由大量来自施乐PARC的研发人员操刀,但不幸的是,它与苹果的Lisa/Macintosh GUI实在是太像了,同样的图标表示,菜单栏被放置在屏幕顶部,鼠标操作也非常相似。大为光火的苹果起诉Digital Research侵权,结果便是Digital Research被迫对PC DOS的GEM版本作修改,但比较奇怪的是,针对Atari计算机的GEM GUI居然没有受到波及。
图11 运行在Atari ST计算机上的GEM 1.0图形环境
图12 Workbench 1.0 GUI图形环境
Amiga Workbench图形环境
Commodore公司出品的Amiga计算机曾在市场上风靡一时,它使用了支持多媒体图形和音频的多处理器技术,具有优秀的视频与音频质量,这也使得它广泛超越了同时期的其它电脑。此外,Amiga配备的操作系统可支持多任务环境,这一点连苹果、微软和IBM都自愧不如,不过在图形环境方面,Amiga采用的是一套名为“Workbench”的GUI,在当时它也算颇有亮点:支持窗口的上下移动,选择或移动时窗口会自动出现在前景,位于顶部的菜单栏可自动隐藏,并可通过鼠标右键加以激活等等。但由于Commodore公司经营不善,Workbench GUI后来也没有了下文。
图13 GEOS GUI,与GEM、Lisa/Macintosh都有些类似。
Berkely Softworks发布GEOS
在1986年,Berkely Softworks公司发布了GEOS图形GUI,它与遇到麻烦的GEM GUI有不少相似之处,但其主要应用对象是诸如Apple Ⅱ、Commodore 64等有些年头的计算机产品。很不幸,GEOS出台的时间太迟了,此时它面临着微软Windows的强力竞争,自然GEOS后来也不知所踪。
图14 Windows 2.0版,增加了最大化和最小化按钮,并改用窗口重叠布局。
微软Windows 2.0
在1987年,微软将Windows GUI升级到2.0版本,Windows 2.0放弃了窗口平铺设计,转为目前流行的重叠模式,并使用了大量类似Macintosh的GUI元素,成熟度远远优于之前的1.0版。苹果公司看到之后深表震惊,他们不惜提起诉讼,认为Windows 2.0侵犯了Macintosh的“look & feel”视觉专利,苹果声称,Macintosh的“整体视觉外观”受到著作权保护,Windows虽然在某些窗口细节方面不同于Macintosh,但整体看起来非常类似。而法庭随之要求苹果公司提供具体的证据,苹果遂提交了189个GUI元素。不幸的是,苹果似乎忘记了其中的179个元素都已经在微软Windows 1.0协议中许可过(以换取微软为Macintosh平台开发办公软件),而剩下的10个元素基本上都不受著作权保护,要么不是苹果的原创,要么这些元素就是唯一可能的通用实现。这场诉讼最终持续到1994年,苹果陷入完全的失败,此时没有什么力量可以阻挡微软的崛起。
有必要提到一个有趣的插曲:在苹果起诉微软侵权期间,施乐公司也提起对苹果的诉讼,施乐声称它才是GUI著作权的真正拥有者,而从历史发展来看,施乐确实是所有GUI的发展源头。不过,这个案子在技术层面也被否决。
图15 Acorn公司的Arthur GUI,在当时创下了几个第一。
针对32位RISC平台的“Arthur”
也是在1987年,Acorn计算机公司发布世界上首款采用32位RISC处理器(ARM2处理器,8MHz)的微型电脑—Acorn A305/A310,同时它们也为这台电脑设计了一款名为“Arthur”的GUI。与其他多数GUI一样,Arthur带有滚动条,允许用户通过卷动页面来获取更多的内容,同时也拥有不少创举。Arthur可显示出16种颜色,它同时也是第一款可支持抗锯齿字体显示的GUI产品;而且在屏幕底部位置还设计了一个专门的“停靠栏(Dock)”,常用程序的快捷方式或工具可以被放在该停靠栏上,这样用户就能迅速操作电脑。在多年以后,苹果公司在设计Mac OS X时也引入了这项设计,这是后话。而Arthur后来被Acorn公司重命名为“RISC OS”,并发展到4.0版本,但它最终还是没有在残酷的竞争中生存下去。
这里有必要插入一些题外话。我们知道,80年代中期和之前发布的许多GUI产品,都采用固定宽度的字体,如GEM、Windows 1.0、Amiga Workbench和Acorn的Arthur等等。但事实上,所有这些GUI都可以在应用程序中支持比例显示的字体,设计者之所以没有在操作系统中采用同样的设计,原因在于当时计算机显示器的分辨率实在太低了——多数计算的显示器都只有640×200分辨率,即使是Macintosh,最高也只能支持384像素的垂直分辨率。而随着技术的发展,显示分辨率不断提高,GUI也普遍采纳比例显示字体作为新标准。
图16 NeXTSep操作系统,精致程度远超过之前的各家作品。
乔布斯打造NeXTStep
在1985年,乔布斯离开亲手创立的苹果公司,成立了一家名为“NeXT”的电脑公司,乔布斯希望打造一款真正面向未来的终极电脑,开发新的图形化操作系统当然就是重中之重。NeXT公司的作品被命名为“NeXTStep”,开发工作始于1985年终于1988年。从技术上讲,NeXTStep的确是一款卓越不凡的图形化操作系统:所有GUI元素都加以三维阴影修饰,包括窗口、菜单、按钮等等,一改之前GUI的简陋作风;NeXTStep率先在窗口右上角设立“X”符号,作为关闭窗口的快捷方式;NeXTStep引入垂直菜单条设计,用户只要点击屏幕左上角的特定标识菜单条就会下拉,而鼠标在屏幕上的其他位置再点击一下菜单条就会自动关闭,操作颇为方便;NeXTStep也引入了Dock停靠栏,但与Arthur GUI不同的是,这个停靠栏可以被放在屏幕的任意一边(默认位置为屏幕的右边)。
由于视觉效果大大提升,NeXTStep对硬件也提出了“苛刻”的要求,一款具有较高分辨率的显示器是必须的,否则NeXTStep就无法正常工作。
图17 OS/2 1.1的GUI界面,它居然只能支持单色的图标,甚至后来的1.2版也未引入当时流行的彩色设计。
1988年IBM OS/2诞生
IBM的OS/2也是在1988年诞生,它原本设计作为DOS的替代品,由IBM与微软联手操刀。那个时候,微软远没有向IBM说不的勇气,但他们在OS/2开发上也没有什么杰出表现。OS/2 1.0版基于文本命令行方式操作,而1.1版则增加了图形GUI,在上面的中,你可以看到它与微软Windows 2.0颇为类似,但技术水准比同期出现的NeXTStep落后了数个档次。
图18 1998年发布的KDE桌面环境
针对UNIX的X Window System
GUI大潮不可避免波及到铁板一块的UNIX领域,早在1984年,麻省理工学院(MIT)就与DEC公司合作,致力于在UNIX系统上开发一个分散式的视窗环境,这便是大名鼎鼎的“X Window System”项目。1986年,MIT正式发行X Window,此后它便成为UNIX的标准视窗环境。紧接着,全力负责发展该项目的X协会成立,X Window进入了新阶段。与此同时,许多UNIX厂商也在X Window原型上开
电脑就是计算机
电子计算机是一种根据一系列指令来对数据进行处理的机器。所相关的技术研究叫计算机科学,由数据为核心的研究称信息技术。
计算机种类繁多。实际来看,计算机总体上是处理信息的工具。根据图灵机理论,一部具有最基本功能的计算机应当能够完成任何其它计算机能做的事情。因此,只要不考虑时间和存储因素,从个人数码助理(PDA)到超级计算机都应该可以完成同样的作业。即是说,即使是设计完全相同的计算机,只要经过相应改装,就应该可以被用于从公司薪金管理到无人驾驶飞船操控在内的各种任务。由于科技的飞速进步,下一代计算机总是在性能上能够显著地超过其前一代,这一现象有时被称作“摩尔定律”。
计算机在组成上形式不一。早期计算机的体积足有一间房屋大小,而今天某些嵌入式计算机可能比一副扑克牌还小。当然,即使在今天,依然有大量体积庞大的巨型计算机为特别的科学计算或面向大型组织的事务处理需求服务。比较小的,为个人应用而设计的计算机称为微型计算机,简称微机。我们今天在日常使用“计算机”一词时通常也是指此。不过,现在计算机最为普遍的应用形式却是嵌入式的。嵌入式计算机通常相对简单,体积小,并被用来控制其它设备—无论是飞机,工业机器人还是数码相机。
上述对于电子计算机的定义包括了许多能计算或是只有有限功能的特定用途的设备。然而当说到现代的电子计算机,其最重要的特征是,只要给予正确的指示,任何一台电子计算机都可以模拟其他任何计算机的行为(只受限于电子计算机本身的存储容量和执行的速度)。据此,现代电子计算机相对于早期的电子计算机也被称为通用型电子计算机。
历史
ENIAC是电脑发展史上的一个里程碑本来,计算机的英文原词“computer”是指从事数据计算的人。而他们往往都需要借助某些机械计算设备或模拟计算机。这些早期计算设备的祖先包括有算盘,以及可以追溯到公元前87年的被古希腊人用于计算行星移动的安提基特拉机制。随着中世纪末期欧洲数学与工程学的再次繁荣,1623年由Wilhelm Schickard率先研制出了欧洲第一台计算设备,这是一个能进行六位以内数加减法,并能通过铃声输出答案的“计算钟”。使用转动齿轮来进行操作。
1642年法国数学家Pascal 在WILLIAM Oughtred计算尺的基础上,将计算尺加以改进,能进行八位计算。还卖出了许多制品,成为当时一种时髦的商品。
1801年,Joseph Marie Jacquard对织布机的设计进行了改进,其中他使用了一系列打孔的纸卡片来作为编织复杂图案的程序。Jacquard式织布机,尽管并不被认为是一台真正的计算机,但是它的出现确实是现代计算机发展过程中重要的一步。
查尔斯?巴比奇(Charles Babbage)是构想和设计一台完全可编程计算机的第一人,当时是1820年。但由于技术条件,经费限制,以及无法忍耐对设计不停的修补,这台计算机在他有生之年始终未能问世。约到19世纪晚期,许多后来被证明对计算机科学有着重大意义的技术相继出现,包括打孔卡片以及真空管。Hermann Hollerith设计了一台制表用的机器,就实现了应用打孔卡片的大规模自动数据处理。
在20世纪前半叶,为了迎合科学计算的需要,许许多多单一用途的并不断深化复杂的模拟计算机被研制出来。这些计算机都是用它们所针对的特定问题的机械或电子模型作为计算基础。20世纪三四十年代,计算机的性能逐渐强大并且通用性得到提升,现代计算机的关键特色被不断地加入进来。
1937年由克劳德·艾尔伍德·香农(Claude Shannon)发表了他的伟大论文《对继电器和开关电路中的符号分析》,文中首次提及数字电子技术的应用。他向人们展示了如何使用开关来实现逻辑和数学运算。此后,他通过研究Vannevar Bush的微分模拟器进一步巩固了他的想法。这是一个标志着二进制电子电路设计和逻辑门应用开始的重要时刻,而作为这些关键思想诞生的先驱,应当包括:Almon Strowger,他为一个含有逻辑门电路的设备申请了专利;尼古拉?特斯拉(Nikola Tesla),他早在1898年就曾申请含有逻辑门的电路设备;Lee De Forest,于1907年他用真空管代替了继电器。
Commodore公司在20世纪八十年代生产的Amiga 500电脑沿着这样一条上下求索的漫漫长途去定义所谓的“第一台电子计算机”可谓相当困难。1941年5月12日,Konrad Zuse完成了他的机电共享设备“Z3”,这是第一台具有自动二进制数学计算特色以及可行的编程功能的计算机,但还不是“电子”计算机。此外,其他值得注意的成就主要有:1941年夏天诞生的阿塔纳索夫-贝瑞计算机是世界上第一台电子计算机,它使用了真空管计算器,二进制数值,可复用内存;在英国于1943年被展示的神秘的巨像计算机(Colossus computer),尽管编程能力极其有限,但是它的的确确告诉了人们使用真空管既值得信赖又能实现电气化的再编程;哈佛大学的Harvard Mark I;以及基于二进制的“埃尼阿克”(ENIAC,1944年),这是第一台通用意图的计算机,但由于其结构设计不够弹性化,导致对它的每一次再编程都意味着电气物理线路的再连接。
开发埃尼爱克的小组针对其缺陷又进一步完善了设计,并最终呈现出今天我们所熟知的冯·诺伊曼结构(程序存储体系结构)。这个体系是当今所有计算机的基础。20世纪40年代中晚期,大批基于此一体系的计算机开始被研制,其中以英国最早。尽管第一台研制完成并投入运转的是“小规模实验机”(Small-Scale Experimental Machine,SSEM),但真正被开发出来的实用机很可能是EDSAC。
在整个20世纪50年代,真空管计算机居于统治地位。1958年 9月12日 在Robert Noyce(INTEL公司的创始人)的领导下,发明了集成电路。不久又推出了微处理器。1959年到1964年间设计的计算机一般被称为第二代计算机。
到了60年代,晶体管计算机将其取而代之。晶体管体积更小,速度更快,价格更加低廉,性能更加可靠,这使得它们可以被商品化生产。1964年到1972年的计算机一般被称为第三代计算机。大量使用集成电路,典型的机型是IBM360系列。
到了70年代,集成电路技术的引入极大地降低了计算机生产成本,计算机也从此开始走向千家万户。1972年以后的计算机习惯上被称为第四代计算机。基于大规模集成电路,及后来的超大规模集成电路。1972年4月1日 INTEL推出8008微处理器。1976年Stephen Wozinak和Stephen Jobs创办苹果计算机公司。并推出其Apple I 计算机。1977年5月 Apple II 型计算机发布。1979年6月1日 INTEL发布了8位元的8088微处理器。
1982年,微电脑开始普及,大量进入学校和家庭。1982年1月Commodore 64计算机发布,价格:595美元。 1982 年2月80286发布。时钟频率提高到20MHz,并增加了保护模式,可访问16M内存。支持1GB以上的虚拟内存。每秒执行270万条指令,集成了134000个晶体管。
1990年11月: 第一代MPC (多媒体个人电脑标准)发布。处理器至少80286/12MHz,后来增加到80386SX/16 MHz ,及一个光驱,至少150 KB/sec的传输率。1994年10月10日 Intel 发布75 MHz Pentium处理器。1995年11月1日Pentium Pro发布。主频可达200 MHz ,每秒钟完成4.4亿条指令,集成了550万个晶体管。1997年1月8日Intel发布Pentium MMX。对游戏和多媒体功能进行了增强。
此后计算机的变化日新月异,1965年发表的摩尔定律发表不断被应证,预测在未来10~15年仍依然适用。
原理
个人电脑的主要结构:
显示器
主板
CPU (中央处理器)
主要储存器 (内存)
扩充卡
电源供应器
光驱
次要储存器 (硬盘)
键盘
鼠标
尽管计算机技术自20世纪40年代第一台电子通用计算机诞生以来以来有了令人目眩的飞速发展,但是今天计算机仍然基本上采用的是存储程序结构,即冯·诺伊曼结构。这个结构实现了实用化的通用计算机。
存储程序结构间将一台计算机描述成四个主要部分:算术逻辑单元(ALU),控制电路,存储器,以及输入输出设备(I/O)。这些部件通过一组一组的排线连接(特别地,当一组线被用于多种不同意图的数据传输时又被称为总线),并且由一个时钟来驱动(当然某些其他事件也可能驱动控制电路)。
概念上讲,一部计算机的存储器可以被视为一组“细胞”单元。每一个“细胞”都有一个编号,称为地址;又都可以存储一个较小的定长信息。这个信息既可以是指令(告诉计算机去做什么),也可以是数据(指令的处理对象)。原则上,每一个“细胞”都是可以存储二者之任一的。
算术逻辑单元(ALU)可以被称作计算机的大脑。它可以做两类运算:第一类是算术运算,比如对两个数字进行加减法。算术运算部件的功能在ALU中是十分有限的,事实上,一些ALU根本不支持电路级的乘法和除法运算(由是使用者只能通过编程进行乘除法运算)。第二类是比较运算,即给定两个数,ALU对其进行比较以确定哪个更大一些。
输入输出系统是计算机从外部世界接收信息和向外部世界反馈运算结果的手段。对于一台标准的个人电脑,输入设备主要有键盘和鼠标,输出设备则是显示器,打印机以及其他许多后文将要讨论的可连接到计算机上的I/O设备。
控制系统将以上计算机各部分联系起来。它的功能是从存储器和输入输出设备中读取指令和数据,对指令进行解码,并向ALU交付符合指令要求的正确输入,告知ALU对这些数据做哪些运算并将结果数据返回到何处。控制系统中一个重要组件就是一个用来保持跟踪当前指令所在地址的计数器。通常这个计数器随着指令的执行而累加,但有时如果指令指示进行跳转则不依此规则。
20世纪80年代以来ALU和控制单元(二者合成中央处理器,CPU)逐渐被整合到一块集成电路上,称作微处理器。这类计算机的工作模式十分直观:在一个时钟周期内,计算机先从存储器中获取指令和数据,然后执行指令,存储数据,再获取下一条指令。这个过程被反复执行,直至得到一个终止指令。
由控制器解释,运算器执行的指令集是一个精心定义的数目十分有限的简单指令集合。一般可以分为四类:1)、数据移动(如:将一个数值从存储单元A拷贝到存储单元B)2)、数逻运算(如:计算存储单元A与存储单元B之和,结果返回存储单元C)3)、条件验证(如:如果存储单元A内数值为100,则下一条指令地址为存储单元F)4)、指令序列改易(如:下一条指令地址为存储单元F)
指令如同数据一样在计算机内部是以二进制来表示的。比如说,10110000就是一条Intel x86系列微处理器的拷贝指令代码。某一个计算机所支持的指令集就是该计算机的机器语言。因此,使用流行的机器语言将会使既成软件在一台新计算机上运行得更加容易。所以对于那些机型商业化软件开发的人来说,它们通常只会关注一种或几种不同的机器语言。
更加强大的小型计算机,大型计算机和服务器可能会与上述计算机有所不同。它们通常将任务分担给不同的CPU来执行。今天,微处理器和多核个人电脑也在朝这个方向发展。
超级计算机通常有着与基本的存储程序计算机显著区别的体系结构。它们通常有着数以千计的CPU,不过这些设计似乎只对特定任务有用。在各种计算机中,还有一些微控制器采用令程序和数据分离的哈佛架构(Harvard architecture)。
计算机的数字电路实现
以上所说的这些概念性设计的物理实现是多种多样的。如同我们前述所及,一台存储程序式计算机既可以是巴比奇的机械式的,也可以是基于数字电子的。但是,数字电路可以通过诸如继电器之类的电子控制开关来实现使用2进制数的算术和逻辑运算。香农的论文正是向我们展示了如何排列继电器来组成能够实现简单布尔运算的逻辑门。其他一些学者很快指出使用真空管可以代替继电器电路。真空管最初被用作无线电电路中的放大器,之后便开始被越来越多地用作数字电子电路中的快速开关。当电子管的一个针脚被通电后,电流就可以在另外两端间自由通过。
通过逻辑门的排列组合我们可以设计完成很多复杂的任务。举例而言,加法器就是其中之一。该器件在电子领域实现了两个数相加并将结果保存下来—在计算机科学中这样一个通过一组运算来实现某个特定意图的方法被称做一个算法。最终,人们通过数量可观的逻辑门电路组装成功了完整的ALU和控制器。说它数量可观,只需看一下CSIRAC这台可能是最小的实用化电子管计算机。该机含有2000个电子管,其中还有不少是双用器件,也即是说总计合有2000到4000个逻辑器件。
真空管对于制造规模庞大的门电路明显力不从心。昂贵,不稳(尤其是数量多时),臃肿,能耗高,并且速度也不够快—尽管远超机械开关电路。这一切导致20世纪60年代它们被晶体管取代。后者体积更小,易于操作,可靠性高,更省能耗,同时成本也更低。
集成电路是现今电子计算机的基础20世纪60年代后,晶体管开始逐渐为将大量晶体管、其他各种电器元件和连接导线安置在一片硅板上的集成电路所取代。70年代,ALU和控制器作为组成CPU的两大部分,开始被集成到一块芯片上,并称为“微处理器”。沿着集成电路的发展史,可以看到一片芯片上所集成器件的数量有了飞速增长。第一块集成电路只不过包含几十个部件,而到了2006年,一块Intel Core Duo处理器上的晶体管数目高达一亿五千一百万之巨。
无论是电子管,晶体管还是集成电路,它们都可以通过使用一种触发器设计机制来用作存储程序体系结构中的“存储”部件。而事实上触发器的确被用作小规模的超高速存储。但是,几乎没有任何计算机设计使用触发器来进行大规模数据存储。最早的计算机是使用Williams电子管向一个电视屏或若干条水银延迟线(声波通过这种线时的走行速度极为缓慢足够被认为是“存储”在了上面)发射电子束然后再来读取的方式来存储数据的。当然,这些尽管有效却不怎么优雅的方法最终还是被磁性存储取而代之。比如说磁芯存储器,代表信息的电流可在其中的铁质材料内制造恒久的弱磁场,当这个磁场再被读出时就实现了数据恢复。动态随机存储器(DRAM)亦被发明出来。它是一个包含大量电容的集成电路,而这些电容器件正是负责存储数据电荷—电荷的强度则被定义为数据的值。
输入输出设备
输入输出设备(I/O)是对将外部世界信息发送给计算机的设备和将处理结果返回给外部世界的设备的总称。这些返回结果可能是作为使用者能够视觉上体验的,或是作为该计算机所控制的其他设备的输入:对于一台机器人,控制计算机的输出基本上就是这台机器人本身,如做出各种行为。
第一代计算机的输入输出设备种类非常有限。通常的输入用设备是打孔卡片的读卡机,用来将指令和数据导入内存;而用于存储结果的输出设备则一般是磁带。随着科技的进步,输入输出设备的丰富性得到提高。以个人计算机为例:键盘和鼠标是用户向计算机直接输入信息的主要工具,而显示器、打印机、扩音器、耳机则返回处理结果。此外还有许多输入设备可以接受其他不同种类的信息,如数码相机可以输入图像。在输入输出设备中,有两类很值得注意:第一类是二级存储设备,如硬盘,光碟或其他速度缓慢但拥有很高容量的设备。第二个是计算机网络访问设备,通过他们而实现的计算机间直接数据传送极大地提升了计算机的价值。今天,国际互联网成就了数以千万计的计算机彼此间传送各种类型的数据。
程序
简单说,计算机程序就是计算机执行指令的一个序列。它既可以只是几条执行某个简单任务的指令,也可能是可能要操作巨大数据量的复杂指令队列。许多计算机程序包含有百万计的指令,而其中很多指令可能被反复执行。在2005年,一台典型的个人电脑可以每秒执行大约30亿条指令。计算机通常并不会执行一些很复杂的指令来获得额外的机能,更多地它们是在按照程序员的排列来运行那些较简单但为数众多的短指令。
一般情况下,程序员们是不会直接用机器语言来为计算机写入指令的。那么做的结果只能是费时费力、效率低下而且漏洞百出。所以,程序员一般通过“高级”一些的语言来写程序,然后再由某些特别的计算机程序,如解释器或编译器将之翻译成机器语言。一些编程语言看起来很接近机器语言,如汇编程序,被认为是低级语言。而另一些语言,如即如抽象原则的Prolog,则完全无视计算机实际运行的操作细节,可谓是高级语言。对于一项特定任务,应该根据其事务特点,程序员技能,可用工具和客户需求来选择相应的语言,其中又以客户需求最为重要(美国和中国军队的工程项目通常被要求使用Ada语言)。
计算机软件是与计算机程序并不相等的另一个词汇。计算机软件一个较为包容性较强的技术术语,它包含了用于完成任务的各种程序以及所有相关材料。举例说,一个视频游戏不但只包含程序本身,也包括、声音以及其他创造虚拟游戏环境的数据内容。在零售市场,在一台计算机上的某个应用程序只是一个面向大量用户的软件的一个副本。这里老生常谈的例子当然还是微软的office软件组,它包括一些列互相关联的、面向一般办公需求的程序。
利用那些极其简单的机器语言指令来实现无数功能强大的应用软件意味着其编程规模注定不小。Windows XP这个操作系统程序包含的C++高级语言源代码达到了4000万行。当然这还不是最大的。如此庞大的软件规模也显示了管理在开发过程中的重要性。实际编程时,程序会被细分到每一个程序员都可以在一个可接受的时长内完成的规模。
即便如此,软件开发的过程仍然进程缓慢,不可预见且遗漏多多。应运而生的软件工程学就重点面向如何加快作业进度和提高效率与质量。
库与操作系统
在计算机诞生后不久,人们发现某些特定作业在许多不同的程序中都要被实施,比如说计算某些标准数学函数。出于效率考量,这些程序的标准版本就被收集到一个“库”中以供各程序调用。许多任务经常要去额外处理种类繁多的输入输出接口,这时,用于连接的库就能派上用场。
20世纪60年代,随着计算机工业化普及,计算机越来越多地被用作一个组织内不同作业的处理。很快,能够自动安排作业时续和执行的特殊软件出现了。这些既控制硬件又负责作业时序安排的软件被称为“操作系统”。一个早期操作系统的例子是IBM的OS/360。
在不断地完善中,操作系统又引入了时间共享机制——并发。这使得多个不同用户可以“同时”地使用机器执行他们自己的程序,看起来就像是每个人都有一台自己的计算机。为此,操作系统需要像每个用户提供一台“虚拟机”来分离各个不同的程序。由于需要操作系统控制的设备也在不断增加,其中之一便是硬盘。因之,操作系统又引入了文件管理和目录管理(文件夹),大大简化了这类永久储存性设备的应用。此外,操作系统也负责安全控制,确保用户只能访问那些已获得允许的文件。
当然,到目前为止操作系统发展历程中最后一个重要步骤就是为程序提供标准图形用户界面(GUI)。尽管没有什么技术原因表明操作系统必须得提供这些界面,但操作系统供应商们总是希望并鼓励那些运行在其系统上的软件能够在外观和行为特征上与操作系统保持一致或相似。
除了以上这些核心功能,操作系统还封装了一系列其他常用工具。其中一些虽然对计算机管理并无重大意义,但是于用户而言很是有用。比如,苹果公司的Mac OS X就包含视频剪辑应用程序。
一些用于更小规模的计算机的操作系统可能没用如此众多的功能。早期的微型计算机由于记忆体和处理能力有限而不会提供额外功能,而嵌入式计算机则使用特定化了的操作系统或者干脆没有,它们往往通过应用程序直接代理操作系统的某些功能。
应用
由电脑控制的机械在工业中十分常见
很多现代大量生产的玩具,如Furby,是不能没有便宜的嵌入式处理器
起初,体积庞大而价格昂贵的数字计算机主要是用做执行科学计算,特别是军用课题。如ENIAC最早就是被用作火炮弹道计算和设计氢弹时计算断面中子密度的(如今许多超级计算机仍然在模拟核试验方面发挥着巨大作用)。澳大利亚设计的首台存储程序计算机CSIR Mk I型负责对水电工程中的集水地带的降雨情形进行评估。还有一些被用于解密,比如英国的“巨像”可编程计算机。除去这些早年的科学或军工应用,计算机在其他领域的推广亦十分迅速。
从一开始,存储程序计算机就与商业问题的解决息息相关。早在IBM的第一台商用计算机诞生之前,英国J. Lyons等就设计制造了LEO以进行资产管理或迎合其他商业用途。由于持续的体积与成本控制,计算机开始向更小型的组织内普及。加之20世纪70年代微处理器的发明,廉价计算机成为了现实。80年代,个人计算机全面流行,电子文档写作与印刷,计算预算和其他重复性的报表作业越来越多地开始依赖计算机。
随着计算机便宜起来,创作性的艺术工作也开始使用它们。人们利用合成器,计算机图形和动画来创作和修改声音,图像,视频。视频游戏的产业化也说明了计算机在娱乐方面也开创了新的历史。
计算机小型化以来,机械设备的控制也开始仰仗计算机的支持。其实,正是当年为了建造足够小的嵌入式计算机来控制阿波罗宇宙飞船才刺激了集成电路技术的跃进。今天想要找一台不被计算机控制的有源机械设备要比找一台哪怕是部分计算机控制的设备要难得多。可能最著名的计算机控制设备要非机器人莫属,这些机器有着或多或少人类的外表和并具备人类行为的某一子集。在批量生产中,工业机器人已是寻常之物。不过,完全的拟人机器人还只是停留在科幻小说或实验室之中。
机器人技术实质上是人工智能领域中的物理表达环节。所谓人工智能是一个定义模糊的概念但是可以肯定的是这门学科试图令计算机拥有目前它们还没有但作为人类却固有的能力。数年以来,不断有许多新方法被开发出来以允许计算机做那些之前被认为只有人才能做的事情。比如读书、下棋。然而,到目前为止,在研制具有人类的一般“整体性”智能的计算机方面,进展仍十分缓慢。
网络、国际互联网
20世纪50年代以来计算机开始用作协调来自不同地方之信息的工具,美国军方的贤者系统(SAGE)就是这方面第一个大规模系统。之后“军刀”等一系列特殊用途的商业系统也不断涌现出来。
关于“在tc2.0的环境下怎么样来编写代码来实现集成界面系统?”这个话题的介绍,今天小编就给大家分享完了,如果对你有所帮助请保持对本站的关注!