YangLin1ST(2003-8-23 12:35:03)
TO SnHnBn: 我可不是一个追求完美的人,相反,我们这些做工程的人,说的好听一些,叫做难得糊涂,不求甚节,难听一些,就是得过且过,只要还能将就,绝对是修修补补又一年。工程师总是追求实用的,因此许多绝大多数工程类的图书前言都写着“本书不追求数学的严格性”,当然,这也和我们的数学水平不高有关。 为什么微软没有把VB的易用和VC的灵活结合在一起做出一种新的语言呢? 这个问题不容易回答。我们知道发明创造的一种方式就是把几种东西的优点组合起来,构成一个新的东西。这一点,国家从小就在象我们灌输,为了提高全民族的创新能力嘛。日常生活中也很常见,比如某某洗发水是做广告老是说自己是几合一几合一,功能强大得超乎想象(效果如何则是另外一回事)但是这几种东西之间要有什么内在的联系,又如何构成一个新东西,这个却没人告诉我们,也许本来就是要靠我们自己摸索的。所以我举个简单的例子来和大家探讨一下。 大家知道,牛车的特点是慢但是很稳,对操作者也没有太大的要求,马车的特点是快但是颠簸得很厉害。于是人们就想把牛车的稳和马车的快结合起来。怎么结合呢,用牛和马同时来拉一辆车行吗?想都不用想肯定结果是又慢又颠簸。稍加分析,我们就知道这两件事的内在联系在于,车颠簸的程度和车的速度是成正比的。要想得到又快又稳的车,办法在于打破车颠簸的程度和车速度之间的关系,建立一种更为理想的方式。 进一步分析,我们知道这种关系取决于两个因素,一个是路面的质量,一个是车的减震能力。回顾一下交通的发展史,就发现我们一直都在这两个方面上下功夫。 先看路面的改进,在19世纪早期,水泥和混凝土没有出现,马路都是石子或者石板铺成的,马车在上面行驶自然颠簸的厉害,如果遇到下雨那就不用说了。于是有人发明了用木板来铺路,这样的道路非常平整,雨天也通行无阻。于是这样的道路就被称为“RAINROAD”这个在《乱世佳人》这部小说中就有描述。这样的道路当然造价不菲,于是大家都想法子降低成本。有人就说其实只要两条木板就可以了,作成两根轨道,车轮卡在上面。这就是火车的雏形,早期的“火车”就是马拖着车在木轨上跑。rail 本意是栏杆,后来也指这样的轨道,这样的道路就被叫做 RAILROAD 。水泥和混凝土出现后,公路也得到了很大的发展,石油化工业的发展,也提供了大量的沥青,沥青马路的出现大大的提高了行车的舒适性。 另一个方面是车的减震能力,其中最重要的是轮胎,轮胎的发明很晚,是在自行车出现后由一个中学生发明的。轮胎对技术有很高的要求。子午线轮胎1946年就出现了,到今天国产轮胎比较好的掌握了。同样,其他的减震装置的技术要求也不低,就拿弹簧钢来说,这个对冶金技术就是一个很高的要求。很遗憾我国的钢材虽然数量世界第一,质量却一直不怎么样。 回顾这段历史,我们可以发现,要想把两种优点合在一起,他们必须存在一定的同源性,也就是说在本质上基本相同。这句话非常不严密,但是我想大概就是这个意思。其次在于一项技术的革新往往不是单独的存在的,而是和其他产业、技术密切相关的。 回过头看VB和VC,你会发现他们和牛车与马车是多么的相似 :) VB易用而低效,VC高效而难用,原因是什么,抛开由不同语法所带来的编译上的差异,我觉得本质在于 “效率”或者说“灵活”和 “使用指针,直接对内存进行操作” 是成正比的,而“易用性”则和它成反比。如果要想把两者的优点合成在一起,那么就必须打破“效率”、“易用性”与 “使用指针,直接对内存进行操作” 的这种联系。就目前的情况来看,难度相当大。 如果要进行改进,那么也有两个方向,一种是硬件的方向,一种是软件的方向。 硬件方向可能大家不感兴趣,不过也是比较有意思的。先来一种假设,假如一种新的芯片,针对VB做过优化。像VB这样的高级语言总是存在大段大段具有固定格式的代码,这种芯片可以把他们识别出来,然后使用自己内建电路进行处理,使得以前成百上千个指令周期才能完成的代码段在几个指令周期中就搞定了。这样的CPU运行起VB来,那就实现了“易用性”和“效率”的结合。当然,没有人会去开发这种芯片,除非他完全疯了。 本文章更多内容:1 - 2 - 下一页>> |