汇编语言、高级语言(系统语言)、脚本语言的异同

汇编语言、高级语言和脚本语言在编程中各有不同。本文将对它们的异同进行总结。

高级语言主要指需要编译的语言,如C/C++,Java,C#等。脚本语言主要指解释型语言,编写的代码无需编译器编译,直接使用解释器放入虚拟机执行。

高级语言

相比汇编语言来讲,有两点不同,一为在更高的抽象等级,二为是强类型的。

  1. 更高的抽象等级

        意味着屏蔽了许多的底层细节,主要包括寄存器内存管理、过程调用、简单的标识符,比如while、for。

        平均来讲,一行高级语言的代码对应于五行汇编语言代码,汇编语言和机器指令几乎是一一对应的。实验表明,完成同样的工作,汇编语言需要的时间为高级语言的3-6倍。所以编写高级语言的效率是高于汇编语言的。

         2.强类型

        从以下几个方面体现:每个变量都必须声明其类型,数据和代码分离,变量可以被数据结构或者函数管理。

脚本语言

类型:脚本语言多为无类型的,比如一个变量可能现在为字符串,下一刻又变为整型。

执行速度:平均每行脚本语言代码执行成百上千条机器指令,高级语言则大约为五条。其中的原因之一是脚本语言使用了解释器,更大的原因是脚本语言的操作更加强大。

代码量:脚本语言的代码量和编程时间都少于高级语言。

不同的场景使用不同的语言

脚本语言并非要替代高级语言,他们都有适用的场景。

对于拥有复杂的数据结构和算法的程序,高级语言更容易去管理。因为高级语言不需要类型检查,运行时间比脚本语言快10-20倍。

当面对选择脚本语言还是高级语言时,可以考虑以下几个问题:

  1. 程序的主要任务是链接已有的内容吗
  2. 程序是否要控制大量的不同的事物
  3. 程序有GUI吗
  4. 程序需要对字符串做大量操作吗
  5. 程序的功能的发展是否迅速
  6. 程序需要可扩展吗

回答是越多越建议使用脚本语言,反之同意以下的说法则建议使用高级语言

  1. 程序包括复杂的数据结构和算法吗
  2. 程序需要管理大量的数据集吗,比如一张图片中的每一个像素;执行速度是否很重要
  3. 程序的功能是否已经定义好了并且很少改变

不同年代有不同的脚本语言和高级语言:

在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是脚本语言中的解释型和动态类型的先驱者。

参考:

  1. OUSTERHOUT J.K.. Scripting: higher level programming for the 21st Century[J]. Computer,1998,31(3):23-30.

你可能感兴趣的:(翻译,javascript,开发语言,ecmascript)