- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
设为「⭐️ 星标 」带你从 基础入门 到 全栈实践 再到 放弃学习 ! 涉及 网络安全运维、应用开发、物联网IOT、学习路径 、个人感悟 等知识分享.
希望各位看友多多支持【关注、点赞、评论、收藏、投币】,助力每一个梦想.
【 WeiyiGeek Blog's - 花开堪折直须折,莫待无花空折枝 】 作者主页: 【 https://weiyigeek.top 】 博客地址: 【 https://blog.weiyigeek.top 】 作者答疑学习交流群:欢迎各位志同道合的朋友一起学习交流【 点击 👉 加入交流群 】, 或者关注 公众号 回复【学习交流群】.
前言:当前作为一名IT互联网从业者,计算机技术日新月异,每天都有新概念、新技术的出现,而像我这样的万金油来说,越学到后面就越吃力,遇到瓶颈问题也随之增多,因为本身非科班出身,加之半路出家,针对于计算机基础知识掌握不牢或者说是不完整,所以我痛定思痛,下定决心重新学习计算机相关基础知识,从计算机科学导论,到计算机组成原理,到计算机网络、到操作系统,到数据结构,到程序算法、到应用开发、到安全运维开发.
今天 (2022年9月1日) 便从 大神之路-起始篇 ,我们要站在巨人们的肩膀上,进行 计算机科学导论 的 学习,我将总结学习成果笔记,帮助后续入门学习的朋友.
随着现代计算机的发明,带来了新的学科,即计算机科学(简称 计科 )一词上一个非常广泛的概念,在此处我没将其定义为 计算机相关的问题 ,现在 计算机科学 被划分成几个领域,总结归纳为两大类 系统领域 和 应用领域 . 。
参考书籍:【计算机科学导论-第三版 (Foundations Of Computer Science - Third Edition) 】作者: [美] 贝赫鲁兹.佛罗赞 (Behrouz Forouzan) PS: 当下已经第四版了、 。
参考视频: 【计算机导论】计算机科学导论(大神之路-起始篇) 。
原文地址: https://mp.weixin.qq.com/s/ddQ-Quk1uFqtjX6ycl8Rzg 。
什么是图灵机?
1937年 由 Alan Turing (阿兰•图灵)首次提出了一个通用计算设备的 设想 , 即所有的计算都可能在一种特殊的机器上执行,这就是现在所说的图灵机.
实际上 图灵机 对这样一种机器进行了数学上的描述,而不是建造一台真实的机器.
什么是通用图灵机?
通用图灵机是对现代计算机的首次描述,该机器只要提供了合适的程序就能做任何运算.
图灵奖( Turing Award ):全称A.M.图灵奖( ACM A.M Turing Award ),是由美国计算机协会(ACM)于1966年设立的计算机奖项,名称取自艾伦·麦席森·图灵( Alan M. Turing ),旨在奖励对计算机事业作出重要贡献的个人 .
在讨论图灵模型之前,此处将计算机定义为数据处理器 ,此时暂且把计算机可以被看作一种接收数据输入、处理数据并产生数据输出的 黑盒 .
该模型产生的问题,是没有确定计算机能处理的数据是什么. 。
图灵模型是一个适用于通用计算机的更好模型,该模型添加了一个额外的元素—程序 到不同的计算机器中.
程序:是用来告诉计算机对数据进行处理的指令集合.
在这个图灵模型中,输出数据是依赖两方面因素的结合作用: 输入数据和程序 ,其关系如下.
根据输入
的不同而不同。 根据程序
的不同而不同。 输出结果应该是一致的
。
在 1944 - 1945 年期间,冯•诺依曼指出,鉴于程序和数据在逻辑上是相同的,因此程序也能存储在计算机的存储器中。所以实际上该模型也基于图灵模型(通用图灵机)建造.
基于冯•诺依曼模型建造的计算机分为 4 个子系统: 存储器、算术逻辑单元 ALU、控制单元 CU 和输入/输出单元 , 现在系统通常是分为五个组成部分,只是将 输入/输出单元 分别独立出来.
存储器 : 用来存储数据和程序的区域 。
算术逻辑单元( ALU ) : 用来进行算数运算和逻辑运算的地方 。
控制单元(CU):对存储器、 算术逻辑单元、 输入 / 输出等子系统进行统筹控制操作 .
输入 / 输出单元:输入子系统负责从计算机外部接收输入数据,输出子系统负责从计算机处理结果输出到计算机外部.
温馨提示:输入/输出子系统的定义相当广泛,它们还包含辅助存储设备,例如,用来存储处理所需的程序和数据的磁盘和磁带等。当一个磁盘用于存储处理后的输出结果,我们一般就可以认为它是输出设备,如果从该磁盘上读取数据,则该磁盘就被认为是输入设备.
在冯•诺依曼模型中要求 程序 必须存储在 存储器(内存) 中.
现代计算机的存储单元用来存储程序和数据,这意味着程序和数据应该有相同的格式,实际上它们都是以 位模式( 0 和 1 序列) 存储在 存储器(内存) 中.
在冯•诺依曼模型中规定了 一段程序 是由一组 数量有限 的 指令 组成.
通过控制单元(CU)从内存中提取 一条指令,解释指令,接着执行指令 ,也就是说指令是一条接着一条顺序执行的,所以指令的顺序执行是基于冯•诺依曼模型的计算机的初始条件.
温馨提示:有时一条指令可能会请求控制单元以便跳转到其前面或者后面的指令去执行,但是这并不意味着指令没有按照顺序来执行.
通常我们可以认为计算机由三大部分组成: 计算机硬件、计算机数据、计算机软件 。
描述:当今的计算机硬件基于冯•诺依曼模型,且包含四部分,尽管可以有不同类型的存储单元,不同类型的输入/输出子系统等.
例如,我们的个人台式计算机,通常由CPU、内存、主板、硬盘、显卡、机箱电源、机箱、输入设备(鼠标、键盘)、输出设备(显示器)等硬件组装而成.
在冯•诺依曼模型中清楚地将一台计算机定义为一台数据处理机,它可以接收输入数据,处理并输出相应的结果.
此处不得不提到 存储数据 与 组织数据 :
存储数据:计算机本身是一台电子设备,最好的数据存储方式应该是 电子信号 ,以电子信号的出现和消失 ( 位模式)来存储数据,即以(1、0)两种状态之一来存储数据。 但是日常生活中的数据(文本、 图像、 声音 、 视频等)不是以位模式存储的,不能直接存储到计算机中,除非将这类数据转换为位模式.
组织数据:尽管数据只能以一种形式(位模式)存储在计算机内部,但在计算机外部却可以表现为不同的形式,所以在数据存储到计算机之前,需要合理有序的组织成不同的格式.
为什么使用位模式?
因为电子设备对位模式的实现简单(通电或不通电,高电压和低电压 ) 。
如何有效地将数据组织成不同的实体和格式?
如今,数据并不是按照杂乱无章的次序来组织信息的。数据被组织成许多小的单元,再由这些小的单元组成更大的单元等等.
温馨提示:计算机(以及数据处理表示法)开创了一门新兴的研究领域即 数据组织 .
在图灵或冯•诺依曼模型的主要特征是 程序 的概念,下面简单了解一下程序相关的概念:
程序存储与指令序列 。
在冯•诺依曼模型中,这些程序被存储在计算机的存储器中,所以存储器中不但要 存储数据 ,而且还要 存储程序 .
在冯•诺依曼模型中, 要求程序必须是有序的指令集,每一条指令操作一个或者多个数据项.
为什么程序必须由不同的指令集组成?
答案:当然为了重用性(复用),图灵模型和冯•诺依曼模型通过仔细地定义 计算机可以使用的不同指令集,从而使得编程变得相对简单,程序员通过组合这些不同的指令来创建任意数量的程序。(例如,高级语言中函数也是为了代码重用) 。
即同一个指令可以与其他功能指令相互组合从而实现不同的程序功能.
程序算法 。
定义:程序按一系列的指令执行使得编程成为可能,程序员通过指令集中的指令组合完成特定的运算任务,按照有序指令解决问题的的方法就是 算法 .
程序语言 。
机器语言:早期时代,程序员编写位模式( 0 和 1 的组合)的指令来完成任务 。
符号语言:随着任务的复杂性越来越高,科学家研究 使用符号来表示位模式指令 ,这样计算机编程语言就诞生了,例如,汇编语言 。
软件工程 。
定义:软件工程是指结构化程序的设计和编写, 为高效的程序开发而诞生的一门理论体系 。
操作系统 。
定义:计算机操作系统最初是为程序访问计算机部件提供方便的一种管理程序 。
今天操作系统所完成的工作远不止这些,例如,我们使用的Windows操作系统,可以让我们在系统中运行各类应用软件,作为用户我们并不需要了解这个软件到底是怎样加载到内存,以及被CPU调用执行的,我们只关心其展示或者说输出的结果,这便是操作系统的功劳。(后续课程会深入讲解,此处简单了解即可) 。
了解一下计算机的发展历史还是非常有必要的,因为在考试中常常会涉及到一部分,并且了解其发展历史更能够看到让我们体会到站在巨人的肩膀上,此处我们将其计算机的历史分为三个阶段,即 机械计算机器阶段(1930年以前)、电子计算机阶段(1930〜1950年)、现代计算机阶段(1950年至今) .
此阶段时间在1930年以前,人们发明了一些用来进行计算的机器,它们与计算机的现代概念几乎没有相似之处.
布莱斯•帕斯卡(Blaise Pascal)
发明了`Pascsline``, 它是一个用来进行加减运算的计算器。 戈特弗里德•莱布尼茨(Gottfried Leibnitz)
发明了 莱布尼茨之轮(Leibnitz's Wheel)
,它是一个既能够做乘除运算又能做加减运算的一台更加复杂的计算机器。 约瑟夫-玛丽•雅卡尔(Joseph-Marie Jacquard)
发明了 雅卡尔提花织机(Jacquard loom)
,它是第一台利用存储和编程概念的机器,这种 织布机
是利用穿孔卡(类似于存储程序)来控制在织布过程中经线的提升。 査尔斯•巴比奇(Charles Babbage)
发明了一种差分引擎,它不仅能够很容易地进行数学运算,还可以解多项式方程,后来随之发明了一种叫做 分析引擎的机器
,在某种程度上和现代计算机的概念类似。 赫尔曼•何勒里斯(Herman Hollerith)
设计发明并制造出 具有编程能力的机器
,该机器可以自动阅读、计数和排列存储在穿孔卡上的数据。 温馨提示:到了20世纪, 尼克劳斯•沃思 (Niklaus Wirth) 发明了一种结构化的程序设计语言,他将其命名为Pascal语言,用来纪念这位发明首台机械计算器的科学家.
此阶段在 1930~1950 年之间百花共鸣,由电子计算机工业先驱的科学家们发明了一些计算机,大致分为两类即 早期的电子计算机 与 基于冯•诺依曼模型的计算机 . 。
早期的电子计算机 早期计算机并不是将程序存储到存储器中,所有的计算机都是在外部进行编程的。有以下5种比较杰出的计算机:
1939年,由 约翰•阿塔纳索夫(John V. Atanasoff)及其助手克利福德•贝里(Clifford Berry)发明的 ABC ( AtanasofF Berry Computer) ,它主要用于实现解线性方程的系统,也是第一台用来完成特定任务的计算机是通过将信息进行电子编码来实现其功能的.
1939年左右,由德国数学家康拉德•朱斯(Konrad Zuse)设计出通用计算机,并命名为“Z1”.
20世纪30年代,美国海军和IBM公司在哈佛大学发起创建了一项工程,在霍华德•艾肯(Howard Aiken)的直接领导下发明建造了一台名为Mark I的巨型计算机,它即使用了电子部件,也使用了机械部件.
1943 年,阿兰•图灵发明了一台名为巨人(Colossus computer),它是世界上最早的电子数字机器,是为破译德国Enigma密码而设计的.
1946 年,由约翰•莫奇勒(John Mauchly)和普雷斯波•埃克特(J. Presper Eckert)发明了第一台通用的、完全电子的计算机 ENIAC (Electronic Numerical Integrator and Calculator,电子数字集成器和计算器) , 它利用了将近18 000个集成块,有100英尺长,10米英尺高,重达30吨.
温馨提示:上述5种计算机的存储单元仅仅用来存放数据,它们利用配线或开关进行外部编程.
基于冯•诺依曼模型的计算机 前面提到冯•诺依曼提出了程序和数据应该存储在存储器中,这样做的好处是当需要进行一项新的任务,你只需要改变程序,而不用重新布线或者调节成百上千的开关.
冯•诺依曼提出的EDVAC报告
发明制造了 EDSAC - 电子延迟存储自动计算器 ( Electronic delay storage automatic calculator ),它是第二台存储程序电子计算机。 此阶段为 1950年至今,至此之后出现的计算机都差不多都是基于冯•诺依曼模型,它们变得更快、更小、更便 宜,但原理几乎是相同的.
计算机科学引发了一些周遭的问题,其中最为普遍的可以归类为 社会问题 和 道德问题 .
社会问题 。
道德问题 。
原文地址 : https://blog.weiyigeek.top/2022/5-30-692.html 。
本文至此完毕,更多技术文章,尽情期待下一章节! 。
温馨提示: 唯一极客技术博客 文章在线浏览【 极客全栈修炼 】小程序上线了,涉及网络安全、系统运维、应用开发、物联网实战、全栈文章,希望和大家一起学习进步,欢迎浏览交流!(希望大家多多提提意见) 。
专栏书写不易,如果您觉得这个专栏还不错的,请给这篇专栏 【点个赞、投个币、收个藏、关个注,转个发,留个言】(人间六大情) ,这将对我的肯定,谢谢!.
温馨提示: 由于作者水平有限,本章错漏缺点在所难免,希望读者批评指正,并请在文章末尾留下您宝贵的经验知识,联系邮箱地址 master@weiyigeek.top 或者关注公众号 WeiyiGeek 联系我.
最后此篇关于大神之路-起始篇|第1章.计算机科学导论之【基础绪论】学习笔记的文章就讲到这里了,如果你想了解更多关于大神之路-起始篇|第1章.计算机科学导论之【基础绪论】学习笔记的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我是一名优秀的程序员,十分优秀!