【ShuQiHere】上章:计算与计算机的基础概念
【ShuQiHere】✨
在当今数字化社会,计算机已无处不在,从智能手机到人工智能应用,影响深远。然而,计算机并非一开始就如此强大。它经历了从手动工具、机械装置到电子计算机的演变。本章将回顾计算与算法的基本概念,探讨人类计算器的历史角色,并比较传统与现代计算工具的优劣。此外,还将介绍图灵机这一计算理论的基础,帮助理解计算的抽象模型与能力。最后,通过计算机的发展历程,我们将了解其从机械到电子、从简单到复杂的转变。
1. 计算与算法的定义(Computation & Algorithm) 🔢
计算(Computation) 是任何遵循明确模型(如算法,Algorithm)的算术或非算术计算过程。计算不仅仅包括简单的加减乘除运算,还涵盖了更广泛的逻辑推理(Logical Reasoning)、数据处理(Data Processing)和符号操作(Symbolic Operations)等复杂计算。
- 算法(Algorithm) 是一组用于解决特定问题的步骤和规则的有序集合。算法可以是递归的(Recursive)或非递归的,取决于问题的性质和解决方式。
- 例子:欧几里得算法(Euclid’s Algorithm) 用于计算两个整数的最大公约数(GCD, Greatest Common Divisor)。这是一种经典的递归算法,通过逐步分解问题来逼近最终的解决方案。
背景 📜:算法是计算机科学的核心概念,决定了计算的效率和准确性。从古代的数学家到现代的计算机科学家,算法的设计和优化一直是推动计算机技术进步的关键因素。今天,算法广泛应用于各种领域,从简单的数据排序(Sorting)到复杂的机器学习(Machine Learning)模型。
2. 人类计算器的历史背景(Human Computers) 🧠
在电子计算机(Electronic Computers)问世之前,“计算机”一词指的是“计算的人”(即“计算员”),这些人被称为“人类计算器”(Human Computers)。他们主要负责进行复杂的数学计算,尤其是在科学研究和军事应用中。
-
背景 🕰️:19世纪到20世纪初,许多科学领域依赖于大量繁琐的计算任务,这些任务通常由专业的数学家或训练有素的计算员完成。例如,在第二次世界大战期间,许多女性计算员在军队中承担弹道计算和密码破译的任务。随着科学研究的需求不断增加,手动计算的效率逐渐无法满足需求,这也催生了电子计算机的诞生。
这些人类计算器的工作为电子计算机的发展奠定了基础,并展示了自动化计算的重要性。今天的计算机在效率和准确性上远远超过了人类计算器,同时也开辟了更多新的应用领域。
3. 现代计算机与传统计算工具的比较(Comparison of Modern Computers and Traditional Tools) 🛠️
现代计算机(Modern Computers)相较于古老的计算工具,如算盘(Abacus)、机械计算机(Mechanical Computers)、计算器(Calculators)和人类计算器,具有显著的优势。以下逐一比较这些计算工具,帮助理解现代计算机的特点和优越性。
-
现代计算机 vs. 算盘(Abacus):
- 算盘是一种古老的手动计算工具,通过移动珠子进行基本的加减乘除运算。
- 现代计算机能够处理更加复杂的计算任务,包括逻辑运算(Logical Operations)、符号处理(Symbolic Processing)、数据分析(Data Analysis)和多媒体处理(Multimedia Processing)。
背景 📚:算盘是最早的计算工具之一,尽管结构简单,但它为现代计算工具的设计提供了启发。算盘的计算方式展示了如何将复杂的运算通过简单的步骤来实现,正如现代计算机中所实现的算法一样。
-
现代计算机 vs. 机械计算机(Mechanical Computer):
- 机械计算机利用齿轮、杠杆等机械装置来执行计算操作,如巴贝奇的差分机(Difference Engine)和分析机(Analytical Engine)。
- 现代计算机通过电子电路(Electronic Circuits)和集成电路(Integrated Circuits, IC)来进行运算,速度更快,精度更高,体积更小。
背景 ⚙️:机械计算机代表了人类早期试图通过机械手段实现自动化计算的努力。尽管这些计算机的设计复杂且容易出故障,但它们奠定了现代计算机科学的基础。现代计算机通过电子化、大规模集成化的手段,克服了机械计算机的限制。
-
现代计算机 vs. 计算器(Calculator):
- 计算器主要用于基本的算术运算(Arithmetic Operations)和科学计算(Scientific Calculations),通常具有有限的存储和处理能力。
- 现代计算机不仅能够完成计算器的功能,还能够运行复杂的软件程序(Software Programs),支持多任务处理(Multitasking)和网络连接(Networking),并且具备图形处理能力(Graphics Processing)和人工智能(Artificial Intelligence)功能。
背景 💡:计算器的发明极大地方便了日常计算,但其功能局限性也促使了更强大、通用的现代计算机的开发。计算器的设计理念,尤其是其简洁性和易用性,直接影响了早期个人计算机(Personal Computer, PC)的发展。
-
现代计算机 vs. 人类计算器(Human Computers):
- 人类计算器的计算能力有限,速度较慢且容易出错(Prone to Errors)。
- 现代计算机通过程序化控制(Programmatic Control),能够高效、准确地完成大量复杂计算任务,几乎没有人为错误(Human Errors),并且能够处理庞大的数据集(Big Data)。
背景 🧑💻:人类计算器的效率局限性显著,尤其是在处理大规模计算时。电子计算机的出现不仅提升了计算效率,还大大降低了计算错误的发生率,扩展了计算的应用领域,从科学计算到商业应用,从研究实验室到家庭办公。
4. 计算机的定义与基本构成(Definition and Basic Components of a Computer) 💻
在了解了现代计算机与其他计算工具的比较后,我们可以总结出现代计算机的定义:
-
定义 📝:现代计算机(Computer)是一种电子(Electronic)、数字(Digital)、通用(General-Purpose)的计算机器,它能够自动执行一系列预定义的指令(即计算机程序,Computer Program)来解决特定的问题。
-
基本构成:
- 中央处理单元(CPU, Central Processing Unit):计算机的核心部件,负责执行所有的计算任务,相当于人脑中的处理中心。
- 存储设备(Storage Devices):用于存储数据和程序,包括内存(Memory)、硬盘(Hard Disk)等。内存负责临时存储正在处理的数据,而硬盘用于长期存储数据。
- 输入设备(Input Devices):如键盘(Keyboard)、鼠标(Mouse),用于接收用户的指令和数据输入。
- 输出设备(Output Devices):如显示器(Monitor)、打印机(Printer),用于展示计算结果和反馈。
背景 🧩:随着技术的发展,计算机的硬件(Hardware)和软件(Software)构成逐渐变得更加复杂和多样化。例如,现代计算机通常还包含图形处理单元(GPU, Graphics Processing Unit)用于加速图形渲染(Rendering)和人工智能计算。硬件和软件的紧密结合使得计算机能够以更高效、更灵活的方式执行各种任务。
5. 图灵机与计算的抽象模型(Turing Machine and the Abstract Model of Computation) 🤖
图灵机(Turing Machine) 是由英国数学家艾伦·图灵(Alan Turing)在1936年提出的一种假设性计算设备,是现代计算机科学的重要理论基础。
-
图灵机的构成:
- 带子(Tape):被分成若干个单元格,用于存储数据。每个单元格可以存储一个符号(Symbol),如0或1。
- 读写头(Read/Write Head):可以在带子上移动,读取或写入数据。
- 状态寄存器(State Register):存储图灵机的当前状态。
- 有限指令表(Finite Table of Instructions):规定了读写头在不同状态下应执行的操作,如移动(Move),写入符号(Write a Symbol),改变状态(Change the State)等。
-
图灵机的计算过程:通过读写头在带子上的移动和操作,图灵机能够执行任意复杂的计算过程。图灵机的计算过程
是一种抽象模型,揭示了计算的本质:即通过一系列简单的操作步骤,解决复杂的计算问题。
-
丘奇-图灵论题(Church-Turing Thesis) 📜:这一理论提出,所有能够被计算的问题都可以通过图灵机计算。换句话说,图灵机具有普遍计算能力(Universal Computation Capability),可以模拟任何其他计算设备。
-
通用图灵机(Universal Turing Machine) 🌍:图灵进一步提出了一种能够模拟所有其他图灵机的图灵机,即通用图灵机(Universal Turing Machine)。这实际上就是现代计算机的理论基础,因为它可以通过输入不同的数据和程序来执行各种不同的计算任务。
背景 🧠:图灵机不仅在理论上奠定了现代计算机科学的基础,还对实际计算机的设计产生了深远影响。通用图灵机的概念让我们理解了计算机的可编程性(Programmability),即通过编写不同的程序,计算机可以用来执行不同的任务。今天,所有的编程语言和计算机系统都可以看作是通用图灵机的具体实现。
6. 计算机的历史发展(Historical Development of Computers) 📅
计算机的发展历程可以分为以下几个重要阶段,每个阶段都有其独特的技术特征和代表性设备:
-
零代:机械计算机(Generation Zero: Mechanical Calculating Machines, 1642-1945) ⚙️:
- 早期的机械计算工具,如巴贝奇的差分机(Difference Engine)和分析机(Analytical Engine),是人类第一次尝试利用机械装置进行自动计算的代表。这些机器依靠复杂的齿轮系统和手动操作,完成基本的算术运算。
-
第一代:真空管计算机(First Generation: Vacuum Tube Computers, 1945-1953) 🛢️:
- 第一代电子计算机以真空管(Vacuum Tube)为核心技术。真空管计算机的代表作包括ENIAC(Electronic Numerical Integrator and Computer),它标志着计算机进入了电子时代。这些计算机体积庞大、功耗巨大,但在计算速度和复杂性上远超机械计算机。
-
第二代:晶体管计算机(Second Generation: Transistor Computers, 1954-1965) 📏:
- 晶体管(Transistor)的发明极大地提高了计算机的性能,同时显著减少了体积和功耗。晶体管计算机比真空管计算机更可靠、更经济,并且开始在商业和学术界得到广泛应用。代表设备包括IBM 7090系列。
-
第三代:集成电路计算机(Third Generation: Integrated Circuit Computers, 1965-1980) 🧩:
- 集成电路(Integrated Circuit, IC)的引入使得计算机的运算速度和存储容量得到了进一步的提升。集成电路将多个晶体管集成在一个芯片上,大大减少了电路的复杂性和体积,同时提高了计算效率。代表性设备包括IBM System/360系列,这也是现代主流计算机架构的起源。
-
第四代:超大规模集成电路(VLSI)计算机(Fourth Generation: VLSI Computers, 1980-) 💾:
- VLSI(超大规模集成电路,Very Large Scale Integration)技术将数以百万计的晶体管集成到单个芯片上,使得计算机的处理能力大幅提升。这一时期,个人计算机(PC)和移动设备开始普及,计算机逐渐进入了千家万户。代表性设备包括Apple Macintosh和IBM PC。
背景 🌐:计算机的发展不仅是技术的进步,更是社会需求的推动。从最初的科学计算工具到今天的多功能个人设备,计算机已经成为现代社会不可或缺的一部分。它们不仅在科学研究中发挥重要作用,还彻底改变了我们的工作、娱乐和社交方式。
总结 🎓
通过这六个部分,我们从计算与算法的基本概念出发,逐步探讨了人类计算器的历史、现代计算机与传统计算工具的比较,最后通过图灵机的抽象模型以及计算机的发展历史,奠定了对现代计算机的基本认识。这一章为下章深入探讨现代计算机的内部结构与运作机制奠定了坚实的基础。
相关文章:

