《Python 3.x入门到应用实践》 — 1.2 程序设计语言与程序设计

举报
华章计算机 发表于 2020/02/08 19:57:17 2020/02/08
【摘要】 本节书摘来自华章计算机《Python 3.x入门到应用实践》 一书中第1章,第1.2.1节,作者是赵 军 等。

  1.2  程序设计语言与程序设计

程序设计语言是一种人类用来和计算机沟通的语言,也就是用来指挥计算机进行计算或运行的指令集合。就如同汉语、英语、日语等语言一样,无论哪一种语言都有词汇与语法。程序设计语言是一行行的程序语句(statement)及语句中的程序代码(code)组合而成的,可以将人类的思考逻辑和沟通的语言转换成计算机能够了解的语言,而“程序设计”就是通过程序设计语言的编写与执行来实现人类运用计算机的工作需求。编写程序可以让原有的工作更有效率,像是每天必须重复做的一些工作,就可以找出其中的规则,编写一个程序来自动执行。

1.2.1  程序设计语言简介

每一代程序设计语言都有其特色,无论是哪一种语言都有其专用的语法、特性、优点以及相关应用的领域。从发展过程来看,我们大致可以把程序设计语言分为“低级语言”与“高级语言”两大类,低级语言又可以分为“机器语言”和“汇编语言”。

1. 机器语言

机器语言(Machine Language)是最早期的程序设计语言,由数字1和0构成,也是计算机能够直接阅读与执行的基础语言,也就是任何程序在执行前实际上都必须转换为机器语言。例如“10111001”可能代表“设置变量A”,而“00000010”代表“数值2”。当我们指示计算机将变量A设置为数值2时,机器语言的写法可能就是:

10111001 (设置变量A)

00000010 (把数值2设置给变量A)

计算机可以直接执行机器语言,所以执行速度快,在处理数据时效率也高,但是对于人类而言,机器语言可读性低,不太容易学习。另外,对于不同的计算机制造商,往往因为计算机硬件设计的不同而开发不同的机器语言。这样机器语言不但使用不方便,可读性低,也不容易维护,并且不同机器的系统平台,它们的编码方式不尽相同。

2. 汇编语言

汇编语言(Assembly Language)的指令比机器语言的指令直观多了,但它的指令与机器语言的指令仍然是一对一的对应关系,因而与机器语言一样被归类为低级语言(Low-Level Language)。汇编语言和机器语言相比,更方便人类记忆与使用。由于汇编语言与硬件有着密切的关系,不同CPU(中央处理单元,或称为中央处理器)或微处理器的指令集是不同的,语法也不相同,程序设计人员除了要对指令相当了解之外,还必须熟悉硬件,每一种系统的汇编语言都不一样。以 PC 为例,使用的是 80x86 的汇编语言。采用汇编语言所编写的程序,计算机无法直接识别,必须通过汇编程序或汇编器(Assembler)将指令转换成计算机可以识别的机器语言。例如MOV指令代表设置变量的值、ADD指令代表加法运算、SUB指令代表减法运算:

      MOV  A , 2  (把变量A的值设置为2)

      ADD  A , 2  (将变量A加上2后,将结果再存回变量A中,如A=A+2)

      SUB  A , 2  (将变量A减掉2后,将结果再存回变量A中,如A=A-2)

3. 高级语言

由于低级语言不易阅读,为了能更方便、快速地使用程序设计语言,因此产生了更接近人类自然语言的程序设计语言,这类语言称为高级语言(High-Level Language)。高级程序设计语言比低级程序设计语言更易于看懂和理解。例如Python、Fortran、COBOL、Java、Basic、C、C++都是高级语言中的一员。一个用高级语言编写而成的程序必须经过编译程序(Compiler,或称为编译器)“翻译”为计算机能解读的机器语言程序,也就是可执行文件,其中包含的是编译型的高级语言被转换为计算机可以识别的机器语言的程序代码,只有这种代码才能被计算机执行(其实是被计算机中的CPU执行)。对于解释型的高级语言,需要解释程序(Interpreter,或称为解释程序)“解释”成机器语言才能被计算机的CPU执行,只是不会生成含有机器语言的最终可执行文件,这一点和编译型语言不一样。相对于汇编语言,高级语言虽然执行速度较慢,但语言本身易学易用,因此被广泛应用在商业、科学、教学、军事等相关领域的软件开发中。

编译型语言与解释型语言的不同

编译型语言会先使用编译程序检查整个程序,完全没有语法错误之后,再链接相关资源生成可执行文件(executable file)。一旦经过编译,所生成的执行文件在执行过程中不必再次编译,因此执行效率较高,例如C、C++、PASCAL、Fortran、COBOL等都属于编译型语言。

解释型语言是使用解释器对程序代码一边解读源代码,一边执行,每“解释”完一行程序代码并执行,再继续“解释”下一行程序代码。在解释过程中,如果发生语法错误,解释的过程就会立刻停止,例如HTML、JavaScript、Python等都属于解释型语言。

4. 非过程性语言

“非过程性语言”(Non-Procedural Language)也称为第四代语言(Fourth Generation Language,4GL),特点是它的指令和程序真正执行的具体步骤没有关联。程序设计人员只需将自己打算做什么表示出来即可,而不必去管计算机如何执行,也不需要理解计算机的具体执行步骤。目前,这种语言通常应用于各种类型的数据库系统中,如医院的门诊系统、学生成绩查询系统等,像数据库的结构化查询语言(Structural Query Language,SQL)就是一种第四代语言。例如,清除数据的程序相当简单,代码如下:

DELETE FROM employees

  WHERE employee_id = 'C800312' AND dept_id = 'R01';

5. 人工智能语言

人工智能语言被称为第五代语言,或自然语言(Natural Language),它是程序设计语言发展的终极目标,当然按目前的计算机技术尚无法实现,因为自然语言用户的口音、使用环境、语言本身的特性(如一词多义)等都会造成计算机在解读时产生不同的结果。所以自然语言必须有人工智能(Artificial Intelligence,AI)技术的发展作为保障。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。