编程语言对比
■语言概述
语言抽象程度越高,开发的效率越高,但执行的效率却越来越低,这似乎是一对矛盾,高级编程语言追求开发效率,就得调用各种封装好的库与组件,用增加处理时间的代价来提高效率。现在硬件发展很快,牺牲些许时间换取高效更符合人们的需求。
■低级语言
机器型语言
直接运用CPU内部工作指令来操作二进制代码0和1,只有硬件才能读懂,对于人类太烧脑
汇编语言
将机器语言转换成了符号语言,执行效率高无法移植,可读性差,对人类不够友好
■高级语言
编译型语言:C/C++
高效可移植可重用且友好,解决了程序员重复搬砖烧脑的痛点
解释型语言:Python,Perl,Ruby
面向对象可移植,开发效率高且灵活,让程序员脑洞大开,没有做不到,只有想不到
程序运行流程
机器语言:二进制源代码直接扔给CPU处理
汇编语言:通过编译器转换成机器码再给CPU处理,加了一道工序
编译语言:通过编译器转换成机器码再给CPU处理,加了一道工序
解释语言:先用编译器转换成字节码,再用专用的解释器边解释边执行转成机器码,再交给CPU处理,多了两道工序,效率低了些。
◇ 术语解读
source code | 源代码:即程序猿纯手工敲打没有加工过的代码。Python以.py格式保存 |
complier | 编译器:将源代码编译成字节码 |
bytecode | 源代码被编译之后的代码称为字节码,再次运行程序无需重复编译,Python中字节码一般是.pyc格式 |
字节码主要是为了实现软硬环境无关,实现可移植/跨平台,不同系统上字节码是一样的,但是根据平台不同,编译所生成的机器码有区别 | |
字节码是源代码和机器码的中间形态 | |
interpreter | 解释器/虚拟机将字节码转译为可以直接执行的机器码,Python使用PVM(Python Virtual Machine),Java使用JVM(Java Virtual Machine) |
native code | 机器码:虚拟机/解释器能够读懂的语言 |
processor | CPU/处理器最终读取机器码执行程序 |
◆ 特点总结
机器语言是二进制执行代码,无需“翻译”过程,CPU处理器可以直接读取,其他语言最终都需要统一编译为机器语言执行
汇编语言需要一次编译过程,硬件相关无法移植,抽象程度低/可读性差,执行效率很高/开发效率较低
编译语言需要一次编译过程,硬件无关可移植,抽象程度高/可读性强,执行效率较高/开发效率较高
解释语言需要两次“翻译”,硬件无关可移植,抽象程度超高/可读性强,执行效率较低/开发效率很高