计算机系统简述

目标

计算机世界并非如此神秘。相反,计算机是非常“确定”的一个系统,即在任何时候,在相同的方法、相同的状态下(当然还包括相同的起始条件),同样的问题必然获得相同的结果。其实,计算机并不是什么电子天才,相反,它只是一个电子傻瓜,只会精确地按照我们的要求去执行任务,它本身是没有什么心智的。事实上,计算机这样一个复杂的机体,是由一堆简单的部件,经过精心的组合而成。

本专栏强调的是理解,而不是死记硬背;强调的是软件与硬件结合,而不是软件与硬件的分别教授与学习。本着将软件硬件教学齐头并进的思路,从硬件的基本构件一直讲到软件的高级程序设计与构造,这样能够在学习过程中将软硬件融会贯通、相互印证,从而提高学习的广度、深度和效果,并为后续的计算机专业课如操作系统、计算机系统设计与结构、算法设计与分析、高可靠软件工程理论等打下基础。

最大的特点是提倡层次转换概念,即从问题开始到计算机运算出结果可分为七个层次。通过七个层次的转换,即可完成从问题到结果的转变。这七个层次及其转换是:问题到算法的转换、算法到程序设计语言的转换、程序到指令集结构(ISA)的转换、指令集结构到微观结构的转换、微观结构到电路的转换和电路到电路组件的转换。

经验与体会

为未来做准备:深入底层:系统运行的性能不仅仅取决于编写程序的水平,如果缺乏对系统底层知识的了解,则在面对一些性能问题时会一筹莫展。作为高级程序员,要编写高效率代码,仅仅掌握高级语言本身是不够的。除此之外,我们还需要了解与设备相关的知识(甚至是引脚的定义)。在高级语言编程课中,编译器这个“保护层”将计算机底层的“丑陋细节”都隐藏了。

两个反复出现的理念

一是“抽象”,二是“在脑子里不要对硬件和软件做任何区分”。

学会“抽象”能让我们站在更高的层次看问题,从而将事物的本质表现出来,而将其中的细节隐藏起来;能让我们更有效地利用时间和大脑;能让我们在分析问题时不至于陷入泥潭。此外,我们不仅要具备抽象的能力,还要具备“分解抽象”的能力,这样才能保证问题的顺利解决。这个过程有可以称为“解析”,即从抽象回到具体的过程。抽象技能相当重要,抽象的层次越高越好,它与工作效率成正比。 

硬件和软件只是计算机系统中两个组成部分的名称而已;对设计者来说,具体将计算机的某个功能划分给哪部分来实现,以及他们之间如何协同工作,原则只有一个:让计算机工作的最棒。

计算机系统简述

计算机,它是指这样一种机制,即同时在做着两方面的事情:即控制着信息的处理过程,同时也是信息处理过程的具体执行者。所谓“控制信息的处理过程”,指的是它必须决策下一个执行任务是什么,而“处理过程”的执行者,意味着他必须具备“加”、“减”、“乘”等运算能力以产生执行结果。该机制更准确的称谓是“中央处理器(Central Processing Unit,CPU)”。

而大多数人更熟悉“计算机”这个词,它包含了比处理器更多的意思。一个计算机系统由更多的部件组成,除了处理器之外,还包含键盘(用来输入命令)、鼠标(用来点击菜单)、显示器(用来显示计算机系统产生的信息)、打印机(用来打印信息的拷贝)、内存(用来临时存储信息)、磁盘和CD-ROM(用来永久存储信息及很多可以执行的程序或软件)。这些附件的部件更方便了计算机最终用户的使用。

两个非常重要的思想

第一:所有的计算机(不管是最大的还是最小的、最快的还是最慢的、最昂贵的还是最廉价的),只要给予足够的时间和内存,它们所能完成的计算任务是相同的。换句话说,最快的计算机能够完成的事情,最慢的计算机也能完成,只是更慢一些而已;而一个便宜的计算机所不能完成的事情(如果有足够内存的话),对于一个更昂贵的计算机来说,同样也是无法完成的。总之,所有的计算机能够完成相同的事情。只是有些计算机可能做的更快些,但绝不会做的更多。

第二,我们用英语或其他语言给出了一个问题,然而计算机却能通过电子运转(运行程序)来解决这个问题,太奇妙了!至于怎样把用人类语言描述的问题转换成能够影响电子运转的电压,需要一系列的、系统的转换过程。

