admin 管理员组

文章数量: 887021

编译语言

1.编译型语言和解释性语言

编译型语言

使用专门的编译器,针对特定的平台,将高级语言源代码一次性的编译成可被该平台硬件执行的机器码,并包装成该平台所能识别的可执行性程序的格式。

特点

在编译型语言写的程序执行之前,需要一个专门的编译过程,把源代码编译成机器语言的文件,如exe格式的文件,以后要再运行时,直接使用编译结果即可,如直接运行exe文件。因为只需编译一次,以后运行时不需要编译,所以编译型语言执行效率高。

总结

1.一次性的编译成平台相关的机器语言文件,运行时脱离开发环境,运行效率高;

2.与特定平台相关,一般无法移植到其他平台;

3.现有的C、C++、Objective等都属于编译型语言。

解释型语言

使用专门的解释器对源程序逐行解释成特定平台的机器码并立即执行。

特点

源代码不能直接翻译成机器语言,而是先翻译成中间代码,再由解释器对中间代码进行解释运行,所以只要某一平台提供了相应的解释器即可运行该程序。

总结

1.解释型语言每次运行都需要将源代码解释称机器码并执行,效率较低;

2.只要平台提供相应的解释器,就可以运行源代码,所以可以方便源程序移植;

3.Python等属于解释型语言。

比较

1)一般编译性语言的运行效率比解释性语言更高;但是不能一概而论,部分解释性语言的解释器通过在运行时动态优化代码,甚至能使解释性语言的性能超过编译性语言;
2)编译性语言的跨平台特性比解释性语言差一些;

编程语言分类

动态类型语言与静态类型语言

静态语言是在编译时 变量的数据类型即可确定的语言,多数静态语言要求在使用变量之前必须声明数据类型,如Java、C#、C++等。这里的主要优点是编译器可以进行各种检查,因此很早就发现了很多微不足道的错误。
动态语言是在运行时确定数据类型的语言。变量使用之前不需要类型声明,通常变量的类型是被赋值的那个值的类型。如果类型与运行时间值相关联,则语言是动态类型的,而不是命名变量/字段/等。这意味着你作为一个程序员可以写得更快一点,因为你不必每次指定类型(

强类型和弱类型

强类型语言强制数据类型定义的语言。也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。举个例子:如果你定义了一个整型变量a,那么程序根本不可能将a当作字符串类型处理。强类型定义语言是类型安全的语言。

弱类型语言数据类型可以被忽略的语言。它与强类型定义语言相反, 一个变量可以赋不同数据类型的值。强类型定义语言在速度上可能略逊色于弱类型定义语言,但是强类型定义语言带来的严谨性能够有效的避免许多错误。

本文标签: 编译语言