Archive for the ‘在键盘上冥想’ Category
我们的计算机教育
那天和朋友聊了一下目前国内的计算机教育的一些问题。这些问题主要体现在这几个方面,首先是课程比较老,一些课程的教材严重过时,比如我目前在学习的“计算机体系结构”主要介绍的体系结构就是上个世纪70-80年代的结构,不少体系结构已经过时,应该采用国外的最新原版教材。第二个问题就是老师照本宣科,这主要还是因为老师自己的水平所决定了。一些老师可能稍微要好一些,基础知识没问题,可是完全脱离现在最新的科技前沿,学生自然也不可能接触到比较新的技术。
最重要的问题是,目前不少学习计算机的学生严重缺乏实验的机会。不少学生几年以来都没有进行过开发工作,不仅没法继续进行科研深造,就连在社会上工作也显得不太可能。
总之,我对目前我所学习的计算机感到十分失望。我希望能够在研究生阶段换一个环境。
一个时代的结束
Borland公司终于出售包括Delphi、JBuilder、C++ Builder、C# Builder一系列响当当名字的IDE产品线。很多人一看到这则消息就知道,一个时代结束了。的确,以IDE为核心的Borland公司走到了尽头。IDE逐渐不再是一个高端的核心技术,而成为了一项常规技术。Borland公司在开发者心目中的地位应该来说无容置疑。各个层次的开发者基本都使用过Borland公司的不同类型的产品。
记得初中的时候开始接触到Pascal,就是使用的传奇的Turbo Pascal编译器,最开始的时候觉得这门语言比Basic要复杂多了。关键是定义特别严谨,甚至觉得麻烦。但是用久了以后发现了其强大的功能,便有一些爱不释手,当然主要还是因为要参加竞赛。后来听说了基于Object Pascal的Delphi,便毫不犹豫地想向这个领域进发。不过遗憾的是,因为很熟悉Visual Basic,总觉得Delphi的开发有一些繁琐,主要还是因为不懂得面向对象的很多东西。所以,我曾经好几个下午站在书店看Delphi 3.0的书,也能用Delphi搞一些简单的开发,但是还是没有把这个工具作为开发的首选。
2000年以后,开发和兴趣逐渐转移到网络平台上,对Borland公司的产品也基本是关注的状态,其他的产品使用得非常少。但是这仍然不能阻止我认为Borland公司是一个伟大的公司。遗憾的是,在.NET和Java逐渐夹逼的岁月中,Borland,这一商业公司终于做出了利于整个公司重组的决定。这不能不说十分艰难和痛苦。但是,这也是必须的。眼下,单纯的IDE已经越来越不能适应全面的开发工作了。大多数开发需要一些列的工具与解决方案,产品开发的周期工具正成为一个趋势。如果不转移公司的重心,Borland公司就没法在新的形势下生存。
也许就是这样,IT产业中有很多悲情,而Borland公司则总是悲剧中的主角。但即便如此,这个英雄式的人物赢得了大家的尊敬和崇拜。愿Borland公司走好。
IA-32 Intel Architecture 读书笔记(1)
IA-32 Intel Architecture 读书笔记
IA-32架构的简要历史
Intel微处理器的架构历史其实并不长,而每一代的分界也十分清楚。唯一需要我们去理解的就是,微处理器的分代和微处理器的产品编号并没有本质上的联系。也就是说,几个不同型号的微处理器也许是一代产品,使用的是同一个架构,而少数相同型号的微处理器,则完全使用了不同架构。
第一代微处理器
第一代Intel的微处理器当然就是著名的8086和8088了。这一代微处理器的技术指标主要有以下几个方面。
8086拥有16位寄存器和16位的外部数据总线,20位的地址总线,使得可访问的内存达到了1MB。8088和8086非常相似,不过只拥有8位的外部数据总线。从第一代微处理器开始,Intel就加入了对分段内存管理的支持。4个16位的段寄存器可以让8086和8088支持每一个内存段都达到64KB大小。通过一个段地址和一个16位的偏移地址,可以组成一个20位的地址访问整个1MB的内存空间。
保护模式的引入
Intel 286芯片引入了跨时代的“保护模式”,这一个模式成为了今后数十年程序运行的主流模式。保护模式降低了内存中任务之间的干扰性,保护了各个任务的流畅运行。同时对分段内存管理的进一步加强,使得可以形成24位的地址访问16MB的内存空间。
32位微处理器
Intel 386是IA-32家族的第一款32位处理器。它拥有32位寄存器和32位的地址总线,可以访问4GB的物理地址空间。对于每一个任务进程都享受独立的4GB物理地址空间。
从386起,处理器开始支持分段和分页两种内存管理模式。对于分段,还支持了“扁平”(Flat)模式,所有的段寄存器都指向同样的地址,也就是说一个32位地址就可以访问整个4GB的物理空间。对于分页,则使用4KB作为一个页面的大小,并且支持虚拟内存管理。
Intel 486微处理器
486处理器主要在并行处理能力上进行了改进,增加了8KB的一级缓存,集成了x87浮点运算芯片。以往,浮点运算器并不是微处理器的一部分。同时486还开始支持电源管理用于笔记本电脑市场的开拓。
Pentium微处理器
Pentium处理器增强了数据处理速度和能力,一级缓存增大到了16KB,其中8KB用于代码,8KB用于数据。尽管寄存器依旧是32位,但内部数据总线已经增加到了128位或者是256位。其后,Intel MMX的引入则极大的扩展了Pentium多媒体的处理能力,其中SIMD使得数据可以在64位的MMX寄存器上并行执行。
P6家族处理器
在Pentium之后,Intel微处理器的内部硬件结构发生了很多变化,在没有改变Pentium的整体架构的情况下,性能的提升主要来自很多细微的地方。P6家族的处理器包括:Pentium Pro,Pentium II,Pentium II Xeon,Intel Celeron,Pentium III,Pentium III Xeon。
Pentium Pro增强了缓存的能力,一级缓存有8KB,而二级缓存达到了256KB。同时,地址总线达到了36位,这样就可以访问64GB的物理地址空间。
Pentium II的一级缓存有16KB,二级缓存分别支持256KB,512KB和1MB大小,并且加入了MMX技术。
Pentium III引入了流水SIMD(SSE)技术,并且新增了128位的MMX寄存器。
Pentium 4 处理器
增加流水SIMD扩展2指令集(SSE2),扩展支持128位浮点数的运算。扩展了一系列的硬件特性,支持超线程技术。
以上就是IA32 架构的粗略的发展史,我主要是侧重软件编程方面的介绍,重点关注对软件编程会产生影响的重大变化。我们发现,IA32这么多年的变化,从软件的角度来讲并不是特别大,原因之一就是要尽可能得与以往的代码兼容。在这一点上,Intel无疑是十分成功的。很多8088和8086代码都可以运行在非常现代的Pentium4的处理器上,最大可能的减少了软件的迁移代价。然而,因为硬件条件的逐渐变化,尽管内存的段页式管理从386就基本确立下来,但是内存的访问空间却是不断在增大。这里就隐藏着整个32位系统最大的矛盾,寄存器的位数和地址线的位数一直不统一,当然,这一方面为段页式内存管理提供了方便,但一方面则使代码显得不优雅。到了P6家族,除了寄存器的位数还维持在32位,所有的处理位数都大大多于32位。这在很大程度上也阻碍了处理器性能的继续提高。所以,64位时代的到来肯定是毋庸置疑的。
虚拟机的研究工作
这两天沉迷于虚拟机的研究工作。最初对虚拟机的认识要追溯到2003年了。心中一直以来隐隐觉得虚拟机是一个非常重要的技术。特别是因为Java和.NET的原因。最近查阅资料才发现,国外的虚拟机技术已经有了很多重要的突破,包括剑桥大学的Xen项目。而在商业公司中,虚拟机的应用则是更加广泛。且不说像微软、IBM这样的大公司在研究虚拟机技术,光是不少移动设备的小公司都展现出了对虚拟机的浓厚兴趣。
虚拟机技术的发展也间接说明了兼容性和互操作性成为了当今计算机的很大问题。正是因为这些问题才会出现虚拟机技术。而当今的虚拟机技术无疑都是和操作系统紧密结合的。不管是硬件虚拟、软件虚拟,还是半虚拟技术,都脱离不了操作系统。这说明,操作系统的互操作性已经非常引人关注了。
未来几年中,虚拟机和操作系统还会有很新的发展。我会逐渐把最近的研究成果逐步公布出来。希望能够引起更多人的兴趣和讨论。
Web 2.0?
说实话,自从2000年来,我的开发中心就一直是网络开发,虽然没有太大的成绩,不过对网络开发还是可以说几句体会。网络开发和桌面程序开发的最大区别可能就在于,网络开发的程序员需要知道很多杂乱无章的东西,比如HTML、CSS、JavaScript、XML、DHTML和各个浏览器的令人烦恼的差别。同时,作为网络开发的开发平台,ASP、PHP、JSP到后来的ASP.NET、Ruby On Rails都并不是那么优雅,需要非常多额外的工作。
那么现在很多媒体叫嚣的Web 2.0是不是就能解决这一切呢?可笑!如果稍微有一点技术背景的人就会知道,Web 2.0根本就不是一个合理的解决方案,甚至完全就是一个圈套。用AJAX这样的丑陋框架,只能解决一时的问题,但是客户端和服务器端的编程模型的差异造成了没法更好的表达业务逻辑和数据。同时,浏览器也制约了更好的用户交互。用JavaScript去控制页面,本来就是一个笨拙的方法。令人费解的是,那么多人为Web 2.0歌功颂德,真不知道这些人怎么想的。
不统一网络开发和桌面开发,永远就没法做到更加合理和优雅的网络开发。
值得一提的事,微软的XAML似乎是一条解决道路。
《MSDN开发精选》停刊了
突然看到这个消息,我有一点失落。这个杂志我是从创刊号一直买到了最后一期,18元一本,一个并不便宜的价格。说起来,这不是第一本我从创刊号买到最后一刊的杂志了,《开发高手》是上一本。我还记得自己前年12月份拿着最后一本《开发高手》,站在德胜门地铁站的时候,泪流满面。我难过得不是一个杂志的停刊,而是中国软件业居然容不下一本介绍技术的杂志。后来,多出了《MSDN开发精选》,虽然都是介绍微软的技术,而且大多数技术并不是当前的主流技术,还是未来的一些技术的介绍,但是我觉得仍然是不可多得的资料,可以扩宽很多思路。遗憾的是,一年多,这个杂志又停掉了。
中国偌大一个国家,就只剩下《程序员》一本专注软件业的杂志了。这怎么让别人国家的人去想象?很多人抱怨,《程序员》不合大家的胃口。可是大家有没有想过,就只有这么一本技术杂志,编辑们肯定也想在尽可能的篇幅内多介绍内容。很多人喜欢说这说哪,可大家有没有想过环境是依靠所有人去创建的。
没有技术杂志,没有技术的交流平台,我们国内的IT产业怎么成长?互联网是一个平台,但是更需要有很多的渠道。
这真是全中国软件业的耻辱。
新的开发环境
经过几个小时艰苦安装的安装过程,终于把开发环境进行了升级。以前的开发环境如下:
Visual Studio.NET 2003
SQL Server Developer Edition 2000
.NET Framework 1.1 SP1
现在的开发环境如下:
Visual Studio 2005 Team Suite
SQL Server 2005 Express Edition
SQL Server Management Studio Express CTP (November)
安装这样的环境并非赶时髦,主要还是想体验一下新的开发环境带来的便利性。不过,这几个产品的安装也的确颇费一番周折。特别是SQL Server,本来准备安装Professional Edition,无奈对内存的要求特别高,也就作罢。
把以前的项目导入VS 2005中,发现编译的时候生成了100多个错误,看来微软C++的编译器都有了一些变化,还得把这些错误给更正了。
以后的开发就在这个新环境下了。
开始查阅资料
今天开始看一下我想搞的一些东西的资料,确切地说就是虚拟机和编译器方面的。那天在剑桥大学网站上看了比较详尽的XEN的介绍,想必半年前我在CSDN上看到的一点点信息来说无疑是丰富了不少,不过还没有细看。
根据彭老师的一些建议,我还是打算把虚拟机构建成能够生成Java字节码或者是CLI字节码的机器。这样也许兼容性要好得多。虚拟机在国内大学中无疑不是重点课程和研究方向,但是国外的很多大学都有这方面的研究。其中,今天查到资料,斯坦福大学的一个博士就构建了一个虚拟机??Joeq。而这个虚拟机已经成为了斯坦福大学计算机系编译原理课程的一个基础。另外提一句的就是,斯坦福大学的编译原理课程的教授者就是龙书的作者,Jeffrey Ullman!
另外,找到了Flex(Lex的快速版本)的源代码,正好可以研究一下,扩充这学期的成果。也可以用于构建编译器。
目前的任务就是好好看看Java虚拟机和CLI的规范。不过,阅读量比较大。还好,已经找到了几篇比较这两大虚拟机系统的论文。
感觉差了很多
今天从书店买回来了一本叫《游戏之旅——我的编程感悟》的书,一方面因为作者是国内知名的网络游戏“梦幻西游”的作者,一方面也因为作者年纪轻轻却已经背负上了“大师”的称号,让我很想知道他的成长经历。
整个晚上都在翻看这本书,没有仔细抠每一个细节,不过在翻完了整本书以后还是很有感触,也很兴奋。作者基本上是自己的同龄人,诉说的故事和经历也是我很熟悉的。虽然从作者谈论的很多东西看出,作者的确还不是能够完美解释编程领域的很多东西,而且关于开发流程和开发经验的东西也略显单薄,但是正本书给我的感觉仍然是流畅和诚实的,说自己知道的东西,而不说自己不擅长的东西。
作者的经历勾起了我很多的回忆。和作者一样,我也是从苹果的电脑起步的,甚至作者介绍的“中华学习机”,我也曾经用过了很久。只不过,作者的QBASIC,换成了我的LOGO。
而我和作者也是同样在中学加入了信息学奥林匹克竞赛的队伍。和作者不一样的是,我最终也没有得到一个理想的名次。当然,我也和作者一样,受益不少。
说起来,很多方面我都比作者差远了,因为种种原因,我没有能够像作者那样狂热地去编程。所以,至今都没有太大的长进。而且我也没有那种精神。这也造成了我最近一两年,本该快速提高的两年,耽误了不少。
我最近也想写一些东西,然而我现在发现,还是缺少积累。慢慢写吧。
GOOGLE的魅力
如果说以前还没有体会到GOOGLE的强大能力的话,那么今天我的确有一点吃惊。很早以前就知道了GOOGLE的Earth和Map技术,特别是这两个产品还催生了所谓的AJAX,使其成为当今最火热的Web开发趋势。不过我今天要说的是地图搜索所带来的一些东西。
很多人热衷于看到了美国军事基地的飞机。的确,我看到了令人恐怖的飞机数量和巨大的机场。也看到了北欧的大片森林。不过我想说的是,这背后带来的深刻变革却是非凡的。人们的视野变得无比开阔。我们再也不用担心自己看不到遥远的地球另一端。我们几乎可以查到想要去的地方的门牌号码。
技术带给我们的不仅仅是一种快乐,更多的思考问题方式的变化。我们从来没有这样去看自己的星球。而人类则变得无比渺小。

最近评论