脚本语言的脚本这一说法缘于Unix操作系统,目的是让其批量的,按照既定的方式去做一些事情,就想照着剧本做事一样。英文中的script就是剧本的意思,中文对应的词就是剧本,脚本。脚本就是剧本意思。人们叫着叫着就这样了,大家都叫脚本语言,没有人叫剧本语言。所以有人说,我写了一个脚本,意思是,写了一个批量的能做某些事的命令,不一定非得是用某种语言写脚本,也可以只用CMD命令写一个bat文件,这个也叫做脚本。
脚本语言的“优势”,其实只在于它不需要事先“编译”。编译型语言,这里用C语言做例子,需要事先进行编译,编译成为二进制码,然后执行的时候直接读取二进制码。这个过程比较快,因为毕竟读取二进制要比读取文本快的多。这种语言像C语言,执行特别快。编译的时候,生成的是CPU可以直接识别的二进制码。但是这个编译的过程,跟硬件关系特别大,因为要参考硬件来生成二进制码。这样就造成了C程序的可移植性特别差,windows平台编译的C程序不能在Linux系统运行,甚至同为windows系统,在A电脑编译的程序在B电脑都可能不运行,因为有些小的硬件差异。
像Java,C#这些语言,因为有了虚拟机(JVM)或者运行时(.NET Runtime)的存在,跟硬件与操作系统的耦合性降低了。但是也需要一个编译的过程,编译成为中间的二进制码,然后在解释执行的时候,二进制码会在虚拟机或者运行时再次转换为CPU能够识别的二进制码。所以这些面向对象的语言,也需要编译,但是编译完事后还不能被CPU识别。这种语言处于编译型语言与解释性语言中间,比编译型语言C语言慢,比解释型语言javascript快。
脚本语言跟解释语言有点类似,都不需要事先进行编译,而是直接读取文本文件,一边解释一边执行。脚本语言与解释语言我认为还是有区别的。解释语言是说解释执行的语言,但执行的代码并不一定是文本格式的。脚本语言的程序是文本文件,并且是解释执行的。但这两种区别也有些模糊。反正有点区别,不过你认为差不多也行,好象现在并不太细分脚本语言与解释语言。脚本语言泛指单用作简单編程任务如shell scripts。脚本语言是一种介乎于 HTML 和诸如JAVA 、 Visual Basic 、 C++ 等编程语言之间的一种特殊的语言,尽管它更接近后者,但它却不具有编程语言复杂、严谨的语法和规则。
有一些脚本语言已经发生了变化,如python,perl已经可以编译成中间代码然后执行,这样的脚本语言已经可以被称为编译型脚本语言。脚本最终执行时并不是二进制文件,仅仅是(依赖于平台的)解释结果。我认为脚本语言一个最特别的地方就是必要有执行平台(这个平台是构架在系统平台上的二进制运行程序)脚本语言和一般语言的差别在于一般语言的编译和解释是平台相关的,而脚本语言可以在文本执行时做到平台无关(只要该平台具有相应的功能一致的执行平台)。
脚本语言与编译型语言在类型定义上的区别:系统语言通常是强类型和静态类型定义。这就意味着所有变量的类型要在程序中指定,在编译时检查。相反地,脚本语言是最松散的类型定义,完全没有类型声明,并且在运行时进行动态类型检查。
执行上的区别:系统语言的特点是编译的。程序被编译成可执行的二进制。另一方面,脚本语言的特点是解释,也就是,指令被立即执行,不存在一个编译的中间状态。这就意味着脚本语言是交互式的(你可以在提示符下敲入命令,并且看到结果),这是另一个巨大的胜利。这样完全将编译过程从编辑-编译-运行循环中去掉了。
速度上的区别:脚本语言一方面在速度与效率,一方面在易用性与表示式的强大性之间进行折衷的典型例子。这就使得脚本语言的执行速度比系统语言慢一个数量级。这就是对脚本语言诽谤最多的方面。性能的降低不是真正的问题,因为思想是用脚本语言来组合组件,这些组件是用象C这样的快速系统语言来编写的。所以所有需要运行快速的东西将因为是用快速的语言实现的而运行得快速。脚本语言只用于将东西绑在一起,并且这些通常不是性能的瓶颈(或如果是,你需要重新检查你的设计)。
算机是不能理解高级语言,当然也就不能直接执行高级语言了。计算机只能直接理解机器语言,所以任何语言,都必须将其翻译成机器语言,计算机才能运行高级语言编写的程序。
一、翻译和解释的不同
翻译的方式有两种,一个是编译,一个是解释。
两种方式只是翻译的时间不同。编译型语言写的程序在被执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,以后要运行的话就不用重新翻译了,直接使用编译的结果就行了(exe文件),因为翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率高。
解释则不同,解释性语言的程序不需要编译,省了道工序,解释性语言在运行程序的时候才翻译,比如解释性basic语言,专门有一个解释器能够直接执行basic程序,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就要翻译一次,效率比较低。
二、脚本语言
①脚本语言(JavaScript,VBscript等)介于HTML和C,C++,Java,C#等编程语言之间
HTML通常用于格式化和链结文本。而编程语言通常用于向机器发出一系列复杂的指令。
②脚本语言与编程语言也有很多相似地方,其函数与编程语言比较相象一些,其也涉及到变量。与编程语言之间最大的区别是编程语言的语法和规则更为严格和复杂一些。
③与程序代码的关系:脚本也是一种语言,其同样由程序代码组成
注:脚本语言一般都有相应的脚本引擎来解释执行。 他们一般需要解释器才能运行。JAVASCRIPT,ASP,PHP,PERL都是脚本语言。C/C++编译、链接后,可形成独立执行的exe文件。
④脚本语言是一种解释性的语言
例如vbscript,javascript,installshieldscript等等,它不象c/c++等可以编译成二进制代码,以可执行文件的形式存在。脚本语言不需要编译,可以直接用,由解释器来负责解释,不过每次都需要翻译,执行速度慢。
⑤脚本语言一般都是以文本形式存在,类似于一种命令
举个例子说,如果你建立了一个程序,叫aaa.exe,可以打开.js为扩展名的文件。
你为.js文件的编写指定了一套规则(语法),当别人编写了.js文件后,你的程序用这种规则来理解编写人的意图,并作出回应.那么,这一套规则就是脚本语言。
有人说Python不是脚本语言,是高级语言。这个要看个人的理解。比较轻量级的语言。javascript也叫脚本语言,解释型语言。一行一行的读入文本然后执行。
解释型语言也不是说,不关心整个文件,只是从上到下一句一句的执行。首先,浏览器的解释器也是要先扫描一下引入的所有的js文件,如果是function的静态方法,就缓存起来,然后随时可以用。这就是为什么,var方式定义的方法,必须定义要在执行前边。而function的方法不用。再者,为什么C#先进性编译的语言,不分参数或者方法书写的先后顺序。因为有一个编译的过程,编译的过程会完成相应的顺序排列。