一、编译型语言VS解释型语言
A. 编译性语言(源代码代码—>机器语言)
a) 只须编译一次就可以把源代码编译成机器语言,后面的执行无须重新编译,直接使用之前的编译结果就可以;因此其执行的效率比较高;
b) 编译性语言代表:C、C++、Pascal/Object Pascal(Delphi);
c) 程序执行效率比较高,但比较依赖编译器,因此跨平台性差一些;
B. 解释性语言(源代码—>中间代码—>机器语言)
a) 源代码不能直接翻译成机器语言,而是先翻译成中间代码,再由解释器对中间代码进行解释运行;
b) 程序不需要编译,程序在运行时才翻译成机器语言,每执行一次都要翻译一次;
c) 解释性语言代表:Python、JavaScript、Shell、Ruby、MATLAB等;
d) 运行效率一般相对比较低,依赖解释器,跨平台性好;
总:编译型语言运行效率高、跨平台性差;解释型语言运行效率较低、跨平台性好。
二、动态类型语言VS静态类型语言
A. 动态类型语言
a) 程序在运行时可以改变其结构,新的函数可以被引进,已有的函数可以被删除等在结构上的变化;
b) 一般在变量使用之前不需要声明变量类型,而变量的类型通常是由被赋的值的类型决定;
c) 动态类型语言代表:ECMAScript(JavaScript)、Ruby、Python、php等。
B. 静态类型语言
a) 在编译时,便需要确定类型的语言。即写程序时需要明确声明变量类型
b) 静态类型语言代表:C/C++、Java、C#等。
总:动态类型语言函数、变量在编译可以直接加入、删除;而静态类型语言则需要事先明确的声明。
三、强类型语言VS弱类型语言
A. 强类型语言(也称强类型定义语言)
a) 一种总是强制类型定义的语言,要求变量的使用要严格符合定义,所有变量都必须先定义后使用。
b) 一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。
c) 强类型语言代表:java、.NET、C++等。
B. 弱类型语言(也称为弱类型定义语言)
a) 一种类型可以被忽略的语言,一个变量可以赋不同数据类型的值。
b) 例如:在VBScript中,可以将字符串‘12’和整数3进行连接得到字符串‘123’,然后可以把它看成整数123,而不需要显示转换。但其实它们的类型没有改变,VB只是在判断出一个表达式含有不同类型的变量之后,自动在这些变量前加了一个clong()或(int)()这样的转换函数而已。
c) 弱类型语言代表:vb,php等。
总:强类型语言改变变量的数据类型必须经过强制转换,而弱类型语言会判断自动转换数据类型,但其本身类型并没有改变。
面向对象程序设计1——概念区分
最新推荐文章于 2023-06-25 09:35:46 发布