开始只是对于脚本语言理解不到位,通过查阅感觉了解脚本语言只是冰山一角(可能对脚本语言的介绍会多一些),有必要对计算机语言的分类做进一步了解,做一下总结。
以下内容有多处参考。
首先我们先根据不同的分类规则看看计算机中常见的几种分类
高级语言和低级语言
编译型,解释型,半编译半解释(根据转换器的不同,将高级语言分类)
动态类型和静态类型
强制类型和弱类型
面向对象型和面向过程型
标记语言
通过不同的分类我们来了解一下计算机语言
高级语言和低级语言
常见的低级语言有:机器码、汇编语言。
高级语言常见如:C,C++,JAVA,Python,PHP,C#,Ruby,go等。
高级语言与低级语言的区别: 高级语言大部分不能直接与硬件打交道,这使得程序运行速度降低,总之越接近人性化的语言就越高级。
机器码 : 计算机能够直接识别的二级制编码,无论语言多高级都要转成二级制文件来让计算机识别运行。
优点:执行速度最快。
缺点:最低级,最复杂,开发难度最大。
汇编语言: 汇编语言实质和机器语言相同,都是直接对硬件操作,只不过指令采用了英文缩写的助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址,在不同的设备中有着不同的指令集,更容易识别和记忆
优点:执行速度比较快。
缺点:比较低级,复杂,开发难度大。
高级语言: 为省去编程时候的不必要的操作细节,节省代码量,可读性强,维护性强,更贴近人性化。
将许多机器相关的指令合成单条指令,去掉了与具体操作有关但与完成工作无关的细节,大大简化了程序中的指令。高级语言不特定指某种语言,包括了多种编程语言,如C,C++,Java,Python,Matlab,Go,PHP等等。因为高级语言所编写的程序,不能直接被计算机所识别,必须通过转换器才能执行,所以根据转换器的不同,高级语言又分为编译型语言和解释型语言。
解释型, 编译型,半编译半解释
对于源程序,编译型语言在执行程序中会将源文件一次性的转化为机器码,而解释型语言是边编译边解释;编译型语言是离不开解释程序的,这也导致了解释性语言对于运行时候的速度比价慢,解释型语言只要有解释器,移植起来比较方便,而编译型语言则要对于不同的系统进行编译,是的工作繁琐,且在调试程序的时候比较慢。
而java是半编译半解释型的语言,java会将源文件在jVM中转化为字节码,即.class文件,在程序运行的时候转化为二进制文件。和C#中的.net有点区别,C#编译的成的.net目标代码,接近与二进制文件,可移植性没有java好,java是“一次编译,到处执行”,c#是“一次编码,到处编译”。
(一) 编译型语言: C,C++,Delphi等。在执行源文件之前,先把源代码编译成目标代码(机器语言),一劳永逸。首先把源代码编译成可执行程序,然后执行可执行程序的文件,运行过
优点:执行速度快。
缺点:跨平台性差,修改了源文件,需要重新编译再执行。不同操作系统调用底层的机器语言不同,需为不同系统生成不同的机器代码。
(二)解释型语言: Python,Ruby,PHP,JavaScript,Shell等。相当于随身携带一个翻译官,等同于现在的“同声翻译”。首先用户调用解释器,执行源代码文件。然后解释器把源代码文件边解释成机器语言,边给CPU执行。执行过程如图:
优点:天生跨平台;可随时修改,立即见效,改完源代码后,直接运行看结果。
缺点:依赖解释器,运行效率低,比编译型慢很多。
其中脚本语言就属于解释型语言,哈哈,终于要说到脚本语言了。
脚本语言
脚本语言又被称为扩建的语言,或者是动态语言,是一种编程语言,只在被调用时进行解释或编译。脚本语言是为了缩短传统的编写-编译-链接-运行过程而创建的计算机编程语言。
脚本语言是批处理文件的延伸,是一种纯文本保存的程序,一般来说的计算机脚本程序是确定的一系列控制计算机进行运算操作动作的组合,在其中可以实现一定的逻辑分支等。简单地说就是一条条的文字命令,这些文字命令是可以看到的,脚本程序在执行时,是由系统的一个解释器,将其一条条的翻译成机器可识别的指令,并按程序顺序执行。因为脚本在执行时多了一道翻译的过程,所以它比二进制程序执行效率要稍低一些。
特点
1. 脚本语言(JavaScript,VB,Python等)介于HTML和C,C++,Java,C#等编程语言之间。HTML通常用于格式化和链接文本。而编程语言通常用于向机器发出一系列复杂的指令。
2. 脚本语言与编程语言也有很多相似地方,其函数与编程语言比较相像一些,其也涉及到变量。与编程语言之间最大的区别是编程语言的语法和规则更为严格和复杂一些。
3. 脚本语言一般都是以文本形式存在,类似于一种命令。 举个例子说:如果建立了一个程序,叫aaa.exe,可以打开.aa为扩展名的文件,为.aa文件的编写指定了一套规则(语法),当别人编写了.aa文件后,自己的程序用这种规则来理解编写人的意图,并作出回应,那么,这一套规则就是脚本语言。.aa文件本身就是可执行文件,但是是通过aaa.exe解释执行,aaa.exe就是解释器。注:脚本语言一般都有相应的脚本引擎来解释执行。
4. 脚本语言的主要特征是:程序代码即是脚本程序,亦是最终可执行文件。脚本语言可分为独立型和嵌入型,独立型脚本语言在其执行时完全依赖于解释器,而嵌入型脚本语言通常在编程语言中(如C,C++,VB,Java等)被嵌入使用。
动态类型和静态类型
动态性语言是指在程序运行期间才给变量指定数据的类型,常见于Python和Ruby,而静态类型语言则恰好相反,在写程序代码的时候就要指定变量的类型,这种语言有:c,c++,java
强制类型与弱类型
我们知道C语言中,一个变量只能定义为一种类型,如float类型,那么它就只能是float类型而不能在不发生转化的情况下赋予int类型,这就是 强制类型 的具体体现,强类型语言无需计算机识别,可以快速运行。
而Python不是,Python中的变量可以任意的复制,而没有类型的界限。这就是弱类型
强制类型更严谨,更不容易出现错误,但弱类型的语言写起来更优雅,更舒畅
面向对象型和面向过程型
面向过程是决定该怎么铺成一条路到达终点,而面向对象是要用那些具有特定功能的像来做,两者是不同的思想。
C++是部部分面对对象的,JAVA具有封装性是完全面对对象的,C语言是面对过程的语言
标记语言(一般分三类:标示性的,过程性的,描述性的)
标记语言,是一种将文本及文本相关的其他信息结合起来,展现出关于文档结构和数据处理细节的电脑文字编码。与文本相关的其他信息(包括文本的结构和表示信息等)与原来的文本结合在一起,但是使用标记进行标识。标记语言不仅仅是一种语言,就像许多语言一样,他需要一个运行时环境,使其有用。提供运行时环境的元素称为用户代理。
如:HTML、XML、XHTML ( XML 和 HTML 的合体 )你会见到他们都是 “ml” 结尾的。
标记语言的存在用来被读取的,而其本身是没有行为能力的。在标记语言里你会看到很多 < 和 > 这些括号, 这些是用来写出 “层次” 和 “属性” 的。简言之,它是被动的。
通过这些对于计算机语言就有了更深的了解。