汇编语言、高级语言(系统语言)、脚本语言的异同
汇编语言、高级语言(系统语言)、脚本语言的异同高级语言主要指需要编译的语言。如C/C++,Java,C#。脚本语言主要指解释型语言,编写的代码无需编译器编译,直接使用解释器放入虚拟机执行。高级语言相比汇编语言来讲,有两点不同,一为在更高的抽象等级,二为是强类型的。更高的抽象等级意味着屏蔽了许多的底层细节,主要包括寄存器内存管理、过程调用、简单的标识符,比如while、for。平均来讲,一行高级语言
汇编语言、高级语言和脚本语言在编程中各有不同。本文将对它们的异同进行总结。
高级语言主要指需要编译的语言,如C/C++,Java,C#等。脚本语言主要指解释型语言,编写的代码无需编译器编译,直接使用解释器放入虚拟机执行。
高级语言
相比汇编语言来讲,有两点不同,一为在更高的抽象等级,二为是强类型的。
- 更高的抽象等级
意味着屏蔽了许多的底层细节,主要包括寄存器内存管理、过程调用、简单的标识符,比如while、for。
平均来讲,一行高级语言的代码对应于五行汇编语言代码,汇编语言和机器指令几乎是一一对应的。实验表明,完成同样的工作,汇编语言需要的时间为高级语言的3-6倍。所以编写高级语言的效率是高于汇编语言的。
2.强类型
从以下几个方面体现:每个变量都必须声明其类型,数据和代码分离,变量可以被数据结构或者函数管理。
脚本语言
类型:脚本语言多为无类型的,比如一个变量可能现在为字符串,下一刻又变为整型。
执行速度:平均每行脚本语言代码执行成百上千条机器指令,高级语言则大约为五条。其中的原因之一是脚本语言使用了解释器,更大的原因是脚本语言的操作更加强大。
代码量:脚本语言的代码量和编程时间都少于高级语言。
不同的场景使用不同的语言
脚本语言并非要替代高级语言,他们都有适用的场景。
对于拥有复杂的数据结构和算法的程序,高级语言更容易去管理。因为高级语言不需要类型检查,运行时间比脚本语言快10-20倍。
当面对选择脚本语言还是高级语言时,可以考虑以下几个问题:
- 程序的主要任务是链接已有的内容吗
- 程序是否要控制大量的不同的事物
- 程序有GUI吗
- 程序需要对字符串做大量操作吗
- 程序的功能的发展是否迅速
- 程序需要可扩展吗
回答是越多越建议使用脚本语言,反之同意以下的说法则建议使用高级语言
- 程序包括复杂的数据结构和算法吗
- 程序需要管理大量的数据集吗,比如一张图片中的每一个像素;执行速度是否很重要
- 程序的功能是否已经定义好了并且很少改变
不同年代有不同的脚本语言和高级语言:
在1980年代的unix操作系统时代,sh作为脚本语言,C作为高级语言
在1990年代的个人电脑时代,C作为高级语言,Visual Basic作为脚本语言
在当今互联网时代,Java作为系统语言,Python,javascript,TCL,Perl等作为脚本语言
GUI出现在1980年代的早期,其目的不是创造新的功能(所以不会替换掉脚本语言,比如Windows的DOS,Linux的Bash),而是为内部功能和图形操作之间搭建桥梁。
互联网的出现极大的推动了脚本语言的发展,因为互联网本身就是一个粘合的工具。它并没有创造新的东西,而只是将已有的东西连接起来,更容易访问到。对互联网而言,最理想的语言就是可以让已连接的事物共同地工作,那就是脚本语言。比如javascript在网页中非常流行。
脚本语言可以很好的粘合软件中的各部分,如果没有它,会让架构失去一些特性。
脚本语言发展迅速,TCL、Perl等比起早期的脚本语言如JCL(Job Control Language)有很大的提升,比如JCL甚至没有迭代器,早期的unix shell也不支持过程调用。
随着计算机变得更快,越来越大的程序会使用脚本语言。
随着个人电脑的普及,越来越多的业余程序员加入,他们的主要工作并不是程序员,而只是通过程序来帮助工作的完成,脚本语言通过几个小时的学习便可以写出一些有用的程序,而系统语言则需要好几个月,所以他们会更青睐脚本语言。
LISP是脚本语言中的解释型和动态类型的先驱者。
参考:
- OUSTERHOUT J.K.. Scripting: higher level programming for the 21st Century[J]. Computer,1998,31(3):23-30.
更多推荐
所有评论(0)