foreach和while的区别(编译之后)_一文了解解释型语言和编译型语言之区别

本文探讨了解释型语言和编译型语言的概念,通过C语言和MATLAB的例子说明其差异。解释型语言如JavaScript、PHP在运行时逐行解释,而编译型语言如C++则需要预先编译成二进制。文章讨论了两种语言的运行速度、可移植性、升级方式和应用场景,并指出它们各有优劣。
摘要由CSDN通过智能技术生成

引言

我们学了这么久的编程,做了那么多的项目,但总有那么一些概念即模糊又清晰,比如我们今天要细谈的解释型语言和编译型语言。

何谓解释?何谓编译?

这一切要从我们学习C语言的时候开始。

06ccbe4eadbb924748dee4685296980a.png

所有学过C语言的同学都清楚,C语言在执行前一定要先编译一下,如果发现语法错误,就会发出编译不通过的提示。而C语言就是一种编译型的编程语言,那什么又是解释型的语言呢?

这又要从我们学习MATLAB说起,话说呀,我们写完MATLAB代码之后是不是直接点执行就等待结果了,如果有那一句代码发生错误的话,程序就执行到那一句才会停下来报错,所以MATLAB是一种一边执行一边解释的语言,解释是一句一句的翻译。,从而不需要预先进行编译,所以称之为解释型语言。

a14b94eead5bd935003c32564072756b.png

说以上两个例子,只是给大家一个很好的概念去快速理解什么是编译以及解释。但是我们还有一个话题就是:

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

人们搞这两个东西有什么好处呢?

我想最主要的因素就是:编译性语言不如解释性语言跨平台性好,也就是说不同平台的兼容性有区别,所以才有了两种语言。

编译性语言例如c语言:用c语言开发了程序后,需要通过编译器把程序编译成机器语言(即计算机识别的二进制文件,因为不同的操作系统计算机识别的二进制文件是不同的),所以c语言程序进行移植后,要重新编译。(如windows编译成ext文件,linux编译成erp文件)。

解释性语言例如java语言,java程序首先通过编译器编译成class文件,如果在windows平台上运行,则通过windows平台上的java虚拟机(VM)进行解释。如果运行在linux平台上,则通过linux平台上的java虚拟机进行解释执行。所以说能跨平台,前提是平台上必须要有相匹配的java虚拟机。如果没有java虚拟机,则不能进行跨平台。

这个原因说明白了之后,我们来看看两种语言有哪些代表呢?

编译型语言代表有:C语言和C++。

解释型语言代表有:js,php,MATLAB,java和javascript。

编译型与解释型的共同点

他们都要弄成二进制代码才能执行,两类编程语言的源代码都是英文,但是我们的计算机并不认识英文,所以都要转化成二进制才能执行。区别就在于“转化的方式”不一样,请见下文分析。

编译型与解释型的不同点

1.从运行效果上来看。编译型语言要等全部写完后通过编译器去生成一个类似*.exe的二进制文件,然后双击这个文件才可以看到效果。

而解释型语言并没生成*.exe文件,而是直接生成效果,这就是我之前提到的的那个C语言和MATLAB的例子。

2.运行的时候是否需要编译器的伴随。编译型语言运行的是最终生成的二进制代码,所以不需要编译器伴随。

而解释型语言则一边解释一边运行,所以运行的时候很可能还有部分代码没有解释好,所以需要编译器伴随(解释型语言把该工具叫做解释器)。

有人会问编译器(解释器)在哪里呢?

举个例子,网页的解释器就在浏览器中,所以要看HTML的效果必须用浏览器或者有编译工具在内的其他工具打开,比如:模拟浏览器的工具。

3.执行的速度对比。编译型语言运行的已经是完全的二进制内容,运行起来十分干净利落,所以速度很快。

而解释型语言运行的不一定是完全的二进制内容,因为它是一边解释成二进制一边运行。

所以当它执行看出效果的时,程序后半部分还不一定解释成二进制,它就像一个“三心二意”的男人。所以像那种三心二意的男人说话有时吞吞吐吐的,速度没有前者快,但是CPU的运行速度如果很快,可能看不出来,只是偶尔会看到“有点卡”的效果。

原因就是它一边解释一边运行,你看到效果的后面可能还有一少半的代码没解释成二进制,所以看到的效果会是残缺的。这就是为什么有时候查看网页,先是出现一堆没有布局的文字,然后才出现那种布局好的效果。

4.可移植性对比。编译型语言是运行二进制内容,所以一旦CPU指令系统改变,那么之前的二进制文件可能运行不了。比如,如果到其他硬件平台上运行,就可能出现错误,就需要根据该平台重新编译出新的二进制文件。所以可移植性、平台兼容性比价差。

而解释型语言则没有弄成什么二进制内容,而是在需要的时候才开始编译、运行。所以它自然具有可移植性,即在任何平台都可以马上运行起来。

要注意的是它的解释工具如:浏览器,本身就是编译型语言解释出来的二进制代码,所以浏览器本身不具备可移植性,是需要针对不同的平台弄出对应的浏览器最终二进制文件的,这里可别混淆。

5.升级上对比。编译型语言弄出来的二进制文件若要升级,自然要重新下载一个新的二进制文件。所以重新下载、安装、覆盖是最大的特点。比如微信的升级,就是要重新下载、重新安装、重新覆盖,等个半天而且很耗费CPU资源,体验性就不大好。

而解释型的语言只要重新写好源代码即可,用户想要最新的效果,只要刷新一下即可,所以体验性好。比如:某网站平台升级了,用户只要重新刷新一下。

6.应用领域,编译型语言应用领域通常是那些安装软件,例如桌面上的安装软件。解释型的语言的应用领域通常是互联网、网站等那种刷新了一下就可以看到最新效果的领域。

结论

两类编程语言都各有优势和劣势,无绝对的正确和错误之分,大家仁者见仁智者见智。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值