首页 > 代码库 > 解释与编译

解释与编译

      昨天看到牛腩老师讲的javascript的基本知识,首先就是简单的介绍了一下javascript。再次特别的提到了javascript是一种编译性语言,然后又进一步详细的说明。

    在人类的世界中,有不同的国家,同样也会有不同的语言。像:汉语,英语,法语,日语等等。但是国际通用的语言是英语。同样在计算机的世界中也分为高级语言和低级语言。当然计算机不能直接理解高级语言,只能直接理解机器语言,这就像国际通用语言一样。


     看一张图:


                                   


       上图是对我们计算机语言的一张图。计算机不能直接理解高级语言,只能直接理解机器语言(低级语言)所以必须把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。


    翻译的方式有两种,一是编译,而是解释。


    解释性语言:解释性语言编写的程序不进行预先编译,以文本方式存储程序代码,在发布程序的时候,看起来省了道编译的工序,但是在运行程序的时候,解释性语言必须先解释再运行。


    编译性语言:相对于解释性语言存在的,需要一个专门的编译过程,吧程序编译成为机器语言的文件,比如exe文件,以后要运行的话就不用重新翻译了,直接使用编译的结果就OK了。我们做的牛腩系统是asp.net开发的,它所使用的是c#语言。C#属于编译性的语言,所以第一次我们在运行的时候会感觉很慢,但是之后每次运行相比第一次就快很多了。


        接下来举一个实例——读书大比拼

      小红和小强两个人看书,看得都是日语原文的小说。在看的时候,小红有电子词典,一边看书一边翻译。然后第一遍就很开看完了。

    小强呢,一边看书,一边查字典,然后将每一句的解释都写在了纸上,这样第一次看书他看得时间相对来说比较慢。

    过一个月又进行一次读书大赛,和上次读的书一样,这次呢小红还是老方法,但是小强就相对很快,因为他把解释都写下来了,所以读起来就很快了。

    如果还进行一次比赛,结果和第二次的一样。。。

        小红做的工作就是计算机中的解释性语言所具有的特征,小强呢就是编译性语言所具有的特征。


  由以上例子可以得出二者的不同之处:


    解释性语言:每个语句用到的时候才会编译,而且不会被保存起来,所以他的执行效率要低,而且不能生成可独立执行的可执行文件,应用程序不能脱离其解释器。但是这中方式比较灵活可以动态地调节,修改应用程序很方便。


    编译性语言:把程序编译成机器语言的文件后,然后保存在电脑中,当电脑看到同样的语言后就回去查找以前编译的,这样他的执行效率会很高。但是应用程序一旦需要修改,必须先修改源代码再重新生成新的目标文件才能执行,只有目标文件而没有源代码,修改很不方便


    两者还有更多的区别,以上只是自己查看资料的理解,如果大家有更好的理解请多多指教!!



解释与编译