计算机:通用计算设备

计算机是特别的,要学习计算机的基本原理,必须先了解计算机是怎样工作的?答案在于计算机被称为“通用计算设备(universal computational device)”。

在现代计算机出现之前,曾经出现了很多能计算的机器,其中,有些是模拟机—即机器产生的结果是用可测量的模拟量来表示的(如电压、距离等)。例如:滑动计算尺。模拟机器的缺陷主要是难以提高其精度。于是,数字机出现了,数字机(digital machine)通过一组固定的、有限的数字和字符来完成操作。如:数字手表。但计算机就不一样了。你需要告诉计算机的是“方法”和“任务”,如怎样做加法、怎样做乘法等。而假如你有新的计算任务要实现,就不需要购买或设计新机器了,所要做的唯一事情,就是在原来的计算机上增加一些新的指令或程序即可,这就是为什么我们称计算机为“通用计算设备”的原因。

通用计算的思想产生要归功于Alan Turing(阿兰·图灵)。1937年,他提出了一个大胆的设想:任何计算都可以由这样一台机器来完成,这个机器就是图灵机。他为这类机器给出了一个清晰的数学描述,但没有为之建造一台真正的机器。世界上真正可运行的数字计算机是在1946年才出现的(ENIAC—美国宾夕法尼亚大学)。在计算机领域上,有一个最高奖—图灵奖,相当于“诺贝尔奖”。

bb2b64ec78cf4ab3950f66e3a7aec80a.png

图灵机的“黑箱模型”

图灵提出:任何计算都可以通过某种图灵机来完成,我们称这个论题为“图灵论题”。虽然图灵论题从来没有被严格证明过,但众多的证据都表明它是正确的。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/42581.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据库的学习(4)

