课时11:计算机语言简介
摘要:今天分享的是计算机语言的简介,包括计算机语言的定义已经计算机语言发展历程中各种计算机语言的优缺点,主要主要分以下两个部分。
1.计算机语言的定义
2.计算机语言的发展历程
01. 计算机语言的定义
在开始第二章“Python 入门”的学习内容之前,我们首先要进行相关文件的创建与保存操作。具体来说,通过双击的方式创建一个空白文件。由于该文件是作为一份笔记文件,为了便于管理和后续使用,在编写内容之前,需要将其保存到一个新的文件夹当中。我们新建一个名为“Lesson 02”的文件夹,然后在这个文件夹内创建一个名为“README.md”的文件,这个文件将作为“lesson 02”的 read me 文件,也就是我们“lesson 02”学习内容的笔记记录。
Python 是一种广泛应用的编程语言,而“Python 入门”这部分内容,主要是向大家介绍关于 Python 程序的一些基础知识。在深入学习 Python 之前,我们有必要先明确一个基本概念,即什么是编程语言,或者说什么是计算机语言。
计算机从本质上来说,是一种用于执行各种计算任务的机器设备,它的运行是听从人类的指令和操控的。然而,当我们直接用人类的自然语言,比如对计算机说出“开机”“关机”“打开浏览器”等指令时,计算机并不会做出相应的反应。这是因为计算机无法理解人类的自然语言,它有着自己特定的“语言体系”。就如同人类之间通过不同的自然语言(如中文、英文、日文等)进行交流,以及人类操控动物(如用特定指令控制马的行动)需要使用动物能够理解的方式一样,我们要控制计算机,就必须使用计算机能够理解的语言,也就是计算机语言,而计算机语言也被称为编程语言。我们学习编程的目的,就是为了能够运用编程语言来实现对计算机的有效控制。在日常使用计算机的过程中,我们通过鼠标进行的各种操作,虽然表面上看起来没有使用到语言,但实际上,每一个操作在计算机的底层系统中,都被转换成了计算机语言来完成相应的任务。
计算机语言和人类的自然语言在本质上并没有太大的区别,它们的不同之处主要在于交流的主体对象。人类的自然语言是用于人与人之间进行沟通和交流的工具,而计算机语言则是专门用于实现人与计算机之间交互的媒介。因此,在学习计算机语言的初级阶段,大家完全可以将其当作一门文科类的知识来学习,重点在于掌握它的语法规范。就像学习一门新的自然语言时,我们需要学习它的词汇、语法和表达方式一样,学习计算机语言时,只要把相关的语法规范理解并掌握了,就能够逐步学会这门语言,从这个角度来说,学习计算机语言并不是一件非常困难的事情。
02. 计算机语言的发展历程
计算机语言的发展并不是一蹴而就的,而是经历了一个逐步演进的过程,主要包括以下三个重要阶段:机器语言阶段、汇编语言阶段和高级语言阶段。
2.1机器语言
机器语言是计算机语言发展的最初阶段,也是最早出现的计算机语言形式。它是基于二进制编码来编写程序的。我们知道,计算机的底层运行机制决定了它只能识别二进制的“0”和“1”,所以机器语言编写的程序就是由一系列类似“101010”这样的二进制代码所组成的。机器语言的优点非常明显,由于计算机本身就是基于二进制进行运算和处理的,所以用机器语言编写的程序在计算机上执行的速度非常快。但是,机器语言也存在着很大的缺点。
对于人类来说,这些二进制代码缺乏直观性和可读性,我们很难理解这些由“0”和“1”组成的代码所代表的具体含义,这就导致了使用机器语言编写程序的难度非常大,开发效率很低。在早期,人们编写机器语言程序是通过纸带机来完成的,将代码记录在纸带上,纸带上打孔表示“1”,不打孔表示“0”,程序员需要通过判断纸带上是否打孔来确定代码内容,这种编程方式不仅繁琐,而且容易出错。随着技术的发展,如今除了在一些特殊的领域可能还会用到机器语言外,在大多数情况下,我们已经基本不再使用机器语言来编写程序了。
2.2 汇编语言
汇编语言是在机器语言的基础上发展而来的,它相对于机器语言来说,有了一定的进步。汇编语言采用符号来代替二进制形式的机器码。例如,在机器语言中可能用“01010”来表示某个操作或数据,而在汇编语言中,则可以用“abc”这样的符号来代替它,这样就大大提高了代码对于人类的可读性和可理解性。当我们使用汇编语言编写程序时,我们直接编写这些符号代码,而不需要再去处理那些复杂的二进制数字。但是,由于计算机只能识别和执行机器码,所以我们编写好的汇编语言程序中的符号代码,需要经过一个“汇编”的过程,将其转换为计算机能够识别的机器码,然后才能交给计算机去执行。反过来,将机器码转换为符号代码的过程则被称为“反汇编”。从本质上来说,汇编语言也属于一种符号语言,它是符号语言中最典型的一种形式。
不过,与机器语言相比,使用汇编语言编写程序还是相对麻烦一些,因为机器语言编写的程序可以直接交给计算机执行,而汇编语言编写的程序需要先经过汇编这个步骤。此外,汇编语言还有一个特点,就是它与硬件的关联非常紧密。不同的硬件厂商可能会对符号和机器码之间的对应关系做出不同的规定,也就是说,同样的符号在不同的硬件系统中可能代表不同的机器码。例如,在英特尔的硬件系统中,“abc”可能对应着一种机器码,而在 AMD 的硬件系统中,“abc”可能对应着另一种机器码。这就导致了用汇编语言编写的程序兼容性比较差,一个程序在某一种硬件环境下能够正常运行,但是如果换到另一种硬件环境下,可能就无法运行了。因此,汇编语言一般只适用于一些特定的硬件环境,在这些特定的硬件上开发程序是可行的,但是如果想要在不同的硬件上运行相同的程序,就需要针对不同的硬件重新进行开发。尽管汇编语言存在着兼容性差的问题,但是在一些特定的场景中,比如编写计算机底层的硬件驱动程序时,由于需要直接与硬件进行交互,汇编语言的这种与硬件紧密关联的特点反而使其成为了一种非常有用的工具,所以在这些场景中,我们仍然会使用汇编语言来进行编程。
2.3高级语言
高级语言是计算机语言发展的进一步阶段,它是在符号语言的基础上逐渐演化而来的。与汇编语言相比,高级语言与硬件之间的关系变得更加松散,或者说关联度大大降低了。高级语言的语法规则与现代英语的语法规则比较相似,这使得高级语言更加接近人类的自然语言习惯,因此也更容易被人们理解和学习。高级语言的一个显著优势就是它具有很好的跨硬件平台兼容性。
使用高级语言编写的程序,可以在多种不同的硬件系统中运行。在汇编语言中,由于符号和机器码之间的对应关系与硬件紧密相关,所以同样的符号在不同硬件中可能对应不同的机器码,这就限制了程序的通用性。而高级语言在编译的过程中,会根据目标硬件的特性,自动地将代码编译成适合该硬件的机器码形式。
例如,对于英特尔和 AMD 不同的 CPU,高级语言会分别将代码编译成能够在各自 CPU 上正常运行的机器码,从而有效地解决了程序在不同硬件上的兼容性问题。另外,高级语言的学习门槛相对较低,对于初学者来说更加友好。现在我们所熟知的很多编程语言,比如 C、C++、C#、Java、JavaScript 以及我们即将要学习的 Python 等,都属于高级语言的范畴。在计算机语言的学习过程中,高级语言是我们主要的学习对象。
关于计算机语言的基本介绍就到这里。为了帮助大家更好地理解和掌握不同高级语言之间的特点和差异,在这里给大家布置一个思考练习:分析 C 语言和 Python 语言之间有哪些区别。我们将在下节课中对这个问题进行详细的讲解和探讨,谢谢大家!