什么是编译执行和解释执行,程序的编译执行和解释执行有何区别-

  什么是编译执行和解释执行,程序的编译执行和解释执行有何区别?

  这是看Python时发现的问题。Python是一种脚本语言,解释和执行。Java是一种静态语言,被编译和执行。但是java运行时,JVM一般采用混合模式。

  一、编译和解释编译:将源代码一次性转换成目标代码的过程。

  类似于英文的全文翻译。

  执行编译过程的程序称为编译器。

  解释:把源代码一个一个转换成目标代码,一个一个运行的过程。

  类似于英语的同声传译。

  解释这个过程的程序叫做解释程序。

  编译过程只发生一次,所以编译过程的速度不是关键,目标代码的运行速度才是关键。因此,编译器一般会集成尽可能多的优化技术,使生成的目标代码具有更好的执行效率。

  然后程序每次运行都需要解释器和源代码,不能集成太多的优化技术,因为代码优化技术会消耗运行时间,影响整个程序的执行速度。

  高级语言

  根据计算机执行方式的不同,高级语言可以分为两类:静态语言和脚本语言。

  这里的执行方式是指计算机执行一个程序的过程,即编译和解释。

  静态语言:使用编译执行的编程语言,如C/C、Java(我这里有话要说,后面再说)等。

  脚本语言:解释执行的编程语言,如Python、JavaScript、PHP等。

  不同的执行方式有不同的静态语言(编译方式):编译器一次性生成目标代码,优化更充分,程序运行更快。

  1)对于相同的源代码,编译生成的目标代码执行速度会更快。

  2)目标代码可以在没有编译器的情况下运行,可以在类似的操作系统上灵活使用。

  脚本语言(解释方法):执行程序需要源代码,维护更灵活。

  1)解释执行需要保留源代码,程序纠错和维护非常方便。

  2)只要有解释器,源代码可以在任何操作系统上运行,移植性好。

  (有些企业有时用静态语言开发一个大规模的应用程序。过了五六年,只有函数还在,源程序找不到了。但是使用脚本语言,就不会有找不到源程序的问题了。)

  第二,Java的解释和编译。根据计算机执行方式的不同,高级语言分为两大类,静态语言和脚本语言。

  不过在之前的博客里,我也写过Java语言执行有两种:解释执行和编译执行。

  在Java编译时期,通过将源代码编译成。类并配合JVM的跨平台抽象,屏蔽了底层计算机操作系统和硬件的差异,实现了“一次编译,随处运行”。在运行时,主流的JVM都是混合模式(-Xmixed),也就是解释运行和编译运行一起使用。解释器的好处是不用等待,编译器在实际运行中效率更高。Java虚拟机运行时,解释器和即时编译器可以相互协作,相互学习,从而提高运行效率。

  

注:Python语言是一种被广泛使用的高级通用脚本编程语言,虽然采用解释执行方式,但是它的解释器也保留了编译器的部分功能,随程序运行,解释器也会生成一个完整的目标代码。这种将解释器和编译器结合的新解释器是现代脚本语言为了提升计算机性能的一种有益演进。

  这是《Python程序设计语言》的第二版。你可以参考一下高级语言按照计算机执行方式的分类,和它们在执行过程中实际采用的执行方式并不一致的问题。

  Ps:希望有大佬能解释的更详细或者指出错误。

  Ps2:我想知道有没有什么简单的方法可以缩小这张图中的鸭子~非常感谢OTZ

什么是编译执行和解释执行,程序的编译执行和解释执行有何区别-