关于编程语言的类型,之前或许了解过,但是知道的也不太具体,所以今天专门拿出来整理一下。
一. 按照编译/解释划分
1.编译型的编程语言(C,C++等)
编译型,我了解的是,能通过编译器在制定平台将源代码直接编译为计算机读得懂的语言,因为计算机再未对高级语言进行转换之前(转换为汇编和机器语言)。只能通过虚拟机等对高级语言进行编译或者解释,无法直接通过高级语言操作电脑。
优点:因为可以直接高级编程语言翻译为机器语言,所以效率较高。
缺点:针对指定平台以及不同的系统等,所以编译后的程序不能移植。
2.解释性的编程语言(Ruby,JavaScript等)
解释型,无法将源代码直接转换成为机器能够识别的语言,整个过程无需编译,而是先将代码翻译为中间代码,再通过解释器进行运行中间代码。
优点:程序可移植性较高,因为是通过解释器来运行中间代码,所以只有所处环境有此种解释器,那么就可以运行。
缺点:效率不高,每次程序运行的时候,解释器都会对代码进行一次翻译,所以极大的影响运行效率。
3.混合型的变编程语言—JAVA
说到这种类型的编程语言,就需要说到java,因为根据java的运行机制,确实是混合了上面两种类型。
1) 对于刚写好的java源文件,先使用编译器将java源文件编译为与平台(操作系统以及硬件)无关的.class文件
2) 通过java的虚拟机将.class文件进行解释以及运行。
java 的运行过程中,不但使用到了编译过程,还使用到了解释过程,所以认为java是一个混合类型的高级编程语言也可以(当然你也可以认为它是一个解释型的,毕竟最终的运行依靠的依然是JVM对.class文件的加载解释)。
优点:具有很好的平台移植性。
缺点:需要在系统上安装java运行所需要的虚拟机以及编译器,否则无法实现编译以及运行
二. 按照数据类型 强/弱划分
1) 强类型,指的是,强制数据类型定义的语,变量或常量一旦被定义,除非经过强制转化,那么它就一直是该种数据类型,比如java。
2) 弱类型则是一个变量可以在不同的环境中充当不同的数据类型,比如JavaScript。
三.按照语言的动/静态划分
1) 动态语言:只有在运行阶段才会去检查数据的类型,具体的数据类型根据第一次赋的值来决定,比如python,Ruby。
2) 静态语言:在编译期间就会检查你数据的类型,所以需要在编译前就指定好数据的类型,比如C,JAVA。