当前位置:首页 > 教育培训 >

c语言是解释性语言吗(c语言是一种解释性语言吗?)

来源:原点资讯(www.yd166.com)时间:2023-06-25 23:18:32作者:YD166手机阅读>>

很多初学者学了几门编程语言,但是并不清楚这些编程语言到底是编译型语言还是解释型语言。

c语言是解释性语言吗,c语言是一种解释性语言吗?(1)

什么是解释?什么是编译?

如你学过C语言你就会知道,C语言在执行前一定要先编译一下,如果发现语法错误,一定编译不通过。

C语言编译器首先要将你编写的代码编译成可执行文件,比如在Windows系统上首先要编译生成一个.exe的文件,然后才可以执行。

而解释型语言就是,解释一条执行一条,比如JAVA语言就是这样,如果有一句代码发生错误的话,程序就执行到那一句才会停下来报错,边解释边执行的语言,解释就是一句一句的翻译。

如下图所示,编译型语言就是先从源程序转换成机器指令,然后再由机器运行,而解释型语言就是逐条读取,逐条执行。

c语言是解释性语言吗,c语言是一种解释性语言吗?(2)

为什么会有这两种类型的编程语言?

我认为主要是为了解决跨平台性的问题,一般编译型语言跨平台性都不好,比如C语言在不同的操作系统下需要使用不同的编译工具进行编译,编译出来的机器代码是不同的。

所以C语言程序进行移植后,需要重新编译。

而解释型语言就不一样,比如JAVA,JAVA程序首先通过编译器编译成class字节码文件,也就是二进制文件。

使用过命令行操作的朋友知道这部通过Javac进行编译。这个字节码文件与平台无关。

如果在Windows平台上运行,则通过Windows平台上的Java虚拟机(VM)进行解释。

如果运行在Linux平台上,则通过Linux平台上的Java虚拟机进行解释执行。

所以说能跨平台,前提是平台上必须要有相匹配的Java虚拟机,如果没有java虚拟机,则不能进行跨平台。

简单来说,就是Java程序的跨平台是因为Java虚拟机跨平台,所以它可以跨平台。

c语言是解释性语言吗,c语言是一种解释性语言吗?(3)

你会发现如果你要运行Java程序首先要安装Java虚拟机,其实就是JDK,JDK里面包含了jvm,没有JVM你是无法执行Java语言编写的软件的。

c语言是解释性语言吗,c语言是一种解释性语言吗?(4)

把字节码文件通过类加载器加载进JVM中,然后进行字节码的校验,没有问题就通过解析器把字节码翻译成当前机器能识别的机器码,然后交给操作系统去进行调度执行。

虽然字节码文件与平台无关,但是特定平台的机器只能执行其对应的机器码。那么就需要有一个中间件来把字节码翻译成对应的平台机器码,这个就是解析器,而解析器其实就是JVM里面的一个组件。

JVM的执行流程:

1、JVM使用类加载器(Class Loader)装载 class (二进制)文件

2、字节码效验(主要做以下五步)

(1)检查当前class文件的版本和JVM的版本是否兼容

(2)检查当前代码是会破坏系统的完整性

(3)检查当前代码是否有栈溢出的情况

(4)检查当前代码中的参数类型是否正确

(5)检查当前代码中的类型转换操作是否正确

3、把通过校验的字节码解析成机器码,解析器是一句一句进行代码进行解析的。

同样Pyhton也是一种解释型语言,它的原理和Java类似,只不过Pyhton代码是先编译成pyc文件也就是二进制文件同样也是跨平台的,然后再由Pyhton虚拟机解释执行。

其实解释型语言的编译(compile)不是一个强制的操作。事实上,编译是一个自动的过程。多数情况下,你甚至感觉不到它的存在。

这就是为什么解释型语言性能没有编译型语言的好,原因就是因为虚拟机的存在,中间隔了一层,自然就慢了。

本来像C语言那样可以直接由操作系统运行,而Java和Pyhton语言要先由操作系统运行虚拟机,然后再由虚拟机运行对于的Java和Pyhton程序,自然而然运行速度就慢,需要的内存也比较高。

