一.编译型语言与解释型语言

几种语言概念的联系与区分二.动态类型语言与静态类型语言 常见语言分类 三.强类型语言与弱类型语言 全部内容的总结
一.编译型语言与解释型语言
为了更好的对编译型语言和解释型语言进行理解和区分,我们先来了解一下他们的基本概念
计算机是不能理解高级语言的,更不能直接执行高级语言,它只能直接理解机器语言,所以使用任何高级语言编写的程序若想被计算机运行,都必须将其转换成计算机语言,也就是机器码 。而这种转换的方式有两种:
1.编译
2.解释
由此高级语言也分为编译型语言和解释型语言 。
百度百科上对于二者的定义如下:
编译型语言:
运行编译型语言是相对于解释型语言存在的,编译型语言的首先将源代码编译生成机器语言,再由机器运行机器码(二进制) 。像C/C++等都是编译型语言 。程序在执行之前需要一个专门的编译过程,把程序编译成 为机器语言的文件,运行时不需要重新翻译,直接使用编译的结果就行了 。程序执行效率高,依赖编译器,跨平台性差些 。如C、C++、等.
而相对的,解释性语言编写的程序不进行预先编译,以文本方式存储程序代码 。在发布程序时,看起来省了道编译工序 。但是,在运行程序的时候,解释性语言必须先解释再运行 。
解释型语言:
相对于编译型语言存在的,源代码不是直接翻译成机器语言,而是先翻译成中间代码,再由解释器对中间代码进行解释运行 。比如/ / Perl /Shell等都是解释型语言 。程序不需要编译,程序在运行时才翻译成机器语言,每执 行一次都要翻译一次 。因此效率比较低 。比如Basic语言,专门有一个解释器能够直接执行Basic程 序,每个语句都是执行的时候才翻译 。(在运行程序的时候才翻译,专门有一个解释器去进行翻译,每个语句都是执行的时候才翻译 。效率比较低,依赖解释器,跨 平台性好.)
这些说明读完后仍然不能让读者形成直观的印象 。实际上,对于有一定编程经验的人来说,这些区别早就体现在日常的编程经历中了 。C语言和作为使用率较高的编程语言,就可以很好的说明这些问题 。
回想一下C语言的编程过程我们知道,C语言在执行前一定要先编译一下,如果发现语法错误,就会发出编译不通过的提示 。而C语言就是一种编译型的编程语言 。而对于,我们写完代码之后是不是直接点执行就等待结果了,如果有那一句代码发生错误的话,程序就执行到那一句才会停下来报错,所以是一种一边执行一边解释的语言,解释是一句一句的翻译 。,从而不需要预先进行编译,所以称之为解释型语言 。
用流程图来说明就是:
这样二者的差异就很明显了 。
人类对于复杂的事物往往在给出不同体系的理论后试图去实现理论的统一,但往往不能如愿以偿 。作为语言来说,如果有一种语言能够拥有各种优点,它必然会在各种语言的百花齐放中脱颖而出,进而占据优势地位使其他语言消亡,事实上,现在解释型语言和编译型语言都有不错的发展,这就说明了一个问题,他们二者种的任何一个都有无法克服的相对缺点 。
实际上,编译性语言不如解释性语言跨平台性好,也就是说不同平台的兼容性有区别,所以才有了两种语言 。
编译性语言例如c语言:用c语言开发了程序后,需要通过编译器把程序编译成机器语言(即计算机识别的二进制文件,因为不同的操作系统计算机识别的二进制文件是不同的),所以c语言程序进行移植后,要重新编译 。(如编译成ext文件,linux编译成erp文件) 。