day02-2编程语言介绍

发布时间 2023-11-23 17:22:47作者: 桃源氏

编程语言的分类

【1】机器语言

(1)什么是机器语言

  • 机器语言就是计算机可以理解的语言,我们可以直接通过机器语言操作我们的硬件
  • 因为计算机是基于电工作,电有高低频之分,高频就是0低频就是1
  • 计算机能理解的就是二进制语言就是机器语言
  • 所以机器语言就是直接使用二进制编程
    • 01010101

(2)什么是机器指令

  • 机器指令就是二进制代码0 和 1 的描述,直接控制计算机硬件

(3)如何通过书写机器指令编写程序

  • 学习机器语言就要记住计算机的全部代码以及指令代码的含义
  • 编写机器指令的时候,错一位整个程序就崩溃了

(4)机器语言的优缺点

1.优点

  • 执行效率高
    • 编写的程序可以直接被计算机无障碍、直接运行,执行效率高

2.缺点

  • 开发效率最低

    • 复杂,开发效率低
  • 跨平台性差

    • 贴近/依赖具体的硬件,跨平台性差
  • 学习成本大

    • 编出的程序都是0/1代码,数量多还易出错
    • 同时还要理解原码、反码、补码、位运算( & | )等一系列相关的专业知识

【2】汇编语言

(1)什么是汇编语言

  • 汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。

(2)汇编语言的优缺点

1.优点

  • 执行效率高:相对于机器语言,使用英文标签编写程序较为简单,执行效率高。
  • 操作灵活:能够完成一些高级语言难以实现的操作。
  • 可执行文件小:生成的可执行文件相对较小,执行速度快。

2.缺点

  • 开发效率低:仍然直接操作硬件,开发效率仍较低。
  • 复杂度高:源程序冗长、复杂,容易出错。
  • 跨平台性差:与机器语言一样,依赖具体硬件,跨平台性差。

【3】高级语言

(1)什么是高级语言

  • 人类的字符是在向操作系统发送指令,而非直接操作硬件,所以高级语言是与操作系统打交道的语言

  • 此处的高级是指高层,开发者无需考虑硬件细节

  • 但正因为高级语言离硬件较远,更贴近人类语言,执行效率相对较低。

    • 人类可以理解,而计算机则需要通过翻译才能理解,所以执行效率会低于低级语言。

(2)高级语言的分类

  • 按照翻译方式的不同,高级语言又被分为:
    • 编译型语言
      • C、C++、C#、JAVA
    • 解释型语言
      • Python、Go、PHP

(3)什么是编译型语言

1.编译型

  • 编译型语言将整篇源程序一次性翻译成目标代码,然后生成可执行文件。
  • 修改源代码后,需要重新编译整个程序。虽然执行效率较高,但开发效率相对较低,跨平台性也较差。

2.类比

  • 编译型语言就像是你拿到一篇文章,不是逐段翻译,而是交给翻译软件,整篇文章进行翻译
    • 如果中间某段话出错被修改,再次拿到文章也是进行整段文章翻译

3.优点

  • 执行效率高
    • 编译是指在应用源程序执行之前,就将程序源代码“翻译”成目标代码(即机器语言)
    • 因此其目标程序可以脱离其语言环境独立执行,使用比较方便,执行效率较高。

4.缺点

  • 开发效率低
    • 应用程序一旦需要修改,必须先修改源代码,然后重新编译、生成新的目标文件才能执行
    • 而在只有目标文件而没有源代码,修改会很不方便。
    • 所以开发效率低于解释型
  • 跨平台性差
    • 编译型代码是针对某一个平台翻译的,当前平台翻译的结果无法拿到不同的平台使用,针对不同的平台必须重新编译,即跨平台性差

PS:

  • 现在大多数的编程语言都是编译型的。
  • 编译程序将源程序翻译成目标程序后保存在另一个文件中,该目标程序可脱离编译程序直接在计算机上多次运行。
  • 大多数软件产品都是以目标程序形式发行给用户的,不仅便于直接运行,同时又使他人难于盗用其中的技术。
  • C、C++、Ada、Pascal都是编译实现的

(4)什么是解释型语言

1.解释型

  • 解释型语言逐句翻译源程序成中间代码,由解释器逐句执行。
  • 修改源代码后,不需要重新编译整个程序,直接执行即可。
  • 执行效率较低,但开发效率高,且具有较强的跨平台性。

2.类比

  • 编译型语言就像是你拿到一篇文章,不是整篇文章翻译,而是交给翻译软件,逐句进行翻译

3.优点

  • 开发效率高
    • 用解释型语言编写的程序是由另一个可以理解中间代码的解释程序执行的,与编译程序不同的是,解释程序的任务是逐一将源程序的语句解释成可执行的机器指令,不需要将源程序翻译成目标代码再执行。
    • 解释程序的优点是当语句出现语法错误时,可以立即引起程序员的注意,而程序员在程序开发期间就能进行校正。
  • 跨平台性强
    • 代码运行是依赖于解释器,不同平台有对应版本的解释器,所以解释型的跨平台性强

4.缺点

  • 执行效率低
    • 解释型语言的实现中,翻译器并不产生目标机器代码,而是产生易于执行的中间代码。
    • 这种中间代码与机器代码是不同的,中间代码的解释是由软件支持的,不能直接使用硬件, 软件解释器通常会导致执行效率较低。

5.其他

  • 对于解释型Basic语言,需要一个专门的解释器解释执行Basic程序,每条语句只有在执行时才被翻译,
  • 这种解释型语言每执行一次就翻译一次,因而效率低下。
  • 一般地,动态语言都是解释型的, 例如:Tcl、Perl、Ruby、VBScript、JavaScript等

6.Java是一类特殊的编译型语言

  • Java程序也需要编译,但是却没有直接编译为机器语言,而是编译为字节码
  • 然后在Java虚拟机上以解释方式执行字节码。

【4】小结

  • 综上选择不同编程语言来开发应用程序对比
    • 执行效率:机器语言>汇编语言>高级语言(编译型>解释型)
    • 开发效率:机器语言<汇编语言<高级语言(编译型<解释型)
    • 跨平台性:解释型具有极强的跨平台型
  • 由于我们开发是应用程序,而应用程序必须运行于某一个平台之上
  • 应用程序的快慢受限于平台(就好比F1赛车与宝马车同时跑在北京五环高速,都受限于道路环境,车速是差不多的)的快慢,并不是单从语言层面就可以提升整体执行效率的
  • 于是开发效率、跨平台性才是我们需要优先考虑的问题
  • 这就是我们首选Python的原因