编译型与解释型编程语言的区别

前面我们知道了高级编程语言计算机是不能直接识别的,需要通过翻译成机器码然后交由计算机执行。

根据不同的翻译机制,又分为编译型和解释型。

注意,翻译源代码是一个非常复杂的过程,大致包括词法分析,语法分析,语义分析,性能优化,目标代码生成等五个步骤。在初学阶段没有必要研究这个,如果感兴趣可以阅读《编译原理》一书。

接下来我会使用通用的语言和类比的方式讲解编译和解释。

编译型

如果把高级编程语言编写的代码比作一篇英文文章,计算机比作一个不懂英文的人。那么,为了让这个人阅读这篇文章,可以找一名懂英文的翻译将这篇文章整体翻译成中文版。然后他就可以随时随地的阅读这篇翻译后的文章。

编译的过程其实跟上面翻译的过程很像。

编译型编程语言就是通过编译器(英文翻译)将源代码(编译型编程语言编写的程序,类比英文文章)编译(翻译)成可执行文件(翻译后的文章)。

1658829684074

可执行文件可以在任何支持的平台上,脱离编译环境运行。因为可执行程序就是机器码,所以它的执行效率高。但是编译型编程语言一般是不能跨平台的,也就是说不能在不同的操作系统间任意切换, 并且修改程序也非常不方便,只要源代码修改了,都需要重新编译生成新的可执行文件。C语言,C++就是典型的编译型编程语言。

解释型

接上面的类比,翻译这篇英文文章,还可以通过随身电子词典,逐字逐句的边看边翻译。

解释型编程语言就是通过解释器(电子词典)将源代码(解释型编程语言编写的程序)逐行解释成机器码,然后交由计算机执行。

1658904942703

解释型编程语言编写的程序离不开解释器,因为是边翻译边执行所以相对效率不高,但是修改起来非常方便,只要源代码修改了,下一次执行就是修改后的代码。解释型编程语言大都可以跨平台运行,这归功于解释器。Python,php就是典型的解释型编程语言。

关于Python

Python属于典型的解释型编程语言,支持所有常见的平台,例如Linux,Windows,Mac OS, Android, FreeBSD等等,只要在不同的平台上安装了对应的解释器,代码就可以正确运行,一般不需要担心任何兼容性问题,真正做到了"一次编写,到处运行"。

另外,关于执行效率,你可能会看到很多人说python的执行效率差。那只是相对而言,随着硬件性能的提升,和很多优化手段,python在某些时候执行效率甚至会超过c语言,所以忘记这个效率问题,全心全意的学习python吧。

总结

总结编译型编程语言与解释型语言的区别如下表:

类型 原理 优点 缺点
编译型语言 通过专门的编译器,将所有源代码一次性转换成特定平台(Windows、Linux 等)执行的机器码(以可执行文件的形式存在)。 一次编译,多次运行,脱离编译环境,并且运行效率高。 可移植性差,不够灵活。
解释型语言 由专门的解释器,根据需要将部分源代码临时转换成特定平台的机器码。 跨平台性好,通过不同的解释器,将相同的源代码解释成不同平台下的机器码。 一边执行一边转换,效率不搞。

上一章 下一章
零基础教程目录

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:编译型与解释型编程语言的区别 - Python技术站

(0)
上一篇 2023年4月2日
下一篇 2023年4月2日

相关文章

  • 环境变量如何设置?

    上一节我们讲到了环境变量PATH,那如何设置它的值呢? windows系统设置环境变量的步骤如下: 右键【我的电脑】-》【属性】-》【高级系统设置】-》【环境变量】 在用户环境变量中找到Path,如果没有就新建一个。然后双击,打开编辑页面。 左边是设置好的路径列表,右边是操作按钮,把你想要设置的路径添加进来即可。如果在安装python解释器时忘记了勾选最后一…

    2023年4月2日
    00
  • 基本数据类型概述

    思考,是上面的苹果堆好处理(运输,存储,加工)还是下面有包装的苹果好处理。 什么是数据类型 数据类型简单的理解,其实就是为了方便处理(传输,存储,运算)数据,对数据做的包装,不同的类型就是不同的包装。 编程语言通过一些复杂的计算机物理底层机制,创造了不同类型的数据,用来表示现实世界中的不同信息,以便于计算机更好的传输,存储和计算。 每一种编程语言都会预先定义…

    2023年4月2日
    00
  • python是什么?

    Python是荷兰人 Guido van Rossum (国内昵称龟叔)于1989年圣诞节期间开发出来的。 据龟叔的自述记载,Python语言是他在圣诞节期间为打发时间开发出来的。 选择Python作为该编程语言的名字,是取自英国20世纪70年代首播的电视剧《蒙提·派森的飞行马戏团》(Monty Python’s Flying Circus)。 ABC是龟叔…

    2023年4月2日
    00
  • 列表类型

    python中列表(list)用来表示有序可变元素的集合,元素可以是任意数据类型。列表是一种复合数据类型,它是容器结构,可以包含其他类型的数据,在开发过程中会大量应用。 列表的定义 列表由一对中括号进行定义,元素与元素之间使用逗号隔开。 空列表的定义 >>> a = [] >>> print(a, type(a)) [] …

    Python开发 2023年4月2日
    00
  • 类和对象

    类 前面我讲到基本数据类型用来表示最常见的信息,但信息有无穷多种,为了更好的表达信息,我们可以创建自定义的数据类型。 一种数据类型就是一个类。例如整数,浮点数,字符串等。 类的定义 python中通过关键字class可以定义一个自定义的数据类型,基本语法如下: class 类名: 属性 方法 注意:python中类名规则同变量名,但是一般使用大驼峰来表示。 …

    Python开发 2023年4月2日
    00
  • 变量的定义和使用

    在编程语言中变量是指能够存储和表示数据的抽象概念,可以理解为一个存放数据的容器。通过变量名可以访问变量中的值。 变量的定义 定义变量就是将数据放入变量,这个过程叫做赋值。几乎所有编程语言都是使用等号=作为赋值运算符,语法格式如下: >>> name = value name表示变量名,value表示值。表示将value赋值给name。 例如…

    Python开发 2023年4月2日
    00
  • 如何运行python程序

    python程序的运行方式有两种: 1. 交互式 在命令行窗口输入命令 python 进入python解释器交互式客户端,在窗口输入任意python代码,客户端窗口都会立即返回运行结果。 当关闭客户端窗口后,代码不会保存。这种交互式方式一般用来进行测试,不是正式的运行方式。 2. 脚本式 按照惯例学习每一门编程语言的第一个程序都是打印’hello world…

    2023年4月2日
    00
  • 字符串格式化

    在编写程序中经常需要动态输出字符串。例如,我们通过程序计算计算机的内存利用率,然后输出 10:15 计算机的内存利用率为30% 其中下划线部分的内容会动态调整,需要根据执行结果进行填充,最终形成上述格式的字符串输出。 这种功能就需要使用到字符串格式化操作,python中支持三种形式的字符串格式化: % 字符串格式化 format方法字符串格式化 f表达式 %…

    Python开发 2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部