开发者社区> 华章计算机> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

《C++程序设计教程(第3版)》——第1章,第1节计算机语言与程序

简介: 本节书摘来自华章出版社《C++程序设计教程(第3版)》一书中的第1章,第1.1节计算机语言与程序,作者张志航,更多章节内容可以访问云栖社区“华章计算机”公众号查看 第1章 C++概述1.1 计算机语言与程序 人类语言是人与人之间交流信息的工具,而计算机语言是人与计算机之间交流信息的工具。
+关注继续查看

本节书摘来自华章出版社《C++程序设计教程(第3版)》一书中的第1章,第1.1节计算机语言与程序,作者张志航,更多章节内容可以访问云栖社区“华章计算机”公众号查看

第1章 C++概述
1.1 计算机语言与程序
人类语言是人与人之间交流信息的工具,而计算机语言是人与计算机之间交流信息的工具。用计算机解决问题时,人们必须首先将解决问题的方法和步骤按照一定的规则和序列用计算机语言描述出来,形成计算机程序,然后让计算机自动执行程序,完成相应功能,解决指定的问题。下面先介绍计算机语言与程序经历的3个发展阶段。

1.1.1 机器语言与程序
机器语言是第一代计算机语言。任何信息在计算机内部都是采用二进制代码表示的,指挥计算机完成一个基本操作的指令(称为机器指令)也是由二进制代码表示的。每一条机器指令的格式和含义都是计算机硬件设计者规定的,并按照这个规定制造硬件。一个计算机系统全部机器指令的总和称为指令系统,它就是机器语言。用机器语言编制的程序为如下形式:
0000 0100 0001 0010
0000 0100 1100 1010
0001 0010 1111 0000
1000 1010 0110 0001
...
每一行都是一条机器指令,代表一个具体的操作。机器语言程序能直接在计算机上运行,且运行速度快、效率高,但必须由专业人员编写。机器语言程序紧密依赖于硬件,程序的可移植性差。所谓移植,是指在一种计算机系统下编写的程序经过修改可以在另一种计算机系统中运行,并且运行结果一样。改动越少,可移植性越好;改动越多,可移植性越差。

1.1.2 汇编语言与程序
机器语言是由二进制代码构成的,难以记忆和读写,用它编写程序比较困难。于是计算机工作者发明了汇编语言,用来代替机器语言编写程序。汇编语言是一种符号语言,它用一个有意义的英文单词缩写来代替一条机器指令,如用ADD表示加法,用SUB表示减法。英文单词缩写被称为助记符,每一个助记符代表一条机器指令,所有指令的助记符集合就是汇编语言。用汇编语言编写的程序有如下形式:
MOV AL 12D // 表示将十进制数12送往累加器AL
SUB AL 18D // 表示从累加器AL中减去十进制数18

  ...

HLT // 表示停止执行程序
汇编语言改善了程序的可读性和可记忆性,使编程者在编写程序时稍微轻松了一点。但是汇编语言程序不能在计算机中直接运行,必须把它翻译成相应的机器语言程序才能运行。将汇编语言程序翻译成机器语言程序的过程称为汇编。汇编过程是计算机运行汇编程序自动完成的,如图1-1所示。汇编语言是第二代计算机语言。


34a4cc6ca07c380cc5809df826c17d4c9eeeda63

1.1.3 高级语言与程序
机器语言和汇编语言都是面向机器的语言,统称为低级语言。它们受特定计算机指令系统的限制,通用性较差,一般只适用于专业人员。非专业人员若想学习使用低级语言编写程序比较困难,为解决这一问题,计算机工作者发明了高级程序设计语言,简称高级语言。高级语言是第三代计算机语言。高级语言用类似于人类自然语言和数学语言的方式描述问题、编写程序。例如,用C++语言编写的程序片段如下:
int a, b, c; // 定义变量a、b和c
cin >> a >> b; // 输入变量a、b的值
c = a + b; // 将变量a、b的值相加,结果赋给变量c
cout << c; // 输出变量c的值
该程序片段的功能见每条语句后面的说明。用高级语言编写程序时,编程者不需要考虑具体的计算机硬件系统的内部结构,即不需要考虑计算机的指令系统,而只要告诉计算机“做什么”即可。至于计算机“怎么做”,即用什么机器指令去完成,不需要编程者考虑。
高级语言程序也无法在计算机中直接运行。若要运行高级语言程序,首先必须将它翻译成机器语言目标程序,这个翻译的过程称为编译,编译是由“编译程序”(也称为“编译器”)完成的。然后由“连接程序”将目标程序与系统提供的标准函数的库程序连接,生成可执行程序。可执行程序可以在计算机中运行。编译、连接过程如图1-2所示。“编译程序”和“连接程序”属于计算机系统软件。


cf891a572cf558aecda008d6a3e44af51efe3792

高级语言不仅易学易用、通用性强,而且具有良好的可移植性。如果想把高级语言程序移植到另一个计算机系统中,只需对源程序稍加改动甚至不改动,使用目标计算机系统的编译程序将高级语言源程序重新编译即可。不同的计算机系统具有不同的编译程序。
目前世界上有数百种高级语言,应用于不同领域,而C++作为其中的优秀语言得到了广泛的使用。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
C++还在用printf/cout进行Debug?学习一下如何自己写日志库吧(上篇)
日志是出现异常第一个想到的东西,它记录了程序运行过程中所调用的函数,所接受到的值,所执行的行为等等。大家也都看到这篇的标题了,我这个人有一个缺点,就是不太喜欢用别人的东西,如果有能力,我希望自己造,所以今天我们自己来动手撸一个日志库,文章重点讲实现过程,如果需要源码,可以前往github获取[FdogLog,一个轻量级C++日志库,用于日志服务。
201 0
C++学习006-条件运算符
这里我也理解的不咋的,大致意思应该就是根据运算符号 的优先级不同来解决的
36 0
C++学习007-使用exit退出进程
使用exit可以实现退出当前进程。
86 0
C++学习008-delete与delete[]的差别
对于简单的数据类型,delete与delete[]是没啥差别的,就是等价的
42 0
C++学习009预处理器指令符号 # ## #@ 符号的使用
# ## #@ 符号是预处理器指令符号。
44 0
C++学习010-将某个地址转化为指针
如果需要将某个具体的地址转化为指针,可以直接使用类型那个转换来是实现。
105 0
C++学习011-常用内存分配及释放函数
C++用有多种方法来分配及释放内存,下面是一些经常使用的内存分配及释放函数
205 0
C++学习012友元
何为友元,我的理解,友元就是把另一个类当作是我的朋友,朋友之间,是可以访问一些私有的变量的。
30 0
C++学习013多态
何为多态 面向对象最要的特征之一就是多态,而纯虚函数是实现多态的主要方式。
50 0
C++学习014函数值传递和地址传递
当我们给一个函数传参数的时候,可以直接值传入函数,也给可以把一个地址传入函数
41 0
文章
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
继承与功能组合
立即下载
C++课程-对象模型
立即下载
使用C++开发PHP7扩展
立即下载