一、题目 1、创建数据表qrade: CREATE TABLE grade(id INT NOT NULL,sex CHAR(1),firstname VARCHAR(20)NOT NULL,lastname VARCHAR(20)NOT NULL,english FLOAT,math FLOAT,chinese FLOAT ); 2、向数据表grade中插入几条数据: (3,mAllenwiiliam,88.0,92.0 95.0), (4,m,George&…

【数据结构与算法】快速排序双指针法

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《数据结构与算法》 期待您的关注 ​

【js基础巩固】深入理解作用域与作用域链

作用域链 先看一段代码,下面代码输出的结果是什么? function bar() {console.log(myName) } function foo() {var myName "极客邦"bar() } var myName "极客时间" foo()当执行到 console.log(myName) 这句代码的时候&#xff0c…

nullptr和NULL

nullptr 既不是整型类型,也不是指针类型,nullptr 的类型是 std::nullptr_t(空指针类型),能转换成任意的指针类型。 NULL是被定义为0的常量,当遇到函数重载时,就会出现问题。避免歧义 函数重载…

数据结构--二叉树和堆

目录 1.基本概念 2.树的遍历方法 3.满二叉树&&完全二叉树 4.逻辑结构&&物理结构 5.推理公式 6.二叉树应用--堆 7.简单实现堆 1.基本概念 (1)这个里面的概念还是比较多的,但是大部分我们只需要了解即可,因为…

Ubuntu TensorRT安装

什么是TensorRT 一般的深度学习项目,训练时为了加快速度,会使用多 GPU 分布式训练。但在部署推理时,为了降低成本,往往使用单个 GPU 机器甚至嵌入式平台(比如 NVIDIA Jetson)进行部署,部署端也…

VSCode使用ipynb文件高效地进行功能测试

一、ipynb是什么文件 .ipynb文件是Jupyter Notebook的专用格式,它允许用户在一个网页应用中混合编写Markdown文本、执行代码、查看输出结果及图表。Jupyter Notebook的本质是一个Web应用程序,支持运行40多种编程语言,包括Python。它的主要用…

java反射介绍

Java反射API允许你在运行时检查和修改程序的行为。这意味着你可以动态地创建对象、查看类的字段、方法和构造函数,甚至调用它们。这是一个强大的特性,但也应该谨慎使用,因为它可以破坏封装性。 以下是使用Java反射的一些常见用途:…

【鸿蒙学习笔记】MVVM模式

官方文档:MVVM模式 [Q&A] 什么是MVVM ArkUI采取MVVM Model View ViewModel模式。 Model层:存储数据和相关逻辑的模型。View层:在ArkUI中通常是Component装饰组件渲染的UI。ViewModel层:在ArkUI中,ViewModel是…

[AHK V2]获取本地IP地址

问题&#xff1a;如何用AutoHotkey v2 获取本地IP地址。 解答&#xff1a;AutoHotkey v2 源代码如下 #Requires AutoHotkey v2; MsgBox GetLocalIPByAdapter(Ethernet) ; <— specify the adapter name you are interested in ; MsgBox GetLocalIPByAdapter(以太网) ; <…

《算法笔记》总结No.4——散列

散列的英文名是hash&#xff0c;即我们常说的哈希~该知识点在王道408考研的教材里面属于查找的范围。即便各位并无深入了解过&#xff0c;也听说过散列是一种更高效的查找方法。 一.引例 先来考虑如下一个假设&#xff1a;设有数组M和N分别如下&#xff1a; M[10][1,2,3,4,5,6…

java IO流(1)

一. 文件类 java中提供了一个File类来表示一个文件或目录(文件夹),并提供了一些方法可以操作该文件 1. 文件类的常用方法 File(String pathname)构造方法,里面传一个路径名,用来表示一个文件boolean canRead()判断文件是否是可读文件boolean canWrite()判断文件是否是可写文…

现场Live震撼!OmAgent框架强势开源!行业应用已全面开花

第一个提出自动驾驶并进行研发的公司是Google&#xff0c;巧的是&#xff0c;它发布的Transformer模型也为今天的大模型发展奠定了基础。 自动驾驶已经完成从概念到现实的华丽转变&#xff0c;彻底重塑了传统驾车方式&#xff0c;而大模型行业正在经历的&#xff0c;恰如自动驾…

基于S32K144驱动NSD8381

文章目录 1.前言2.芯片介绍2.1 芯片简介2.2 硬件特性2.3 软件特性 3.测试环境3.1 工具3.2 架构 4.软件驱动4.1 SPI4.2 CTRL引脚4.3 寄存器4.4 双极性步进电机驱动流程 5.测试情况6.参考资料 1.前言 最近有些做电磁阀和调光大灯的客户需要寻找国产的双极性步进电机驱动&#xf…

Android 15 应用适配默认全屏的行为变更(Android V的新特性)

简介 Android V 上默认会使用全面屏兼容方式&#xff0c;影响应用显示&#xff0c;导致应用内跟导航标题重合&#xff0c;无法点击上移的内容。 默认情况下&#xff0c;如果应用以 Android 15&#xff08;API 级别 35&#xff09;为目标平台&#xff0c;在搭载 Android 15 的设…

python破解字母已知但大小写未知密码

python穷举已知字符串中某个或多个字符为大写的所有情况 可以使用递归函数来实现这个功能。以下是一个示例代码&#xff1a; def generate_uppercase_combinations(s, index0, current):if index len(s):print(current)returngenerate_uppercase_combinations(s, index 1, …

图神经网络dgl和torch-geometric安装

文章目录 搭建环境dgl的安装torch-geometric安装 在跑论文代码过程中&#xff0c;许多小伙伴们可能会遇到一些和我一样的问题&#xff0c;就是文章所需要的一些库的版本比较老&#xff0c;而新版的环境跑代码会报错&#xff0c;这就需要我们手动的下载whl格式的文件来安装相应的…

数字信号处理及MATLAB仿真(3)——量化的其他概念

上回书说到AD转换的两个步骤——量化与采样两个步骤。现在更加深入的去了解以下对应的概念。学无止境&#xff0c;要不断地努力才有好的收获。万丈高楼平地起&#xff0c;唯有打好基础&#xff0c;才能踏实前行。 不说了&#xff0c;今天咱们继续说说这两个步骤&#xff0c;首先…

cloudflare tunnels tcp

这里是官网的说明Cloudflare Tunnel Cloudflare Zero Trust docs 根据实际情况安装环境 tunnels除了http,https协议是直接暴露公网&#xff0c;tcp是类似ssh端口转发。 在需要内网穿透的局域网找一条机子部署代理 我这边是window cloudflared tunnel login #生成一个身份校…

windows上传app store的构建版本简单方法

我们在上传app store上架&#xff0c;或上传到testflight进行ios的app测试的时候&#xff0c;需要mac下的上传工具上传ipa文件到app store的构建版本上。 然而windows电脑这些工具是无法安装的。 因此&#xff0c;假如在windows上开发hbuilderx或uniapp的应用&#xff0c;可以…