今天老师给我们上VB课,讲到VB是解释型的语言,是边解释边执行的,所以执行效率上不如c语言这种编译型的语言快。
这时候我就问老师:“为什么VB不做成编译型的啊,那样的话速度不就上去了吗?”
老师无语,对我说这个问题比较深奥,改日给bill gates发个邮件问一下。
听到这我就知道指望老师回答这个问题是没希望了,只能请教各位高人指点了。

解决方案 »

  1.   

    即使编译为解释执行的P代码,效率也未必就低,因为VB中大量的是调用现成的编译好的东西,比如ActiveX对象或Windows本身的API函数(而这些都是经过优化的),自己写的代码一般是逻辑方面的,占用执行时间很少的;所以一般情况下VB程序的执行效率和C程序不相上下的~
      

  2.   

    VB是编译型的语言,这是毫无疑问的。说它不如C快可能是因为C能够直接对内存进行操作的原因吧。但是现在的PC上很难感觉的到谁快谁慢。
      

  3.   

    不会吧,vb6.0是编译型的?
    不过我听说用vb写的程序拿到没有安装vb的机器上是无法运行的阿…………听说而已,高手说是不是阿?
      

  4.   

    民办学校是这样的了,先混个学历再说吧
    =================================================呵呵,惭愧啊,重点大学呢。
    不过这个老师是搞c++的,他教vb是现学现卖,实力很一般
      

  5.   

    现在的计算机速度根本分辨不出来,但是为什么我还真的没考虑过,问问bill
      

  6.   

    //不过我听说用vb写的程序拿到没有安装vb的机器上是无法运行的阿
    VB确实要依赖外部的东西,但这和是否编译型没有关系现在依赖外部程序是很正常的,比如第三方组件、第三方API函数;比如VC、Delphi都是完全编译的,但如果用ADO、ODBC访问数据库,如果没有相应的组件或ODBC驱动程序一样没法运行;VC的界面方面主要用MFC类库,可以选择静态连接全部编译道程序里面,但这样程序会很庞大;如果选动态连接MFC的话,如果没有相应的DLL的话,VC编的程序一样无法运行。VB中主要是用了MSVBVM60.DLL这个文件,Windows2000以上已经系统自带这个文件~
      

  7.   

    那MSVBVM60.DLL这个文件主要是负责什么的呢?
    看他的名字好像是虚拟机,呵呵,最后两个字母是VM~~~~~~~
      

  8.   

    //不过这个老师是搞c++的,他教vb是现学现卖,实力很一般
    现学现卖?恐怕是根本没有学,凭对VB早期版本的记忆信口乱说的吧
    还重点大学的老师呢,严重不负责任!
      

  9.   

    其实VC比VB难使并不是因为编译型和解释型的区别,而是因为设计时的目的不同。微软在设计VB时就把定位在一个面向初级用户的工具上,所以许多复杂、高级的功能没有提供,这样简化了学习难度。而VC主要面向专业程序员,可以支持非常复杂的功能,所以也比较难学。其实Delphi就是一个编译型系统,但象VB一样好学。 
        编译型和解释型的根本区别在于生成的代码不同:编译型生成的是机器码,所以运行速度快,目前的调试环境也很强大,可以支持各种源代码调试方法,唯一欠缺的是不能象解释系统那样当出错的时候立即定位相关的代码,不过这对有经验的程序员不是问题;解释型生成的是伪代码(P-代码),运行速度慢,而且由于生成的代码结构比较有规律,所以容易反汇编。 
      

  10.   

    MSVBVM60.DLL不是虚拟机,是一个大的运行库,VB所有内部函数都在MSVBVM60.DLL中,其中的函数都是经过高度优化的,影响效率的方面在于函数调用的过程而不在于代码本身,而这方面性能差别很小的~
      

  11.   

    你的意思是说,vb中的数学函数、字符串函数等都是在MSVBVM60.DLL中实现的,vb使用动态链接来调用这些函数?
    那为什么tc2.0写程序通用性很强呢,难道tc2.0只能用静态链接?
      

  12.   

    VB的特点是可以解释执行,但并不是不能编译执行,事实上VB就是编译执行的,除非单步执行。
    老师的意思是这个问题你该去问比尔,而不是问老师,因为比尔就是这么做的。
    再说编译也有很多种的,不是编译就一样的速度。比如VB6就有很多种编译方法,速度就不一样。
    我们依赖VB的一个原因,就是VB可以写一行代码执行一步,再写一行再执行一行,这样很多复杂的算法问题就容易解决。除了VB,其他没有这个环境(几乎)。
    至于VB要依赖大量连接库,这是MS的商业考虑,以便维护一个比较大的商业市场,如果把VB弄得和VC一样了,VC还有必要存在么?
    要说简单,那只是初学简单一些罢了,真正会用VB的人,还是很少的,我曾经招聘过VB程序员,很少能有人胜任的,只有5%的VB程序员有进入项目组的能力,而且还必须培训。