编程基础第一课:计算机原理及编程概念

姓名:王紫圣    学号:16130140355

转载自:STEAM解密

【嵌牛导读】尽管计算机技术自20世纪40年代第一部电子通用计算机诞生以来以来有了令人目眩的飞速发展,但是今天计算机仍然基本上采用的是存储程序结构,即冯·诺伊曼结构。这个结构实现了实用化的通用计算机。

存储程序结构将一部计算机描述成四个主要部分:算术逻辑单元、控制电路、存储器及输入输出设备。这些部件通过一组一组的排线连接(特别地,当一组线被用于多种不同意图的数据传输时又被称为总线),并且由一个时钟来驱动(当然某些其他事件也可能驱动控制电路)。

【嵌牛鼻子】计算机原理

【嵌牛提问】计算机是如何通过二进制实现那么多功能的?

【嵌牛正文】概念上讲,一部计算机的存储器可以被视为一组“细胞”单元。每一个“细胞”都有一个编号,称为地址;又都可以存储一个较小的定长信息。这个信息既可以是指令(告诉计算机去做什么),也可以是数据(指令的处理对象)。原则上,每一个“细胞”都是可以存储二者之任一的。

算术逻辑单元(ALU)可以被称作计算机的大脑。它可以做两类运算: 第一类是算术运算,比如对两个数字进行加减法。算术运算部件的功能在ALU中是十分有限的,事实上, 一些ALU根本不支持电路级的乘法和除法运算(由是用户只能通过编程进行乘除法运算)。第二类是比较运算,即给定两个数, ALU对其进行比较以确定哪个更大一些。

输入输出系统是计算机从外部世界接收信息和向外部世界反馈运算结果的手段。对于一部标准的个人电脑,输入设备主要有键盘和鼠标,输出设备则是显示器、打印机以及其他许多后文将要讨论的可连接到计算机上的I/O设备。

控制系统将以上计算机各部分联系起来。它的功能是从存储器和输入输出设备中读取指令和数据,对指令进行解码, 并向ALU交付匹配指令要求的正确输入,告知ALU对这些数据做哪些运算并将结果数据返回到何处。控制系统中一个重要组件就是一个用来保持跟踪当前指令所在地址的计数器。 通常这个计数器随着指令的执行而累加,但有时如果指令指示进行跳转则不依此规则。

20世纪80年代以来ALU和控制单元(二者合称中央处理器)逐渐被集成到一块集成电路上,称作微处理器。 这类计算机的工作模式十分直观:在一个时钟周期内,计算机先从存储器中获取指令和数据,然后执行指令,存储数据,再获取下一条指令。这个过程被反复执行,直至得到一个终止指令。

由控制器解释,运算器执行的指令集是一个精心定义的数目十分有限的简单指令集合。一般可以分为四类:

1)、数据移动 (如:将一个数值从存储单元A拷贝到存储单元B)

2)、数逻运算(如:计算存储单元A与存储单元B之和,结果返回存储单元C)3)、 条件验证(如:如果存储单元A内数值为100,则下一条指令地址为存储单元F)

4)、指令序列改易(如:下一条指令地址为存储单元F)

指令如同数据一样在计算机内部是以二进制来表示的。比如说,10110000就是一条Intel x86系列微处理器的拷贝指令代码。

某一个计算机所支持的指令集就是该计算机的机器语言。因此,使用流行的机器语言将会使既成软件在一部新计算机上运行得更加容易。所以对于那些机型商业化软件开发的人来说,它们通常只会关注一种或几种不同的机器语言。

更加强大的小型计算机,大型计算机和服务器可能会与上述计算机有所不同。它们通常将任务分担给不同的CPU来执行。今天, 微处理器和多核个人电脑也在朝这个方向发展。

超级计算机通常有着与基本的存储程序计算机显著区别的体系结构。它们通常有着数以千计的CPU, 不过这些设计似乎只对特定任务有用。在各种计算机中,还有一些微控制器采用令程序和数据分离的哈佛架构(Harvard architecture)。

程序设计往往以某种程序设计语言为工具,给出这种语言下的程序。

程序设计过程应包括分析、设计、编码、测试、除错等不同阶段。

在计算机技术发展的早期,软件开发主要就是程序设计。但随着技术的发展,软件系统越来越复杂,逐渐分化出许多专用的软件系统,如操作系统、数据库系统、应用服务器,而且这些专用的软件系统愈来愈成为普遍的系统环境的一部分。这种情况下软件开发的内容越来越丰富,不再只是纯粹的程序设计,还包括数据库设计、用户界面设计、通信协议设计和复杂的系统配置过程。

专业的程序设计人员被称为程序员。某种意义上,程序设计的出现甚至早于电子计算机的出现。英国著名诗人拜伦的女儿爱达·勒芙蕾丝曾设计了巴贝奇分析机上计算伯努利数的一个程序。她甚至还创建了循环和子程序的概念。由于她在程序设计上的突破性创新,爱达·勒芙蕾丝被称为世界上第一位程序员。

任何设计工作都是在各种条件限制和相互矛盾的需求之间寻求一种平衡。这种观点反映在程序设计上,就是硬件存储空间与程序运行时间的限制。

空间方面,在计算机技术发展的早期,由于机器资源比较昂贵,如何缩小存储空间往往是设计关心的首要重点;而随着硬件技术的飞速发展,电脑上数据存储媒体的价格降低,空间不再是考虑的第一要点,一些较耗时的运算也渐渐发展出以空间换取时间的模式。

时间方面,在早期,如何加强程序效率、缩短程序运行时间是程序员的共同目标;而在硬件性能进步、效率差距缩小,软件规模与复杂度却日益增加的现在,程序的结构、可维护性、重复使用性、弹性等因素更显得重要。在多人合作的程序设计项目里,程序员们会加上各种注解以协助其他参与者理解代码,此行为虽然对运行时间的缩短没有帮助,还会加重存储空间的负担,但却因能达到较好的沟通并提高代码的可维护性,而成为目前的主流。

然而,随着智能手机等携带设备的兴起,运行时间的缩短与存储空间的有效运用再次成为焦点,形成与主机服务器类型应用程序不同的重点考虑方向。

你可能感兴趣的:(编程基础第一课:计算机原理及编程概念)