计算机是基于电工作的,它能直接理解的就是高低电频所对应的0101这种二进制指令。
而直接用二进制编程的这种方式就是机器语言,这种编程方式执行效率是最高的,因为计算机可以无障碍理解,直接运行,但是它的复杂度极高,开发效率极低,你可能要写一大堆0101这种二进制数,才能实现一个非常小的功能。
然后我们再来说汇编语言,汇编语言仅仅使用一个英文标签,代表一组二进制指令,汇编语言打印一句hello world,需要十多行代码,你可以看一下,相对于机器语言,汇编语言使用英文标签编写程序相对简单,执行效率稍低,但还是太复杂,开发效率依旧很低。
而高级语言就是站在人的角度,用人类的字符去编写程序,但是因为高级语言离硬件更远,更贴近人类的语言,人类可以理解,而计算机则需要通过编译,最终转换为二进制,计算机才能理解,所以高级语言的执行效率相对前面两种语言会低一些,但是开发效率却得到了极大的提升。
在高级语言中,按编译方式的不同,又分为两种:
一种叫编译型语言,比如 c 语言,java。
另一种叫解释型语言(即时编译),比如 python,js。
编译型语言就是程序写完之后,用一个编译器,类似于翻译软件,把完整的程序源代码翻译成计算机能识别的机器语言,因此这个编译之后的机器语言,可以脱落其语言环境独立执行,执行效率极高,但是开发效率相对较低,应 用程序一旦需要修改,必须先修改源代码,然后重新编译,生成新的目标文件才能执行。并且编译型代码是针对某一个平台编译的,当前平台的编译结果无法在其他的平台使用(Java是因为有虚拟机的存在才跨平台),因此跨平 台性很差。
而解释型语言需要有一个解释器,类似于翻译官(比如能够运行js的浏览器和nodejs)。解释器会读取程序代码,解释一行立马执行一行,因此执行效率会被解释器拖慢。但是开发效率极高,一旦发现错误直接修改就好,改完直 接就可以运行。解释型语言针对不同的平台会有不同的解释器。所以解释型语言的代码,在不同的平台也可以直接运行。
最后我们来总结一下:
执行效率:
机器语言 > 汇编语言 > 高级语言(编译型 > 解释型)
开发效率:
机器语言 < 汇编语言 < 高级语言(编译型 < 解释型)
跨平台性:
解释型语言跨平台性极强!
由于现在主流开发的程序都是基于网络通信的,我们写的程序执行效率再高,最终都会被网络延迟拖慢。所以我们主要考虑的就是开发效率和跨平台性。