编译型语言和解释型语言的真正区别是什么?

SyntaxErrors 2020-04-26 02:32:11
众所周知,编译型语言经过一次编译之后,生成平台对应的机器码并包装成平台所能识别的可执行性程序,但是它的移植性和执行效率是针对可执行性程序而言的。而解释型语言的移植性好,是针对程序的源代码而言的。而且,显而易见的是,编译型语言生成的可执行程序的执行效率,肯定比解释型语言先编译后执行的效率高,因此,我很难理解他们的可比性在哪?
...全文
505 6 打赏 收藏 举报
写回复
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
积木 2020-04-30
引用 2 楼 医手 的回复:
效率高未必就是最好的。 就好像飞机肯定要比自行车快,为什么还有那么多人不选择开飞机去买菜呢? 所以要根据不同的场景来作出选择,有时你会觉得乘飞机比较好,有时你会觉得骑自行车比较好。 编译型比解释型要快,但那个快是按毫秒来算的,快几毫秒,人类根本感知不到。所以跟人类打交道的界面通常用解释型的。应为一改马上生效,不用苦苦等待编译。其实解释型最大的优点是自由,出错时还能看到源码。
看量大不大,你用lua写个设备协议解析逻辑然后跑在服务器上试试,高并发场景下这区别就很大了,啥事儿就怕量大,量小咋玩儿都行,量大一玩儿就死。
  • 打赏
  • 举报
回复
qybao 2020-04-28
简单形象的理解就是,编译是翻译好的代码,解释是带个翻译员的代码
编译就是翻译员把代码都翻译成相应系统的二进制指令(相当于翻译成了他过语言),每个系统可以很快的根据指令(他国人能很好理解指令)执行,所以一定程度来说快(他国人直接就能执行)
解释是没有翻译成相应的二进制指令(没翻译成他国语言),而是每次执行时请个翻译员来解释指令,然后再由系统执行(他国人从翻译员那里拿到翻译结果才执行),因为每次都需要翻译,所以一定程度来说慢
至于移植性,也是一样的,翻译好的指令不一定适合另外一个系统(翻译成他国语言的不是通用语言,另外一个国家的人看不懂),所以拿到另外一个国家别人看不懂,没法执行,所以有局限性
而翻译型因为执行时才翻译(也就是带个翻译官随时翻译成各国语言),所以相对来说灵活性高,只要带上不同的翻译官就可以在各个国家执行。
  • 打赏
  • 举报
回复
SyntaxErrors 2020-04-28
已解决,先解释如下
1.执行效率比较:对于编译型语言来说,它只需要编译一次,从第二次开始不再需要编译的过程,只需要直接执行编译好的结果即可;而解释型语言不同,它每次都需要先解释(相当于编译型语言的编译过程),后执行,因此编译型语言的执行效率要高于解释型语言。
2.可移植性比较:假设编译型语言和解释型语言都在源程序的级别上,那么这两个语言的可移植性“相同”(比如将编译型语言的源代码copy到另一台机器上,这时编译型语言跟解释型语言差不多,只不过它是整体编译后再运行),而现实情况往往是编译型语言中包含有第三方的类库、API等等,这些第三方的东西一般情况下是没有源代码的,引入的都是别人打包好的程序,因此编译型语言在正常情况下往往难以保证程序中的所有代码都处在源程序的级别上(可以将第三方的东西理解为机器语言级别),所以编译型语言的可移植性受到限制。而解释型语言永远不会出现这种情况,因为它压根不生成可执行程序,因此其源代码也就跟可执行程序无任何牵连,所以能够轻松地实现源程序级别的移植。
  • 打赏
  • 举报
回复 1
qq_39936465 2020-04-26
引用 楼主 史博辉的开发日记 的回复:
众所周知,编译型语言经过一次编译之后,生成平台对应的机器码并包装成平台所能识别的可执行性程序,但是它的移植性和执行效率是针对可执行性程序而言的。而解释型语言的移植性好,是针对程序的源代码而言的。而且,显而易见的是,编译型语言生成的可执行程序的执行效率,肯定比解释型语言先编译后执行的效率高,因此,我很难理解他们的可比性在哪?
有很多方面可以比较, 比如:可读性,执行速度,程序编写的长度,简洁度。语言的功能性,可发展性,还有和其他语言或操作系统兼容性等等。
  • 打赏
  • 举报
回复
医手 2020-04-26
效率高未必就是最好的。 就好像飞机肯定要比自行车快,为什么还有那么多人不选择开飞机去买菜呢? 所以要根据不同的场景来作出选择,有时你会觉得乘飞机比较好,有时你会觉得骑自行车比较好。 编译型比解释型要快,但那个快是按毫秒来算的,快几毫秒,人类根本感知不到。所以跟人类打交道的界面通常用解释型的。应为一改马上生效,不用苦苦等待编译。其实解释型最大的优点是自由,出错时还能看到源码。
  • 打赏
  • 举报
回复
tianfang 2020-04-26
都是代码到执行方式过程,当然可以比较 还有一种是JIT,即时编译编译器 方式
  • 打赏
  • 举报
回复
相关推荐
发帖
Java SE

6.2w+

社区成员

Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
帖子事件
创建了帖子
2020-04-26 02:32
社区公告
暂无公告