PHP程序员@IT·互联网

编译型语言和解释型语言区别之我见

2017-03-27  本文已影响120人  acd8eef1b5d7

但凡学习编程,总会碰到这个看似清晰实质又模糊的概念:编译型&解释型。

那么到底什么是编译型语言,什么是解释型语言呢?他们之间有什么共同点和区别呢?

下面我从自身的体会去理解和分析一下,希望能对学编程的后来人能起到“抛砖引玉”之效。

编译型语言代表有:C语言,C++

解释型语言代表有:js,php

-----------------------------------共同点-----------------------------------

都要弄成二进制代码,才能执行。

两类编程语言,你手写的源代码 都是那些if,else之类的英文单词,计算机并不认识这些单词,所以都会要转化成二进制才能运行。

区别就在于“转化的方式”。

-----------------------------------区别-----------------------------------

区别1:从效果上来比

编译型语言要全部写完之后,然后通过某个编译器,去生成一个类似*.exe的二进制文件,然后手工双击这个文件才看的到效果;

解释型语言则没生成你看的到的那种.exe文件,而是直接发出效果。

那么区别之一就是:是否显性的生成二进制文件供你去双击。

区别2:运行的时候是否需要编译器

编译型语言运行的是最终的二进制代码了,所以不在需要编译器在身边守护。

但解释型语言则不然,它是边解释、边运行,所以运行的时候很可能还有部分代码没有解释好,所以需要编译器守护(解释型语言把该工具叫:解释器)。那么编译器在哪里?就在浏览器里,所以你要看html效果,必须是用浏览器这种工具,或者有编译工具在内的其他工具,如:模拟浏览器的工具。

区别3:执行速度对比

编译型语言由于运行的已经是完全的二进制内容了,所以运行起来很干净利落,自然速度快。

但解释型语言,运行的不一定是完全的二进制内容,因为它是边解释(成二进制),边运行。所以当它执行看出效果的时候,程序后半部分还不一定解释成二进制呢。所以它是“三心二意”的做事,速度没有前者快,但是CPU的运行速度如果很快,你可能看不出来,偶尔会看到“有点卡”的效果。原因就是:它边解释、边运行,你看到效果了,可能还有一少半的代码没解释成二进制呢,所以你看到的效果会是残缺的,这就是为什么查看网页的时候,很容易就看到这样的情况:先是出现一堆没有布局的文字,然后才出现那种布局好的效果。

区别4:可移植性对比

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

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

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

区别5:升级上对比

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

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

区别6:应用领域

编译型语言应用领域通常是那些安装软件,如:桌面上的那种安装软件;

解释型的语言的应用领域通常是:互联网,网站等,那种刷新了一下就可以看到最新效果的领域。

-----------------------------------实现原理-----------------------------------

实现原理,简单来说就是:是不是做成了“实时采集”;

编译型语言没有做“实时采集”。它选择了一次性解决问题,表现为:先弄出完整的二进制代码之后,再让用户去执行该二进制代码,这样省事、省力、省心。但造成可移植性差、升级麻烦的后果。

解释型语言,采用了“实时采集”的措施,做成“边解释、边运行”。但这样带来的直接弊端就是:边走边看,因此速度自然要慢一些。不过现在的CPU、内存等硬件能力都很强大,这个方面的影响可以忽略。而它带来的非常便捷的升级,让它更显示出独特的魅力。所以它在移动互联网的领域,在只要刷新一下就可以看到最新效果的领域,是独一无二的霸主。

结论:二者都是客观事物,各有优势和劣势,没有绝对的正确和错误之分,所以学习者也要客观的认识。


宁哥简介

接触编程10年多;

接触PHP长达8年多;

自硕士毕业后

抵制多个公司的高薪诱惑毅然选择闭关修炼PHP,

目的是构建出真正属于自己的完整的PHP知识体系;

写过的PHP小程序不计其数(也写过html,css,js,jquery等程序),功能模块涵盖诸多;

PHP学习经验笔记1G(记事本格式来算)......

上一篇下一篇

猜你喜欢

热点阅读