【ShuQiHere】上章:计算与计算机的基础概念
【ShuQiHere】✨ 在当今数字化社会,计算机已无处不在,从智能手机到人工智能应用,影响深远。然而,计算机并非一开始就如此强大。它经历了从手动工具、机械装置到电子计算机的演变。本章将回顾计算与算法的基本概念,探讨…...

前端框架有哪些?全面解析主流前端框架
一、React React 是由 Facebook 开发和维护的一个前端框架,它专注于构建用户界面。React 采用组件化的开发模式,允许开发者将用户界面拆分成多个可复用的组件。 主要特点 组件化: React 的核心是组件,它允许开发者将界面拆分成独立的、可复…...

4G MQTT网关在物联网应用中的优势-天拓四方
随着物联网(IoT)技术的飞速发展,各种设备和系统之间的互联互通变得日益重要。MQTT(Message Queuing Telemetry Transport)作为一种轻量级的发布/订阅消息传输协议,因其高效、可靠、简单的特性,在…...

【网上商城项目结构】
文章目录 前言一、网站前台二、运营商后台三、商家管理后台四、系统架构五、数据库设计六、关键技术总结 前言 网上商城项目结构通常包括网站前台、运营商后台和商家管理后台三个子系统,以及多个功能模块,如门户、搜索、购物车、订单、秒杀、个人中心等…...

