python -- Java和Python的的差异及其成因
思想
面向对象
- python的产生几十年了,几十年前面向过程是主流,所以用python有好多程序用的是面向过程设计方法,很多概念从c语言过来的,class在python中是后加入的,在大家提到Python的时候都会很自然的想到它的方便快捷,其实一方面是环境(linux内嵌)然后就是它可以按照面向过程的方式来编程,在写一个简单的爬虫程序的时候大家估计都不会去定义一个类,所以Python是对面向过程的支持
- Java在1991年推出JDK1.0的时候的虚拟机叫Sun Class JVM,也就是从他构建完成被正式发布的时候就已经是面向对象了,Java里有一句话叫万事万物皆对象,放到一个最基本的语法上说就是,不管你要做什么你都需要一个对象,所有的方法的调用必须是依赖于一个对象的实例的,不能像Python或者c那样打开文本写一个function然后在后面直接使用方法名调用。
语言类型:
机器是不能直接理解高级语言的,需要一个翻译的过程
- 编译型语言:Java有一个编译器来将开发者的代码编译为.class文件,然后JVM(Java虚拟机)只能加载.class文件,JVM又是用了解释的方式来执行了这个.class文件,所以Java其实也不算是纯粹的编译型语言,纯粹的编译型语言在完成一次编译后以后都是可以直接运行的
- 解释型语言:在运行的时候才逐句的去翻译为机器语言,需要一个对应的解释器,每次运行都需要编译,所以效率通常就要低一些,Python通过在运行时生产字节码文件.pyc来改善性能,更多关于.pyc的机制
快捷轻巧
基础语法
数据类型
- java
- 基础数据类型:byte、char、short、int、long、float、double、boolean
- 其他:String、list、set、map
- Python
- Numbers:int、long、float、complex
- String:
- List:动态数组实现的,也就是说内存是连续的
- Tuple:静态数组
- Dictionary:
运算法则
数据结构
内存模型
垃圾回收
框架对比
- 搭建难度、成型框架(数量、功能)
- 稳定性、运行速度
