程序语言变形记

随着科技的发展我们生活中接触到的应用程序越来越多,它给我们的生活带来了很大的便利。移动端安卓,苹果大肆横行;pc上QQ,浏览器大行天下。我们在享受这些软件给我们带来的便利同时有没有考虑过这些软件在程序员手里是怎么从代码变成我们现在用的各种便利的应用程序的。这里小编为大家揭秘一下。

程序语言的分类

现在的程序语言用的比较多的大概有20多种,这些语言按照处理过程的不同大概分为两类:

编译型语言:

编译型语言是相对于解释型语言存在的,编译型语言的首先将源代码编译生成机器语言,再由机器运行机器码(二进制)。像C/C++/objective c等都是编译型语言。程序在执行之前需要一个专门的编译过程,把程序编译成为机器语言的文件,运行时不需要重新翻译,直接使用编译的结果就行了。程序执行效率高,依赖编译器,跨平台性差些。如C、C++、Delphi等。

解释型语言:

解释性语言编写的程序不进行预先编译,以文本方式存储程序代码。在发布程序时,看起来省了道编译工序。但是,在运行程序的时候,解释性语言必须先解释再运行。比如解释性Basic语言,其专用的解释器在执行Basic程序时,会逐条读取解释每个语句,这个其实就是一个编译过程,然后再执行。一般来说,现有的解释性语言都是采用的逐行解释一句,执行一句这样的方式来构建的。这样解释性语言每执行一次就要翻译一次,效率比较低。

编译型语言变形过程

编译型语言最典型的代表莫过于C语言,我们就以C语言为例来讲述编译型语言的变形过程。

第一步进行预处理:在这个阶段处理的主要是宏定义,文件包含,条件编译,将本程序用到的所有文件包含进来,进行宏展开操作,确定程序的那些部分需要进行编译。就像做菜似的将所有的原材料在本阶段准备好。

第二步进行编译操作:在这个阶段开始检查程序中的语法错误,是否按照语言的语法进行书写,检查程序中是否有非法的字符,根据机器的体系结构来生成不同的汇编代码。就像做菜中摘菜似的将不好的部分剔除,按照我们的口味确定料理方案。

第三步是汇编操作:开始对这些原材料按照步骤进行加工,生成我们的目标代码.。基本到这步我们 的菜就出炉了。

第四步是链接操作:这步的作用就是将我们每个文件生成的目标代码组成在一起生成我们最终的应用程序。比作做菜就是将我们做的各种菜拼成一个席供大家享用。

解释型语言变形过程

解释型语言最具代表的就是HTML,我们以它为代表对解释型语言的变形过程进行讲述平常我们上网浏览的网页,这些网页就是用html语言写成了。我们在一个文本文件里面按照html语言的语法进行书写,然后用浏览器打开就可以查看效果,它的过程就是浏览器按照html语言的语法对各个标签进行解析来生成我们想要的效果。所以解释型语言变形的过程很快,依赖解释器就可以立即展现效果。

原文发布于微信公众号 - 程序员互动联盟(coder_online)

原文发表时间:2015-07-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏HTML5学堂

一步步教你弹性框架-上篇

HTML5学堂:本系列主要在于跟大家分享弹性运动框架的制作方式。弹性运动框架的运动方式类似于弹簧,有一种回弹的效果,在网站中的一些特效当中还是有一些应用的。实现...

3428
来自专栏老司机的简书

CoreText实现图文混排之尺寸估算及文本选择

回头看看,距离CoreText系列首发过去一年也多了,看到第一篇文章即将超越1.3W的点击量老司机也是压力越来越大,毕竟作为瞎逼逼杰出代表的老司机偶尔也要正经一...

492
来自专栏HT

基于 HTML5 WebGL 的 3D “弹力”布局

分子力(molecular force),又称分子间作用力、范得瓦耳斯力,是指分子间的相互作用。当二分子相距较远时,主要表现为吸引力,这种力主要来源于一个分子被...

1839
来自专栏FSociety

Python爬取京东Iphone X用户评论并绘制词云

目前京东商城只会展示商品的前100页评论,所以我们能爬取到的评论只有1000条。 不过如果区分下好/差/中评分别爬取的话,理论上应该能保存3000条评论。

744
来自专栏诸葛青云的专栏

利用c语言制作简易计算器

学了c语言之后,总想着能用c语言能制作一些简单的小工具来。而利用c语言来制作一款简易的计算器是一个不错的选择,用这款计算器可以计算的加、减、乘、除。

961
来自专栏抠抠空间

python模块之PIL模块(生成随机验证码图片)

PIL简介 什么是PIL PIL:是Python Image Library的缩写,图像处理的模块。主要的类包括Image,ImageFont,ImageDra...

4409
来自专栏hanlp学习笔记

Hanlp使用Bug记录

最近一直比较忙,好多私信也没时间回复。以后要完全从CV转NLP,所以博客内容可能要作调整了。

590
来自专栏Coco的专栏

谈谈一些有趣的CSS题目(九)-- 巧妙的实现 CSS 斜线

1233
来自专栏IMWeb前端团队

html写法对gzip压缩率的影响

前几天在群里看到小杜分享一篇文章,《html写法对gzip压缩率的影响》,为此我也对这点分析了一下。 不知道大家有没有看过这文章,作者是来自微博懒懒交流会,其内...

20210
来自专栏Golang语言社区

从零到 Go:Google感恩节火鸡涂鸦开发纪实

文是 Google 搜索团队软件工程师 Reinaldo Aguiar 发表在 Go 语言博客的客座文章,他分享了在一天之内完成首款 Go 程序的开发并发布给数...

3208

扫码关注云+社区