VMware-Ubuntu Server安装教程
整理了B站和考拉软件上的信息 VMware安装 1.下载完成后,鼠标右击【VMware Workstation Pro 17.5.1】压缩包,选择【解压至此】 2.打开解压后的文件夹,鼠标右击【VMware17.5】选择【以管理员身份运行】 3.点击【下一步】 4.勾选【我接受许可协…...

从hadoop平台下载文件到本地Windows
一、只能上传文件,不能下载 1、原因: 如果在Windows中没有配置hadoop的环境变量,用idea远程连接上hadoop平台之后,只能往hadoop上推送数据文件,并不能下载文件,因为下载时hadoop会检测本地有无hadoop环境配置,所以我们需要安装winutils,在windows本地模拟一个hadoop环…...

MySQL-CRUD入门2
文章目录 数据的查询(补充)条件查询关于SQL语句的执行顺序分页查询(LIMIT) 数据的修改数据修改基础知识 数据的查询(补充) 这一节接着写, 包括数据的查询(补充), 数据的更新, 数据的删除 条件查询 其实就是根据给定的一些条件, 然后过滤掉不符合实际情况的记录, 把符合条件的…...

高级java每日一道面试题-2024年9月06日-基础篇-Java中的PO、VO、BO、DO、DAO、DTO、POJO是什么意思?
如果有遗漏,评论区告诉我进行补充 面试官: Java中的PO、VO、BO、DO、DAO、DTO、POJO是什么意思? 我回答: PO持久化对象(Persistent Object) PO是持久化对象,用于表示数据库中的实体或表的映射 通常与数据库表的结构和字段对应 PO的属性对…...

