CSK.Blog--个人原创Weblog

« PDA电池升级成功[pic]HYPER DESIGN 2006 »

GUI的起源和发展[1]

最近不太喜欢写教程,因为觉得自己没学过什么..不值得说。这篇东西原本是打算作为一次协会讲座的。现放出来让大家分享吧

1.GUI的起源

扫盲: GUI - graphic user interface

直观点说,GUI就是你现在正是用的windows、linux、mac等的那些窗口、按钮和相关的功能的总合。

相信对于大多数人而言,GUI可能就等于win32的图形子系统。实际上GUI的系统的起源和windows没有任何关系,windows在这方面可以说是一个抄袭者(作者偏激的语言,仅供参考)

作为一个完全图形化的环境,她虽然给用户操作提供了极大的便利,但对于开发人员来说,尤其在初期,开发GUI环境的程序简直是个噩梦。(这也是为什么许多hacher\cracker喜欢写console程序的原因之一)

公认的世界上第一个GUI环境是由Xerox公司开发的Xerox Star系统,他是由施乐公司帕洛阿尔托研究中心(Xerox Palo Alto Research Center,PARC)开发的,对应的图形系统称为:WIMP(意为:Windows, Icons, Menus and Pointing device)

以下是他的界面图片:

(点击察看原始尺寸图片)

(点击察看原始尺寸图片)

(点击察看原始尺寸图片)

图中可以看出,一些基本的GUI元素,如window、button、scrollbar、folder等已经出现了

随后,Steve Jobs 参观了Xerox PARC研究中心,并将WIMP的理念带进了apple系统中,从而一个具有传奇意义的os:Macintosh

之后,随着windows 1.0的发布,才有了现在的windows系统占领天下的局面。

这里提供一个windows1.0运行画面的地址:http://www.digibarn.com/collections/software/microsoft/windows10/page_02.htm

当然,也可以直接安装它来看效果

这里推荐一个比较好的介绍GUI前期历史的网站:http://toastytech.com/guis/index.html

2.X windows

家喻户晓的Windows系统这里我就不介绍了,同时随着Mac OSX x86版的顺利破解,大家也可以直接去体验这个超级华丽的系统,同时也能感受MS在制作Vista时候花了多少心思用于抄袭

(记得今年WWDC上的一个横幅上的文字:Microsoft has a cat,yes,a Copy Cat.......)

UNIX、Linux和X11

UNIX是一个对计算机发展有着十分深远意义的OS,这一点可以直接从他的衍生系统中看出来:Mac OS、Linux。至于windowsNT,也不能说它和UNIX就没有任何联系

不过以UNIX古老的历史,它诞生的时候世界上还根本没有GUI这个东西,到了后期,才出现了X Window System,因为目前的稳定版本为11,所以常称其为X11。(可以在Mac或者linux目录/etc/x11找到他的影子)

这个图形系统的特色在于它是基于服务器、客户端模式运行的。换句话说,应用程序和图形子系统是经过“网络”通讯的。

其实WindowsNT开始也有类似的机制,Win32图形子系统csrss.exe也是基于CS构架。但X11很夸张的采用了socket模式,只要服务器监听远程网络,那么很容易就实现了远程桌面。而且只要网速够快,远程屏幕的显示效果和本地是一模一样的。相信Vista永远不会有这个能力吧...

目前x11是一个开源、免费的项目,由Xfree86负责维护:http://www.xfree86.org/

随着linux的发展,自然x11便成为linux下的图形系统。

KDE和Gnome:

和Win32图形系统不同,X Window System只是负责最基础的图形系统功能,对于图形元素、窗口、按钮,还需要程序的具体绘制,于是便出现了KDE和Gnome环境,它们是一个桌面环境+窗口管理器的集合。

(很不恰当的比喻:X11好比是windows中的GDI系统+基本的窗口事件管理,KDE、Gnome好比是user32.dll)

对于使用Linux的朋友,这2个图形库系统应该是非常的熟悉了。常见的linux图形环境的样子,就是由他们造就的。

由于X11的高开放性,KDE和Gnome可以在同一个桌面环境中运行。KDE对应的图形库称为qt,而Gnome采用Gtk库

这点对于windows开发人员来说可以理解成,直接使用X11开发GUI程序和用win32 sdk开发一样,所有功能都是需要自己一步步实现的,以至于连按钮的样子都要由你画出来(win32 sdk至少还不用自己去画个按钮)。

而KDE和Gnome已经将一些低层的工作封装了,好比采用MFC开发程序,这样在同一个图形库的程序,比如用KDE,他们的界面是相同的,但是不同的图形库的程序界面就相差很大。因为Gtk和qt在绘制一个button上细节就差了很多。

这也导致了目前linux下程序界面十分的不统一。

----------------------------

先写这些,以后有空再写~

发表评论:

注意:为了有效防止SPAM,任何含有http://字样的消息会被阻止发布同时,本站仅供技术交流,请不要讨论任何政治敏感话题或者低级趣味问题。

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

最新评论及回复

最近发表

Copyright Shikai Chen 2000-2012. Powered By Z-Blog(CSK Modified)