脚本语⾔的特征以及Python语⾔的特点
脚本语⾔的脚本这⼀说法缘于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都是脚本语⾔。
linux循环执行命令脚本C/C++编译、链接后,可形成独⽴执⾏的exe⽂件。
④脚本语⾔是⼀种解释性的语⾔
例如vbscript,javascript,installshield script等等,它不象c/c++等可以编译成⼆进制代码,以可执⾏⽂件的形式存在。脚本语⾔不需要编译,可以直接⽤,由解释器来负责解释,不过每次都需要翻译,执⾏速度慢。
⑤脚本语⾔⼀般都是以⽂本形式存在,类似于⼀种命令
举个例⼦说,如果你建⽴了⼀个程序,叫,可以打开.js为扩展名的⽂件。
你为.js⽂件的编写指定了⼀套规则(语法),当别⼈编写了.js⽂件后,你的程序⽤这种规则来理解编写⼈的意图,并作出回应.那么,这⼀套规则就是脚本语⾔。
有⼈说Python不是脚本语⾔,是⾼级语⾔。这个要看个⼈的理解。⽐较轻量级的语⾔。javascript也叫脚本语⾔,解释型语⾔。⼀⾏⼀⾏的读⼊⽂本然后执⾏。
解释型语⾔也不是说,不关⼼整个⽂件,只是从上到下⼀句⼀句的执⾏。⾸先,浏览器的解释器也是要先扫描⼀下引⼊的所有的js⽂件,如果是function的静态⽅法,就缓存起来,然后随时可以⽤。这就是为什么,var⽅式定义的⽅法,必须定义要在执⾏前边。⽽function的⽅法不⽤。再者,为什么C#先进性编译的语⾔,不分参数或者⽅法书写的先后顺序。因为有⼀个编译的过程,编译的过程会完成相应的顺序排列。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论