编译型语言与解释型语言
看了一些Python的基础,说Python是解释型语言。突然在一个视屏上看到一个作业是这样的简单说一下编译型语言与解释型语言?仔细一想,还真不知道这两个是什么意思,自己的记忆中这两个不都是一个东西吗?不都是需要编程的码?然后就查了学习了一下,还真不一样。
- 编译型语言代表有:
C语言,C++、Object-C以及最近很火的苹果新语言swift
通常都会对源代码进行编译,生成可以执行的二进制代码,执行的是编译后的结果 - 解释型语言代表有:
JavaScript、Python、Erlang、PHP、Perl、Ruby
通常不用对源代码进行编译,一般是通过解释器载入脚本后运行。由于每个语句都是执行的时候才进行解释翻译,这样解释性语言每次执行就要翻译一次,效率相对要低。 -
Java具有编译与解释两种特性:既可以将其源代码当作脚本执行,也可以进行编译成.class代码(字节码)载入运
编译型语言:
- 优点:编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高。可以脱离语言环境独立运行。
- 缺点:编译之后如果需要修改就需要整个模块重新编译。编译的时候根据对应的运行环境生成机器码,不同的操作系统之间移植就会有问题,需要根据运行的操作系统环境编译不同的可执行文件。
解释型语言
- 优点:有良好的平台兼容性,在任何环境中都可以运行,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就可以,可以快速部署,不用停机维护。
- 缺点:每次运行的时候都要解释一遍,性能上不如编译型语言。
编译型语言要全部写完之后,然后通过某个编译器,去生成一个类似*.exe的二进制文件,然后手工双击这个文件才看的到效果;解释型语言则没生成你看的到的那种.exe文件,而是直接发出效果。那么区别之一就是:是否显性的生成二进制文件供你去双击。
编译型语言运行的是最终的二进制代码了,所以不在需要编译器在身边守护。但解释型语言则不然,它是边解释、边运行,所以运行的时候很可能还有部分代码没有解释好,所以需要编译器守护(解释型语言把该工具叫:解释器)。那么编译器在哪里?就在
浏览器里,所以你要看html效果,必须是用浏览器这种工具,或者有编译工具在内的其他工具,如:模拟浏览器的工具。编译型语言由于运行的已经是完全的二进制内容了,所以运行起来很干净利落,自然速度快。但解释型语言,运行的不一定是完全的二进制内容,因为它是边解释(成二进制),边运行。所以当它执行看出效果的时候,程序后半部分还不一定解释成二进制呢。所以它是“三心二意”的做事,速度没有前者快,但是
CPU的运行速度如果很快(注:这就是【Python】作为一门解释型语言,弊端有所减轻的原因),你可能看不出来,偶尔会看到“有点卡”的效果。原因就是:它边解释、边运行,你看到效果了,可能还有一少半的代码没解释成二进制呢,所以你看到的效果会是残缺的,这就是为什么查看网页的时候,很容易就看到这样的情况:先是出现一堆没有布局的文字,然后才出现那种布局好的效果。编译型语言是运行二进制内容,所以:一旦CPU指令系统改变,之前的二进制文件可能运行不了。比如:如果到其他硬件平台上运行,就可能出现错误,就需要根据该平台重新编译出新的二进制文件。所以:可移植性差;而解释型语言则不然。它并没有实现弄成什么二进制内容,而是在需要的时候才开始编译、运行。所以:它自然具有可移植性,即:在任何平台都可以马上运行起来。注意:它的解释工具如:
浏览器,本身就是编译型语言解释出来的二进制代码,所以浏览器本身不具有移植性,是需要针对不同的平台弄出对应的浏览器最终二进制文件的。这里千万不要混淆了。编译型语言应用领域通常是那些安装软件,如:桌面上的那种安装软件;解释型的语言的应用领域通常是:互联网,网站等,那种刷新了一下就可以看到最新效果的领域。
注:本文主要来自于https://www.jianshu.com/p/bd3d7005de43。感谢大神

浙公网安备 33010602011771号