韩小明@xiammy的专栏

没水的地方挖井,有水的地方修渠

用户操作
[即时聊天] [发私信] [加为好友]
韩小明ID:xiammy
448976次访问,排名105好友15人,关注者82
毕业后一直在广联达工作
xiammy的文章
原创 178 篇
翻译 0 篇
转载 22 篇
评论 1134 篇
韩小明的公告
作者毕业于浙江大学,非常热爱体育运动。现在尤其热爱羽毛球运动。在休息时间非常热爱技术文章写作。
最近垃圾评论泛滥,为了不污染大家的视听,暂时关闭评论,请大家理解。
欢迎转载,但请注意,除非特别声明,本站采用Creative Commons License许可:署名,非商业。

最近评论
Norse:从纯逻辑的角度而言,只要加上一个条件就可以严谨地解决问题:此题是可解的。
这样的话顶多从半真是真还是假来加一层推理,易知半真是真的情况下是无解的,所以半真只能是假,最后就可以按标准答案推出结果了。
Norse:太钻牛角尖了,既然题目这么出,那就是隐含字条真假对应对金块判断的正误,而不是独立的
thesameway:51旧书网 同城易书
www.51jiushu.com
www.51jiushu.net
二手书、旧书同城交易平台
分类齐全、快速发布、准确搜索
xiammy:你说的就是推广策略,是不是采用矫枉过正?
sharkw:可以试一试SqliteSpy,支持sqlite数据库的加解密
文章分类
收藏
    相册
    图书
    链接
    宗刚的专栏(RSS)
    快乐学习(RSS)
    陈亮亮的专栏(RSS)
    朋友
    张恂论 OO
    橘子懒懒的BLOG(RSS)
    言之有李(RSS)
    赵伟的小家
    存档
    订阅我的博客
    XML聚合  FeedSky

    原创 64位普及引发完美风暴收藏

    新一篇: 二十年间的失败软件和系统 | 旧一篇: 浩方战网平台分析

    IT界一直有一个悖论:到底是软件带动了硬件提升,还是软件吞噬了硬件性能。每一次硬件升级,你都会发现操作系统和软件还是在同样的时间内,完成了同样的事。

    当AMD和Intel竞争到64位的时候,已经预示了一个新的时代,已经开始到来。64位CPU并不是一个新的事物,小型机上早就有了。但对于PC用户来讲,这次普及必然是革命性的。对于那些依赖于PC操作系统的软件开发商们,这也将是一个不小的革命。

    在所有革命都在悄然进行的时候,软件工程也在酝酿着新一轮的发展。

    从Brooks那个精彩的《没有银弹》论断诞生之日开始,无数精英们都在使用自己的方式来提高软件开发效率。很多系统提出的时候,都是高呼着“高效的生产率”上台的。

    其中,呼声最高的是.NET。号称软件开发效率能提升10倍。在.NET发布会上,微软使用了很多案例来证明这点。.NET提供了非常好的开发框架,这点对于以前进行Web开发来讲,是一个大大的革命。另外.NET还在此基础上,提供了丰富的类库支持。更加提升了开发效率。

    谈到.NET,就不能不谈Java。Java和.NET一样,也是运行在一个虚拟机上。不同的是,Java不提供本地化过程。在Java所提倡的开发效率是:“一次编写,到处运行”。但是,在很长的一段时间中,很多人认为Java的运行效率跟不上。因此不适合开发桌面应用。这在很大程度上限制了Java的普及。但是在一些高性能的服务器上,Java的优势却发挥的淋漓尽致。开发商充分利用J2EE等优秀成熟架构,来部署稳定、高效的应用服务器。现在电信几乎都是使用J2EE架构。

    另一个呼声很高的是动态语言。现在最火的是Python和Ruby语言。

    我们知道,编程语言的发展是从最基本的二进制CPU语言开始,发展到汇编语言,进而发展了高级程序语言,这些一般是说C、BASIC、Pascal等。随着软件工程的规模扩大,慢慢发展起来的软件工程方法,开始影响着语言。这里面最大的就是面向对象概念的提出,导致了大量的支持对象概念的语言出现。最有名的就是C++,Delphi,C#,JAVA。每一次语言的发展,都在降低着代码效率。可是每一次新的语言都坚决地前进着。这就是生产率的力量。

    以非常有名的“鸭子理论”(看上去是鸭子,走起来象鸭子,那就是鸭子)提出来的动态语言。也是高呼“生产率”,吸引了很多开发者。可是,它也是遭遇了运行效率的问题。引来很多争议。

    历史总是有惊人的相像,每一次软件方法的发展,都伴随着性能争议,每次都带动了硬件的发展。而硬件的发展,又为软件方法的的发展铺平了拦路石。不管谁是鸡,谁是蛋。重要的是,这是进化的鸡,进化的蛋。进步才是最重要的。

    当我们在谈论硬件性能被软件吞噬的时候,软件工程已经发展到了空前的高度。我们现在已经不可以想象,如何使用汇编,编写一个简单的应用系统。现在的复杂度,已经迫使我们使用更高层次的抽象,对系统进行高层次的架构。可是每一次抽象,都意味着不同程度的运行性能降低。汇编抽象出指令是这样,C抽象出语言是这样,C++抽象出对象是这样,Java抽象出虚拟机是这样,Ruby抽象出类型也是这样。.NET抽象的时候,针对这个性能问题,又提出了一个本地化(在本地进行编译)的概念。这是一个好的想法,可是对于抽象本身并没有帮助。

    每次好的思想都能将运行性能的拦路虎打败。这些除了依赖于硬件性能的提升,更是基于人们解决问题过程中对于新思想的依赖性。

    我们在抱怨软件吞噬硬件性能的时候,其实正是我们遇到新问题的时候。硬件的发展总是有它发展的需求所在。在这个时候,我们不是抱怨,而是要正视这个发展趋势。

    软件开发商对于开发效率的追求远远高于运行效率。因为开发效率就是开发成本。但是客户的体验又是软件开发商必须考虑的方面。如果客户不满意,那么再好的办法也值得商酌。在这两者之间来回权衡,是一件痛苦的事。因此往往是好的方法能带来高的生产率,但是却暂时不能使用。

    可是,如果,这些运行效率不再是问题的时候,会怎么样呢?

    64位编程,对于应用软件开发本身来说,并没有多大的变化。这得归功于微软的不懈努力,以及各大硬件厂商在兼容性上的考虑。CPU的X86架构当年从16位转换到32位的时候,就非常明智地选择了一条兼容16位处理器、逐步推广32位处理器的发展路线。与当时架构虽然好,但是却不兼容16位的RISC架构来比,兼容最终笑到最后。RISC最终也只能被被市场淘汰,在一些细小局部应用。

    这次从32位到64位的转换,也是遵循着兼容的原则。所以大部分32位上的应用软件都是可以顺利运行。除非调用了依赖于32位的硬件驱动。

    表面上,64位编程和以前不存在什么差异。这也正是容易误导我们的地方。技巧的表象,容易让我们忽略技巧背后的方法变革。在运行效率不再是问题的前提下,一些人会慢慢尝试使用具有更高开发效率的思想和方法,而不再拘泥于原有的方式方法。

    在.NET刚发布的时候,大家的普遍想法,都是.NET适合进行Web开发。而原来的Win32平台上的应用开发,不如使用原生的语言(如C++/Delphi)进行开发。Borland公司也正是看准了这点,推出适合原生Win32开发和.NET开发的Delphi2006,两种方式同时提供。

    可是,这种方式并没有被大家接受。大多数开发.NET还是选用了Visual Studio.NET,而原本在Win32下开发的,还是用Delphi。这说明这两类选择正在分化。随着CPU速度的提升,性能不再是那些选择Win32原生平台开发所需考虑的问题的时候,选择.NET几乎是必然的。这样开发成本会降低很多。最大的成本就是不需要招聘两类语言的开发人员。这对软件开发商是一个非常大的诱惑。

    看问题,总是要看趋势的。现在正在方法界流行的动态语言,也有类似.NET的特点。可以预计其发展趋势必然随着硬件性能的提升,而蓬勃发展。

    很多Python和Ruby的追随者,都是奔着“高效”去的,不是运行效率,而是开发效率。除了前面讲到的鸭子理论。动态语言中针对元数据MetaData的编程能力也是非常强的。简单点说,就是让代码编写代码。减少程序员的人为因素本身就是提高开发效率。

    增加复用是提高效率的本质所在。最基本的是这些动态语言提供了丰富的类库,对于业务逻辑的最大程度的复用,也是动态语言提供的方式之一。这点Java语言也学习过来了。利用IoC实现的Spring框架就是利用这些特性来做的。Java在提高开发效率方面,很是不遗余力,很多动态语言方面的特性,都在后续版本中加进来了。

    这几年炒的MDA的概念,在某种程度上也是因为没有令人满意的实现,在推广上没有大面积推开。在这方面,Borland公司提出的ECO概念比较先进。相信随着PC机器性能的提升,在应用软件的开发领域,必将能够好好利用起这个技术。

    其实,很多概念并不是新鲜的,也不是没有成熟应用。只是很多技术都需要高性能的服务器做支撑。所以在一般的应用软件领域很难被广泛使用。因此,随着以前只有小型机才有的64位CPU安装到普通的PC机上,很多原本只能在小型机上的技术都可以移植过来。这个正如军事领域的技术应用到民用领域一样。飞机原本都是军事领域发展高端技术,后来应用到了民用航班,带给我们的变化是巨大的。PC的发展更是这样。

    很多技术都和64位本身无关,可是这些技术又都是依赖于高性能的CPU才能茁壮成长。如果只是看到64位技术本身,对于应用软件领域的开发来说,确实没有多大影响。很多方式方法会借着这些营养,努力成长自己。这又得提到开篇的那句话,到底是谁促进了谁。硬件的性能提升让软件方法也可以发生变革。新的方法又使硬件的性能优势不能体现,促使了新的硬件技术发展。如果我们现在还在使用DOS,还在使用Windows95,你根本不需要购买现在市面上的任何档次的硬件。任何一个可以找到的配置应对这些应用都是绰绰有余。

    不管怎么样,正如前面说的,不管谁是鸡,谁是蛋,关键在于两方面都进化了,而正是这些进化,保证了我们能够适应新时代、新需求下的应用软件开发。64位的普及,引发的不是技巧性的变革,而是开发方法的变革、开发效率的提升!

    发表于 @ 2007年01月28日 12:57:00|评论(loading...)|编辑

    新一篇: 二十年间的失败软件和系统 | 旧一篇: 浩方战网平台分析

    评论

    #aijianjian 发表于2007-01-30 15:16:17  IP: 61.149.243.*
    能不能说明白点
    #xiammy 发表于2007-01-31 08:49:07  IP: 218.249.220.*
    呵呵,一句话,动态语言很可能会因为性能的普遍提升而迅速推广开来。
    #cis 发表于2007-01-31 10:16:49  IP:
    不知道作者要说什么
    #halve 发表于2007-02-05 15:11:18  IP: 61.185.246.*
    不知所云。。。
    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © 韩小明