c语言是解释性语言吗,c语言是一种解释性语言吗?(5)

总结来说就是,编译型语言有它的优点,也有它的缺点,优点就是运行快,内存小,缺点就是跨平台性差。

解释型语言刚好和编译型语言相反,优点是跨平台性好,缺点是相对于编译型语言来说运行慢,内存大。

c语言是解释性语言吗,c语言是一种解释性语言吗?(6)

欢迎关注我,学习更多计算机知识!

栏目热文

c语言算高级语言么(c语言是高级语言吗)

c语言算高级语言么(c语言是高级语言吗)

C语言是 20 世纪 70 年代初 Dennis Ritchie 在美国AT&T贝尔实验室(AT&T ...

2023-06-25 23:18:44查看全文 >>

c语言和高级语言有啥区别(c语言是汇编语言还是高级语言)

c语言和高级语言有啥区别(c语言是汇编语言还是高级语言)

世界上大约有几百种编程语言。但是,平时被更多开发人员使用的大约只有 20多种。在这20多种编程语言中,有些人可能需要学会...

2023-06-25 22:49:02查看全文 >>

c语言是底层语言吗(c语言底层是什么语言)

c语言是底层语言吗(c语言底层是什么语言)

作为一名10余年开发经验的程序员老兵,细细回想,每每人生转折都能遇到小甲鱼老师的帮助,在讲我和小甲鱼老师的三段“奇遇”前...

2023-06-25 22:50:06查看全文 >>

c语言是一种高级语言吗(c+语言是高级语言吗)

c语言是一种高级语言吗(c+语言是高级语言吗)

c语言出现早,比C 早,比Java,Python早更多,属于老爷爷级的语言。爷爷级别语言在2021年4月份世界编程语言...

2023-06-25 23:11:04查看全文 >>

c语言是计算机的高级语言吗(c语言是计算机的什么语言)

c语言是计算机的高级语言吗(c语言是计算机的什么语言)

C语言与计算机软件的关系当下的时代数据与信息极为丰富繁荣,其中计算机有着功不可没的巨大功劳。尤其是计算机的软件更是百花齐...

2023-06-25 23:09:08查看全文 >>

重庆电视台涂磊主持的是什么节目(重庆电视台涂磊的节目时间)

重庆电视台涂磊主持的是什么节目(重庆电视台涂磊的节目时间)

在阅读此文之前,辛苦您点击一下“关注”,既方便您进行讨论和分享,又能给您带来不一样的参与感,感谢您的支持!文|美妙的探所...

2023-06-25 23:12:57查看全文 >>

涂磊主持重庆市台的节目有哪些(涂磊在重庆主持的什么节目)

涂磊主持重庆市台的节目有哪些(涂磊在重庆主持的什么节目)

作者 l 魏春亮来源 l 亮见(ID:liangjian0624)这是一个让我哭到崩溃的故事,一个看一遍就哭一遍的故事。...

2023-06-25 22:43:47查看全文 >>

重庆卫视涂磊最新的节目(最新一期重庆卫视涂磊节目)

重庆卫视涂磊最新的节目(最新一期重庆卫视涂磊节目)

本报记者 王平直播南阳讯 “南阳月季,誉满华夏,你把那吉祥传达,你把那幸福播撒……”7月20日,在重庆卫视《谢谢你来了》...

2023-06-25 23:13:01查看全文 >>

涂磊在重庆台主持什么节目(涂磊在重庆卫视的节目叫什么)

涂磊在重庆台主持什么节目(涂磊在重庆卫视的节目叫什么)

引言有一句话说得好,“喜欢是放纵,爱则是克制”。在爱情生活中,许多人会陷入到狂热的情感中,难以自拔。可是当爱情的狂热结束...

2023-06-25 22:45:14查看全文 >>

涂磊是住重庆吗(涂磊在重庆干了几年)

涂磊是住重庆吗(涂磊在重庆干了几年)

1月25号一早,涂磊就于视频账号上分享了一则悲痛消息。97岁的外婆不幸于前天上午去世(大年初二),目前正在举行追悼会,完...

2023-06-25 23:17:32查看全文 >>

文档排行