web开发语言javapython对比(三大编程语言的分析)
web开发语言javapython对比(三大编程语言的分析)java次之 需要javac编译,生成Hello.class字节码:hello python从这点看 python和java类似,都是先编译成字节码,然后通过虚拟机,来实现的跨平台可移植性。但python是动态类型语言,一个变量引用的类型只有在运行时才能确定,编译出来的pyc字节码没有变量的类型信息,需要在PVM转译时来确定类型信息,而Java是静态类型语言,JVM只负责转译,没有确定类型的负担,所以Java的执行速度比Python快。而C语言,因为直接编译成机器码,生成可执行程序。该可执行程序只能在某平台上运行。正因为直接编译成机器码,程序的性能是最好的,牺牲的是可移植性,同一份代码其他平台上需要重新编译,甚至改写代码。python最方便 python hello.py即可执行。其中utils.pyc是自动编译出来的字节码。
最近在梳理python的一些知识,本文通过简单分析,给出python和Java背后跨平台背后的原理,以及python、java、c性能差距的原因。
原理部分: python/java/c执行的背后python/c/java
python程序执行的背后: 先将源代码编译成字节码,字节码发送到PVM(python虚拟机),PVM执行这些字节指令。
所谓字节码是经过编译的,但与操作系统无关的,需要虚拟机转译后才能成 为机器码的中间代码。
从这点看 python和java类似,都是先编译成字节码,然后通过虚拟机,来实现的跨平台可移植性。但python是动态类型语言,一个变量引用的类型只有在运行时才能确定,编译出来的pyc字节码没有变量的类型信息,需要在PVM转译时来确定类型信息,而Java是静态类型语言,JVM只负责转译,没有确定类型的负担,所以Java的执行速度比Python快。
而C语言,因为直接编译成机器码,生成可执行程序。该可执行程序只能在某平台上运行。正因为直接编译成机器码,程序的性能是最好的,牺牲的是可移植性,同一份代码其他平台上需要重新编译,甚至改写代码。
实践部分: hellopython最方便 python hello.py即可执行。其中utils.pyc是自动编译出来的字节码。
hello python
java次之 需要javac编译,生成Hello.class字节码:
hello java
C语言繁琐一些,需要更多的命令:编译、汇编、链接,生成最终的可执行程序。其中hello.s为编译出来的汇编代码。
hello c
总结字节码使得跨平台成为可能,动态类型进一步解放了程序员的双手,是代码更简洁。开发效率高是Python的战略优势。
Java作为静态类型语言,既能跨平台,有保证相对的性能,比较中庸。
C,直接编译成机器码,高性能是其战略优势。汇总如下:
总结