MFC读取PC6408板卡输入信号实例
本程序基于前期我的博客文章《MFC用信号灯模拟工控机数字量输入信号实时采集实例(源码下载》 1、在TheradDlg.h中相关代码 ... private:unsigned short nAddr; ... TheradDlg.cpp中相关代码 #include "pc60002k.h"BOOL CTheradDlg::OnInitDialog() { ..…...

@Async的使用说明
在 Spring Boot 中,Async 注解用于实现异步方法调用,允许方法在单独的线程中执行,从而避免阻塞主线程,提升应用的并发处理能力。 1. 基本用法 在 Spring Boot 中使用 Async 很简单,主要步骤如下: 步骤 1…...

经验笔记:SQL调优
SQL调优经验笔记 引言 SQL调优是确保数据库系统高效运行的重要环节。通过对查询语句、数据库配置、硬件资源等方面进行优化,可以显著提升数据库性能,进而增强应用程序的整体表现。以下是基于常见调优手段和实践经验整理的一份经验笔记。 1. 查询语句优…...

Selenium使用浏览器用户配置进行测试
本文主要介绍了如何在使用Selenium WebDriver进行自动化测试时,创建和使用自定义的Firefox配置文件。 什么是Firefox配置文件? Firefox会将用户的个人信息,如书签、密码和用户偏好设置存储在一个称为配置文件的文件集合中,这些文…...

virsh命令的使用
virsh 是一个用于管理虚拟机的命令行工具,它与 libvirt 服务配合使用,支持对虚拟机的创建、配置、启动、停止等操作。 1、列出虚拟机 列出正在运行的虚拟机: virsh list列出所有虚拟机(包括未启动的): …...

【来学Vue吧】创建一个Vue项目
🌟 嗨,我是命运之光! 🌍 2024,每日百字,记录时光,感谢有你一路同行。 🚀 携手启航,探索未知,激发潜能,每一步都意义非凡。 首先需要配置Vue环境…...

C#迭代器方法和yield用法
一.迭代器方法介绍 可使用foreach循环进行遍历的方法,称为迭代器方法。 迭代器方法使用yield return语句返回元素。 到达yield return语句时,会记住当前在代码中的位置。 下次调用迭代器函数时,将从该位置开始执行。换言之,如果…...

斗破C++编程入门系列之二十六:数组、指针和字符串:动态内存分配和释放(一星斗师)
斗破C目录: 斗破C编程入门系列之前言(斗之气三段) 斗破C编程入门系列之二:Qt的使用介绍(斗之气三段) 斗破C编程入门系列之三:数据结构(斗之气三段) 斗破C编程入门系列之…...

Servlet 和 Spring Boot 的请求处理流程区别和例子
当然可以为您绘制一个流程图,展示 Servlet 和 Spring Boot 的请求处理流程。这将帮助我们更直观地比较两者的工作方式。 #mermaid-svg-PgFEmecUmDhvxxtQ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-P…...

C++笔记之map的实用操作
C++笔记之map的实用操作 文章目录 C++笔记之map的实用操作1.初始化1.1.使用列表初始化1.2.使用 `insert` 方法1.3.使用 `emplace` 方法1.4.复制构造1.5.移动构造2.赋值2.1.列表赋值2.2.插入元素2.3.批量插入3.取值3.1.使用 `[]` 操作符3.2.使用 `at()` 方法3.3.检查键是否存在3…...

Lombok失效:报错 找不到符号 Springboot项目
错误原因,Springboot项目为Lombok提供了版本管理的支持,所以引入Lombok依赖的时候,无需手动指定版本,手动指定了可能会导致依赖冲突。 去掉手动指定的版本,问题解决...

Linux 基础命令-文件与目录操作
在 Linux 操作系统中,文件和目录是组织和管理数据的核心单元。作为一个命令行驱动的操作系统,Linux 提供了一系列强大且灵活的命令来操作文件和目录。掌握这些命令不仅是管理 Linux 系统的基础,也是高效使用 Linux 环境的关键。 一、文件与目…...

Delphi 12.1安卓APP开发中获取硬件信息及手机号
Demo与代码已上传到CSDN下载。 这里简单说一下代码内容,完整代码请自行下载,不清楚的欢迎留言交流。 前言 演示Demo使用了我自己开发的一个控件,TLayoutPro 《Delphi D10.3 LayoutsPro 控件简介 -避免输入焦点被虚拟键盘遮挡》请查看并下载控…...

STM32 - 笔记4
1 STM32 示波器 基于STM32的简易示波器项目(含代码)——HAL库_stm32简易示波器 基于STM32的简易示波器项目(含代码)——HAL库_stm32简易示波器_stm32示波器-CSDN博客 【强烈推荐】基于stm32的OLED各种显示实现(含动态图)_stm32oled以十六进制显示-CSDN博客 STM32示波器…...

【H2O2|全栈】更多关于HTML(1)HTML进阶(一)
目录 HTML进阶知识 前言 准备工作 标签的扩展(一) 本文中的标签在什么位置使用? title标签 meta标签 name viewport referrer http-equiv charset content link标签 实际案例 可视部分 代码分析 其他标签 base标签 styl…...

新160个crackme - 053-devilz KeyGen me#3
运行分析 解压出来4个文件运行程序发现要破解Name和Serial PE分析 32位,petite壳 手动脱壳 使用windows XP虚拟机OD打开程序按2下F8,发现ESP变红,根据ESP定律,在该地址右键 -> HW break下断点 继续按2下F9,来到灰色…...

ORA-12514
第一步,去这个地址,查查你的服务名是否存在 第二步,没查到就是你服务名写错了,查到了就退出我的解答...

MyBatis-PlusDruid数据源
MyBatis-Plus简介 MyBatis-Plus(简称MP)是一个MyBatis的增强工具,它在MyBatis的基础上进行了增强而不改变其原有的功能,旨在简化开发、提高效率。以下是对MyBatis-Plus的详细简介: 一、基本概述 定义:MyBat…...

C#中chart绘制曲线
官网资料:Chart 类 (System.Windows.Forms.DataVisualization.Charting) | Microsoft Learn 类的 Chart 两个重要属性是 Series 和 ChartAreas 属性,这两个属性都是集合属性。 Series集合属性存储Series对象,这些对象用于存储要显示的数据以…...

c++数据结构算法题讲解
那么从本期文章开始,会尽量带大家一起刷题 第一题 题目 关键词 思路 源代码 class MinStack { public: void push(int val) { _st.push(val); if(_minst.empty() || val < _minst.top()) { _minst.push(val); } } void pop() { if(_st.top() _minst.top()) {…...

间隙锁在其他数据库管理系统中的类似实现
间隙锁在其他数据库管理系统中的类似实现 一、引言 在 MySQL 中,间隙锁在可重复读事务隔离级别下起到了防止幻读的重要作用。那么在其他数据库管理系统中,是否也有类似的机制来实现类似的功能呢?了解其他数据库管理系统中与间隙锁类似的实现,可以帮助我们更好地理解不同数…...

OpenCV 与 YoloV3的结合使用:目标实时跟踪
目录 代码分析 1. YOLO 模型加载 2. 视频加载与初始化 3. 视频帧处理 4. 物体检测 5. 处理检测结果 6. 边界框和类别显示 7. 帧率(FPS)计算 8. 结果显示与退出 9. 资源释放 整体代码 效果展示 总结 代码分析 这段代码使用 YOLO(…...