即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

文章标题

编程语言 UCASER 81℃ 0评论
本文目录
[隐藏]

1.参考:http://blog.csdn.net/tjxy_20081/article/details/8937687

2.何为字节编译?解释器与编译器的区别?Java的字节码和Python的字节码有什么区别?

    结论:不能把语言纯粹地分成解释型和编译型这两种。用Java来举例,Java首先是通过编译器编译成字节码文件,然后在运行时通过解释器给解释成机器文件。所以我们说Java是一种先编译后解释的语言。Python在运行时会生成.pyc的二进制临时文件,看起来很像是预编译的结果,也不是纯的解释型语言。Python解释器只把我们可能重用到的模块持久化成.pyc文件。
    编译型:编译链接生成机器码,直接在内存中执行
   解释型:简单理解,每一行单独执行与执行整个脚本效果是一样的    
   Python是一个解释型的语言。但是为了效率上的考虑,Python也提供了编译的方法。编译之后是bytecode的形式。Python也提供了和Java 类似的VM来执行bytecode。不同的是,因为Python是一个解释 型的语言,所以编译(compile)不是一个强制的操作。事实上,编译是一个自动的过程。多数情况下,你甚至不会在意他的存在。编译 成bytecode可以节省加载模块的时间,从而提高效率。
    除了效率原因,bytecode也增加了反向工程的难度,在某种程度上保 护你的代码。当然,反编译仍然是可以的。所以如果真的想保护代码 ,还是用别的方法吧。另外Python还提供了-O选项,可以编译生成“优化”的bytecode,文 件扩展名是.pyo。但实际上优化的内容有限,作用不大。 如果希望生成可执行文件,就要依赖于第三方的工具了。Java编程人员在编写完软件后,通过Java编译器将Java源程序编译为JVM的字节代码。任何一台机器只要配备了Java解释器,就可以运行这个程序,而不管这种字节码是在何种平台上生成的。解释器不能单独执行,必须要有虚拟机。解释器它的作用只是把代码解释成虚拟机能够读懂的东西。Java采用的是基于IEEE标准的数据类型。通过JVM保证数据类型的一致性,也确保了Java的平台无关性Java类会被编译成一个或者多个字节码文件(.class)然后打包到JAR文件,而后Java虚拟机会从相应的CLASS文件和JAR文件中获取相应的字节码。
    C/C++语言编译器是直接把源程序一步翻译为目标计算机(16位,32位,64位)的指定芯片(X86或ALPHA PPC,RISC)、指定操作系统用的特定可执行程序目标码,而JAVA编译器是把程序翻译为中间码,由虚拟机将中间码解释为最终的指定芯片、指定操作系统的可执行程序目标码。

 

 

 

 

 

转载请注明:CodingBlog » 文章标题

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情