劳动节程序员应该知道的知识——计算机

这篇具有很好参考价值的文章主要介绍了劳动节程序员应该知道的知识——计算机。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

现在AI崛起,计算机已经成为我们不可或缺的一部分,几乎在所有行业和领域都有广泛应用
五一已经快要过去了,程序员们应该都放假了,那我们是不是应该去了解了解我们的伙伴——计算机,了去解计算机是怎样工作的?
             
下面我会尽量使用通俗的语言去解释计算机是如何工作的, 希望让大家了解计算机的核心工作机制后,打破 计算机的神秘感,并且有利于理解我们平时编程时的一些行为、动作的历史渊源。
我们先来了解了解计算机的发展史!

 计算机发展史

计算的需求在人类的历史中是广泛存在的,发展大体经历了从 一般计算工具 机械计算机 到目前的 电子计算机 的发展历程。
其实计算机在很早以前就处处是它的影子:

劳动节程序员应该知道的知识——计算机

劳动节程序员应该知道的知识——计算机

 计算机发展的主要历程

  1. 机械计算时代:在19世纪和20世纪初期,人们使用机械装置进行计算。最早的计算机由查尔斯·巴贝奇设计,称为“分析机”。但是,这种机械计算机很大,准确度也不高。
  2. 电子管计算时代:在20世纪30年代,电子管的发明引领了计算机的发展。美国的阿塔纳索夫-贝瑞计算机(Atanasoff-Berry Computer)被认为是第一台真正的电子计算机。而艾伦·图灵设计的英国Bombe解密设备也是采用电子管技术。
  3. 晶体管计算时代:20世纪50年代,晶体管取代了电子管,成为新一代计算机的核心部件。这使得计算机变得更小、更快、更可靠和更经济。IBM公司的System/360系列计算机,是晶体管计算机的杰出代表。
  4. 集成电路计算时代:20世纪60年代,集成电路的发明带来了计算机革命。集成电路是将多个晶体管、电阻器、电容器等元件集成在一起形成的微型电路板,可以大幅度压缩计算机的体积和成本。DEC公司的PDP-8和IBM公司的System/370系列计算机是典型的使用集成电路技术的计算机。
  5. 微处理器计算时代:20世纪70年代,Intel公司推出了第一款微处理器芯片(Intel 4004),这标志着个人计算机的诞生。微处理器是一种由CPU、控制单元和存储器组成的芯片,它使得整个计算机系统可以集成在一个小型设备中。Apple II和IBM PC是微处理器计算机的代表。
  6. 个人计算机时代:20世纪80年代,个人计算机开始走向成熟。IBM PC及其兼容机成为最主流的个人计算机,Macintosh则成为了另一种受欢迎的操作系统。计算机逐渐普及到家庭和办公场所,从此改变了人们的工作和生活方式。
  7. 互联网时代:20世纪90年代,互联网的普及和发展彻底改变了计算机的应用方式。人们可以通过互联网进行电子邮件、在线购物、社交媒体等活动,计算机已经成为人们生活和工作中不可或缺的一部分。
  8. 移动计算时代:21世纪以来,移动计算开始崛起。智能手机和平板电脑的出现,使得人们随时随地可以进行各种计算和通讯活动。此外,云计算技术也逐渐发展壮大,为人们提供更方便、高效、安全的计算资源。
人类对计算的需求,驱动我们不断的发明、改善计算机。目前这个时代是 电子计算机 的时代,发展的 潮流是:更快速、更稳定、更微型。

 图灵与冯诺依曼

说起计算机我们首先要了解的就是这两位祖师爷,一位是从理论上奠定了计算机基础,另一位是在发明电子计算机中所起到关键性作用,被西方人誉为“计算机之父”。

图灵

劳动节程序员应该知道的知识——计算机

 谁年轻时不是一个帅哥呢?😃

 人物经历

艾伦·麦席森·图灵(Alan Mathison Turing)是一位英国数学家、逻辑学家和密码学家,被誉为计算机科学之父。他的一生经历充满了传奇色彩。

1912年6月23日,图灵出生在英国的伦敦,是一个富有的家庭的儿子。在小时候,他就表现出了超群的智力和对数学的天赋。他自幼勤奋好学,阅读了大量的数学书籍和论文,十分喜欢研究数学问题。

1929年,图灵考入剑桥大学国王学院学习数学,并在1931年获得了数学荣誉学士学位。随后,他继续在剑桥大学攻读博士学位,并在1936年发表了《可计算数及其在问题上的应用》一文,提出了“图灵机”的概念,这是计算机科学中一个非常重要的理论基础。

到了二战期间,图灵加入了英国情报局,负责破解德国的密码系统。他主导开发了一种名为“图灵机器”的机械设备,可以自动破解德国军方的密电。这项工作对于英国在二战期间的胜利起到了重要的作用。

战争结束后,图灵继续在剑桥大学从事计算机和人工智能的研究。他是第一个提出“人工智能”一词的人,也是计算机科学中最有影响力、最具创造性的人物之一。不幸的是,他的生命经历被彩虹情色事件打破。1952年,他因为涉嫌同性恋而被定罪,被迫接受荷尔蒙治疗,并失去了国家安全机构的任职资格。在此背景下,1954年6月7日,图灵在自己家中去世,死因是氰化钾中毒,享年42岁。

直到20世纪70年代,才有越来越多的人们开始重视图灵的成就和贡献。1983年,英国政府正式宣布向图灵道歉,称他是一位“伟大的数学家”,并对他所受到的不公当场表示遗憾。1999年,在《时代周刊》评选的“20世纪最杰出100人”名单上,图灵名列第46位。

总的来说,图灵是一位伟大的数学家、逻辑学家和密码学家,他的成就和贡献影响了整个计算机科学领域,并为人工智能的发展奠定了基础。他的一生经历虽然注定有些不幸和戏剧性,但是他所留下来的精神和思想,将永存于计算机科学史上。

 图灵机

劳动节程序员应该知道的知识——计算机

图灵机,又称图灵计算机指一个抽象的机器,于1936年提出的一种抽象的计算模型,即将人们使用纸笔进行数学运算的过程进行抽象,由一个虚拟的机器替代人类进行数学运算。它有一条无限长的纸带,纸带分成了一个一个的小方格,每个方格有不同的颜色。有一个机器头在纸带上移来移去。机器头有一组内部状态,还有一些固定的程序。在每个时刻,机器头都要从当前纸带上读入一个方格信息,然后结合自己的内部状态查找程序表,根据程序输出信息到纸带方格上,并转换自己的内部状态,然后进行移动 。

 想详细了解可看: 什么是图灵机 - 知乎 (zhihu.com)

 冯诺依曼

劳动节程序员应该知道的知识——计算机

 网上流传甚广的一张图:年轻人,你渴望力量吗?🤩(可见大家对祖师爷的崇拜)

劳动节程序员应该知道的知识——计算机

人物经历

约翰·冯·诺依曼(John von Neumann)是一位匈牙利出生的美国数学家、物理学家和计算机科学家,也是现代计算机体系结构和程序设计的重要先驱之一。

1903年12月28日,冯诺依曼出生在匈牙利的布达佩斯市,是一个富裕的犹太人家庭的孩子。他自幼表现出了卓越的智力和对数学的天赋。在成长过程中,他接触了许多不同领域的知识,并表现出了对物理学、化学和哲学等方面的浓厚兴趣。

1921年,冯诺依曼进入柏林大学学习化学,并于1925年获得了博士学位。随后,他转向了数学领域,并成为了德国著名数学家希尔伯特的学生之一。在此期间,他发表了一系列关于量子力学、矩阵论和函数分析等方面的论文,展现了卓越的数学才华。

1930年,冯诺依曼来到美国,并开始在普林斯顿大学担任数学系教授。在普林斯顿工作的期间,他与爱因斯坦等人合作,成为了美国原子弹计划的顾问之一,并对核武器的研制做出了重要贡献。

二战结束后,冯诺依曼继续从事计算机和物理学的研究,并提出了现代计算机体系结构的重要概念(冯诺依曼体系)。他是第一个将计算机内部存储程序的思想化为实际方案的人,并提出了“存储程序计算机”和“指令集架构”的概念。这些概念对现代计算机的设计和开发产生了深远的影响,也为冯诺依曼赢得了“计算机科学之父”的美誉。

1955年,冯诺依曼被诊断出罕见的骨髓增生性疾病,并于当年2月8日去世,享年51岁。他留下来的贡献和成就不仅影响了计算机科学领域,也影响了物理学、数学和其他许多领域的发展。

总的来说,冯诺依曼的一生经历充满了传奇色彩。他是一位极具才华的数学家、物理学家和计算机科学家,为现代计算机体系结构和程序设计的发展做出了重要贡献。他对于人类思维方式的影响和贡献将永存于历史长河中。

上面说到冯诺依曼体系,直到现在大部分计算机仍然遵守 冯诺依曼体系结构。下面我就来讲讲冯诺依曼体系

 冯诺依曼体系

冯诺依曼体系是一种计算机系统的结构和工作原理,也称为冯诺依曼计算机体系结构。该体系结构由匈牙利数学家约翰·冯诺伊曼于1945年提出,被誉为现代计算机体系结构的奠基之作。

冯诺依曼体系结构主要分为四个部分:存储器、算术逻辑单元(ALU)、控制器和输入/输出(I/O)设备。其中,存储器用于存储指令和数据,ALU负责进行算术、逻辑运算等操作,控制器则负责控制指令的执行过程,而I/O设备则用于与外部世界交互。

在冯诺依曼体系结构中,所有指令和数据都以二进制形式存储在内存中CPU通过总线来读取和写入内存中的数据。CPU可以根据指令集中的指令来执行不同的操作,如加法、减法、乘法、除法等算术运算,以及逻辑运算、比较运算、移位等操作。同时,CPU还可以通过控制器来控制程序的执行流程,实现分支、循环、函数调用等功能。所有这些操作都是由指令集中的指令来实现的。

冯·诺依曼体系的一大优势是其具有较高的通用性,即可以运行各种不同的程序。同时,由于其存储程序的特性,使得修改程序变得更加方便,这是其他类型计算机体系结构所不具备的优势之一。

冯诺依曼体系结构的设计使得计算机能够以通用的方式进行程序设计,并且能够将计算机内部的运算和存储空间分离开来。这对于现代计算机科学的发展具有历史性的意义。同时,冯诺依曼体系结构的出现也标志着计算机科学从硬件设计上实现了程序可重用的革命。

我只是简单介绍了一下冯诺依曼体系,想详细了解的小伙伴可看三分钟带你了解冯.诺依曼结构 - 知乎 (zhihu.com)

劳动节程序员应该知道的知识——计算机

  • CPU 中央处理器: 进行算术运算和逻辑判断.
  • 存储器: 分为外存和内存, 用于存储数据(使用二进制方式存储)
  • 输入设备: 用户给计算机发号施令的设备.
  • 输出设备: 计算机用户汇报结果的设备.

 计算机小常识:

针对存储空间
硬盘 > 内存 >> CPU
针对数据访问速度  
CPU >> 内存 > 硬盘

计算机的工作原理

计算机的工作原理可以简单地概括为:输入、处理和输出。

  1. 输入(Input):计算机需要从外界获取数据和指令,例如通过键盘、鼠标、扫描仪等设备输入数据,并通过网络或存储设备读取程序。

  2. 处理(Processing):计算机对输入的数据和指令进行处理,并产生结果。处理过程包括数据运算、逻辑判断、控制流程等操作。这是计算机最核心的功能,主要由 CPU(中央处理器)和内存组成,并通过各种输入/输出设备与用户交互。

  3. 输出(Output):计算机将处理结果输出给用户,如显示器、音频设备、打印机等。用户可以看到或听到计算机处理的结果。

在计算机内部,数据和指令通常以二进制形式表示和处理。二进制是一种只包含0和1的数字系统,与十进制相比,它可以更直接地映射到计算机存储器中的电子信号。数据和指令都可以被存储在计算机内存(RAM)中,由CPU通过总线访问。

计算机的工作原理基于通用图灵机模型。这个模型定义了一个机器状态、指令集、数据格式和输入输出方式的规范,可应用于任何计算机体系结构。实际上,现代计算机体系结构包括 CPU、内存、I/O 控制器等组件,并使用操作系统来协调它们的工作。操作系统提供了许多高级函数和服务,隐藏了底层硬件细节,使得程序员可以更容易地编写程序。

可以看出cpu是计算机的灵魂所在,那下面我们来认识认识cpu,看看cpu是如何工作的。

cpu的基本工作流程

劳动节程序员应该知道的知识——计算机

CPU(中央处理器)是计算机的核心部件,它的工作流程可以分为以下三个步骤。

        1、取指令阶段(Instruction Fetch)🍉

CPU从内存中读取下一条要执行的指令,并将其存储在指令寄存器中。这些指令按照地址顺序存放在内存中,由程序计数器(Program Counter,PC)来记录下一条指令的地址。取指令阶段通常需要多次执行,以读取多个指令。

        2、解码阶段(Instruction Decode)🍉

CPU从指令寄存器中读取指令,并对其进行解码。在这个阶段,CPU会确定该指令需要对哪些数据进行操作,以及操作的方式和结果存放的位置等信息。这些信息被存储在控制单元的控制信号中,用于指导CPU后续的执行过程。

        3、执行阶段(Execution)🍉

CPU根据指令解码阶段提供的控制信号,执行相应的操作,并将结果存储到寄存器或内存中。执行阶段包括算术逻辑运算、数据传输和控制转移等操作。其中,算术逻辑运算包括加法、减法、乘法、除法、位运算和逻辑运算等;数据传输包括从寄存器或内存中读取数据,以及将数据写入寄存器或内存中;控制转移包括跳转、分支和函数调用等操作。

以上三个阶段构成了CPU的主要工作流程。在实际应用中,为了提高CPU的性能和效率,通常会采用流水线(Pipeline)技术,使多条指令可以同时执行不同的阶段。这样可以大大缩短执行时间,提高计算机的运行速度。

劳动节程序员应该知道的知识——计算机

当然,电子计算机中的 CPU 可不像我们刚才那样,靠自己来驱动这个周期的运转,而是靠背后一个时钟来进行周期驱动的。
时钟频率(又译:时钟频率速度,英语: clock rate),是指同步电路中时钟的基础频率,它以“若干次周期每秒”来度量,量度单位采用 SI单位 赫兹(Hz)。它是评定 CPU 性能的重要指标。一般来说主频数字值越大越好。
时钟频率_百度百科 (baidu.com)
时钟频率是个什么概念?? - 知乎

 劳动节程序员应该知道的知识——计算机

cpu要完成上面工作,需要逻辑门算术逻辑单元 ALU、寄存器(Register) 和内存(RAM)、控制单元 CU、指令多种组件相互配合,可能有人不认识这些组件,下面我就来介绍介绍它们。

 逻辑门

电子开关 —— 机械继电器(Mechanical Relay)

机械继电器,也称为电磁继电器,是一种基于电磁原理工作的电气开关。它由线圈、铁芯、触点和弹簧等组成。当线圈通电时,会产生一个磁场,使得铁芯被吸引,同时触点也会跟随移动。当线圈断电时,铁芯会失去磁性,触点则会回到原位。通过这样的方式,机械继电器可以实现电路的开关控制。机械继电器可以用于各种电气设备中,如灯泡、家用电器、电机和汽车电气系统等。

劳动节程序员应该知道的知识——计算机

门电路(Gate Circuit)

门电路指的是一种基本逻辑电路,用于实现不同的逻辑函数。门电路通常由晶体管、二极管和其他电子元件组成。它们分为以下几种类型:

  1. 与门(AND Gate):当所有输入均为高电平时,输出为高电平。

  2. 或门(OR Gate):当任一输入为高电平时,输出为高电平。

  3. 非门(NOT Gate):输入为高电平时,输出为低电平;输入为低电平时,输出为高电平。

  4. 异或门(XOR Gate):当输入相同时,输出为低电平;当输入不同时,输出为高电平。

  5. 与非门(NAND Gate):当所有输入均为高电平时,输出为低电平。

  6. 或非门(NOR Gate):当任一输入为高电平时,输出为低电平。

除了以上提到的基本门电路之外,还有许多其他的门电路,如三态门(Tri-state Gate)、模拟开关(Analog Switch)、触发器(Flip-flop)等。在数字电子学中,门电路是构建其他数字电路的基础。

劳动节程序员应该知道的知识——计算机

算术逻辑单元 ALU(Arithmetic & Logic Unit)

劳动节程序员应该知道的知识——计算机

算术逻辑单元(ALU)是计算机中的一个核心组件,用于执行算术和逻辑运算。ALU 可以对两个二进制数进行加、减、乘、除等算术运算,并且还可以进行与、或、非、异或等逻辑运算。

一个标准的 ALU 通常由以下几个部分组成:

  1. 数据输入:用于接收要进行计算的数据,通常包括两个二进制数和一个控制位。

  2. 运算器:根据控制位决定所需的运算类型,如加法、减法、乘法、除法、比较、位移等。

  3. 状态寄存器:用于记录运算结果的状态信息,如是否进位、是否溢出等。

  4. 数据输出:将运算结果输出到其他部件或总线上。

ALU 在 CPU 中发挥着重要的作用,它能够快速有效地执行各种算术和逻辑操作,从而实现计算机的各种功能。实际上,大多数 CPU 都使用了多个 ALU,以提高计算效率并支持并行计算。此外,ALU 也被广泛应用于数字信号处理(DSP)、嵌入式系统、通信设备等领域。

由于算术逻辑单元(ALU)性能的高低对计算机整体性能有着很大的影响,因此现代 CPU 通常采用多级流水线结构和超标量技术来提高逻辑单元的效率和性能。

 算术单元(Arithmetic Unit)

算数单元,通常也称为算术部件或运算器,是算术逻辑单元一个核心组成部分。

算术单元通常由一组加法器、乘法器、除法器和移位器等门电路组成,以实现各种不同的算术操作,如加法、减法、乘法、除法位移、取反等其他运算。

在计算机中,CPU 通常包含一个或多个算术单元,用于处理各种算术运算。当 CPU 需要进行算术运算时,它会将数据送入算术单元,并根据指令选择需要进行的运算类型。算术单元计算出结果后,将其返回给 CPU 进行下一步操作。

总的来说,算术单元是计算机中非常重要的组件之一,它通过实现各种算术运算来支持计算机的各种应用,如数据处理、图像处理、音频处理等。

劳动节程序员应该知道的知识——计算机

劳动节程序员应该知道的知识——计算机

 逻辑单元(Logic Unit)

逻辑单元(Logic Unit,简称LU)是计算机中的一个核心组件,用于执行逻辑运算。它通常由一组逻辑门电路(如与门、或门、非门、异或门等)组成,以实现各种不同的逻辑操作。

逻辑单元主要负责执行以下几种基本逻辑运算:

  1. 与运算:将两个二进制数的对应位进行“与”操作,并输出结果。

  2. 或运算:将两个二进制数的对应位进行“或”操作,并输出结果。

  3. 非运算:对一个二进制数的每一位进行取反操作,并输出结果。

  4. 异或运算:将两个二进制数的对应位进行“异或”操作,并输出结果。

在计算机中,逻辑单元通常与算术单元(ALU)结合使用,形成更加完整的算数逻辑单元(ALU)。当 CPU 需要执行逻辑运算时,它会将数据送入逻辑单元,并根据指令选择需要进行的运算类型。逻辑单元会计算出结果,并将其返回给 CPU 进行下一步操作。

总的来说,在现代计算机中,逻辑单元也是非常重要的组件之一,它通过实现各种逻辑运算来支持计算机的各种应用,如控制决策、布尔逻辑运算、比较判断等。

ALU 符号

现代的计算机中的 ALU 部件非常强大,复杂度远远超过了我们的想象,32 位甚至 64 位基本已经普及全球了。

现代CPU中的ALU通常支持浮点数运算、SIMD指令(单指令多数据),以及更加复杂的指令集和多级流水线结构。这些先进的技术让我们能够进行更加高效、精确、复杂的计算任务,从而推动了科学技术的发展和人类社会的进步。

ALU 是第一次将人类历史上的数学和逻辑学学科有机地结合起来,可以视为人类智慧发展的现代巅峰。

劳动节程序员应该知道的知识——计算机

寄存器(Register) 和内存(RAM)

 寄存器(Register)和内存(RAM)都是计算机中存储数据的组件,但它们在存储、使用、速度等方面有很大区别。

寄存器是位于CPU内部的高速存储器,用于暂时存储指令和数据,是CPU执行指令过程中必不可少的组件。寄存器的容量比内存小得多,通常只有几十个字节到几百个字节,但由于其位于CPU内部,访问速度非常快,可以在一个时钟周期内完成读写操作。寄存器一般被用来存储当前正在执行的程序或数据,以及存储各种状态信息,例如程序计数器、指令寄存器、标志寄存器、通用寄存器等。

关于寄存器还想了解更多的:一口气看完45个寄存器,CPU核心技术大揭秘 - 知乎 (zhihu.com)

相比之下,内存(RAM)是一种外部存储设备,用于存储程序和数据,它的容量比寄存器大得多,可以存储更多的数据。内存的数据可以随时读取和修改,但访问速度比寄存器慢得多,需要几十甚至几百个时钟周期才能完成读写操作。内存一般分为静态内存和动态内存两种类型,其中静态内存速度较快,而且不需要刷新操作,但成本较高;动态内存成本较低,但需要定时进行刷新操作以保持数据的正确性。

劳动节程序员应该知道的知识——计算机

总的来说,寄存器和内存在计算机中都具有非常重要的作用。寄存器通过提供快速且方便的存储空间来支持CPU的指令执行和数据处理;而内存则提供了更大容量的存储空间,支持计算机系统的日常运行和各种应用程序的执行。通常情况下,计算机会将一部分数据存储在寄存器中,以便快速访问,在需要存储更多数据时则将其存储在内存中。

 控制单元 CU(Control Unit)

劳动节程序员应该知道的知识——计算机

控制单元(Control Unit,CU)它负责指挥和控制计算机系统中的各个部件进行工作。CU通常位于CPU内部,主要功能包括从主存中读取指令、解析指令并生成相应的控制信号、以及协调各个部件的工作等。

具体地说,当CPU要执行某个程序时,CU首先从主存中读取指令,并将其送入指令寄存器中。然后,CU会对指令进行解码,并根据解码结果生成一系列控制信号,例如内存读写控制信号、ALU操作控制信号、总线控制信号等。这些控制信号会被发送到各个部件,使得它们按照指令要求进行相应的操作,最终完成指令的执行。

除了指挥各个部件进行工作之外,CU还负责处理异常情况和错误。例如,在执行某个指令时,如果发生了除以零或者非法指令等错误,CU会立即停止当前程序的执行,并向操作系统或用户报告错误信息。

总的来说,CU可以看做是计算机系统中的“大脑”,它负责协调和控制整个系统的工作,确保计算机的正确运行。同时,CU也是计算机系统整体性能的关键因素之一,它的设计和实现质量直接影响到计算机的运行效率和稳定性。

指令(Instruction)

首先,我们先介绍下我们需要到的指令(instruction)

所谓指令,即指导 CPU 进行工作的命令,主要有操作码 + 被操作数组成。

其中操作码用来表示要做什么动作,被操作数是本条指令要操作的数据,可能是内存地址,也可能是寄存器编号等。 指令本身也是一个数字,用二进制形式保存在内存的某个区域中。

指令表(Instruction Table)

指令(instruction)
功能说明 4位opcode 操作的地址或者寄存器
LOAD_A
从RAM的指定地址,将
数据加载到A 寄存器
0010
4 位RAM 地址
LOAD_B
从RAM的指定地址,将
数据加载到B 寄存器
0001
4 位RAM 地址
STORE_A
将数据从A 寄存器写入
RAM 的指定地址
0100
4 位RAM 地址
ADD
计算两个指定寄存器的
数据的和,并将结果放  
入第二个寄存器 
1000
2 位的寄存器ID
2 位的寄存器ID

🍈对cpu感兴趣的小伙伴可以看看下面这个视频(大佬爆肝纯手工自制cpu)

[爆肝]纯手工自制CPU

编程语言(Program Language)

程序(Program)

所谓程序,就是一组指令以及这组指令要处理的数据, 程序的基本单元就是指令 。狭义上来说,程序对我们来说,通常表现为一组文件。 程序 = 指令 + 指令要处理的数据。

计算机中的程序是由一系列指令组成的,用来完成特定任务的代码序列。程序可以通过编程语言编写,然后由计算机进行解析和执行。

程序可以分为两类:系统程序和应用程序。系统程序是控制计算机硬件和操作系统的程序,例如操作系统、设备驱动程序、安全软件等。应用程序是用户使用计算机时运行的程序,例如文字处理器、游戏、浏览器、音视频播放器等。

程序可以由源代码编写而成,也可以通过编译器将源代码转换为目标代码来创建。在某些情况下,程序还可以直接使用汇编语言编写,以便更好地控制硬件资源和优化性能。

在程序执行过程中,计算机会将指令从内存中读入到CPU中,并根据指令类型执行相应的操作。CPU还需要维护一些寄存器和状态信息,例如程序计数器、堆栈指针、标志寄存器等,以帮助它正确地执行指令序列。

程序是计算机中最基本的元素之一,它们使得计算机能够完成各种任务并为用户提供服务。

早期编程

        很久以前,那还是我用Win98 的时候有次我系统崩溃了,因为我是电脑白痴,我朋友给我介绍了一个高 手来帮我修电脑。
        他看了一下电脑,问我有没有98 的盘,我说没有。
        他想了一下,叫我把固定电话拿给他,我想修电脑要电话干什么,但人家是高手,我也不好说什么,就把电话拔下来给他了。
        他把电话线空着的一头接在电脑的一个插孔内,然落后入了dos ,然后就开始在电话上不停的按着键,他按键的速度异常快,但是只按0 1 两个键,我搞不懂这有什么用,但也不敢问,看了半个多小时,他还是不停的按这两个键, 两性,我徐徐的有些困,我问他这东西要搞多久,他说要几个小时,我给他倒了杯茶,就一个人去隔壁睡觉了。
        醒来的时候,一看已经过了4 个多小时,我起身到隔壁,看见他正在 98 里面调试,过了一会儿,他说,你 试试,我坐上椅子用了一下,真的好了,我当时也不懂电脑,谢过人家就走了。
        后来我慢慢对电脑有了了解,终于了解,原来当时那位高手是用机器语言编了一个98 系统,我后来问我 朋友那位高手的下落,我朋友说前几年去了美国之后,杳无音讯....
这是一个早先流传的趣味小故事,当然这件事不是真实的。但最早的电脑,要进行编程,是真的需要用 0、 1进行编程的😐
下面图给大家展示了 Altair 8800 计算机,是最早的一批微型电脑。用户需要控制开关,一个一个 bit 的将程序录入该电脑中。
劳动节程序员应该知道的知识——计算机
如果要求计算机的用户都必须使用二进制编程,那大家都要疯掉了,这可是一件门槛太高的事情了。所以编程语言应运而生了。

编程语言发展

为了提升编程效率,最早创造了汇编语言的概念。其实汇编语言和机器语言(也就是指令)直接是完全 一一对应的,只是相对于 0 1 这些数字,发明了一些帮助人类记忆和理解的符号将其对应起来,也就 是我们上面看到的类似 LOAD_A LOAD_B 等。程序员完成编程之后,需要使用汇编器( assembler ) 将汇编语言翻译成机器语言。

劳动节程序员应该知道的知识——计算机

                                                                                                    
虽然汇编降低了程序员的记忆成本,但要求程序还是必须掌握计算机硬件的所有知识,而且随着计算机 厂商越来越多,一次编写的程序往往只适用于一类计算机。这个是远远不够的,所以更为高级的语言诞 生了,高级语言屏蔽了硬件细节,让程序员可以站在更高的层面上思考自己的业务。这里以 C 语言为 例,程序员完成程序的编写之后,需要使用编译器(compiler )和连接( linker )将程序翻译成汇编 语言,再借助汇编器变成最终的机器语言。
                                               
借助封装的思想,我们学习编程变得越来越容易。不过有利则有弊,高度的抽象,导致很多的程序员把 计算机视为一个黑箱,完全无法理解自己的程序是如何工作起来的,希望我们大家不要做这种程序员。

编程语言是用来描述计算机程序的形式化语言。自从计算机诞生以来,编程语言不断地发展和演变,经历了许多里程碑事件:

  1. 第一代编程语言(1940s-1950s):第一代编程语言是早期计算机使用的机器语言,它通过二进制代码直接控制计算机硬件。由于它很难理解和使用,因此只有专家才能编写程序。

  2. 第二代编程语言(1950s-1960s):第二代编程语言是汇编语言,它使用助记符号代替了二进制代码,使得人们更容易地编写程序。但它仍需要对硬件有深入的了解。

  3. 第三代编程语言(1960s-1970s):第三代编程语言是高级语言,例如FORTRAN、COBOL、BASIC等,它们的语法更加接近自然语言,使编程变得更加简单。同时,出现了编译器和解释器等工具,为程序员提供了更好的开发环境。

  4. 第四代编程语言(1970s-1990s):第四代编程语言是面向数据库的语言,例如SQL,它们不需要程序员编写大量的代码来操作数据,而是提供了高度抽象的接口。

  5. 现代编程语言(1990s-至今):现代编程语言包括Java、Python、C++等,它们具有更多的特性和功能,例如面向对象编程、函数式编程、动态类型等。同时,出现了许多框架和库,帮助程序员更快地构建应用程序。

编程语言的发展经历了从低级到高级、从硬件到软件、从过程化到面向对象等几个阶段,每个阶段都为计算机的发展做出了重要贡献。未来,人工智能、量子计算和其他新技术的发展也将进一步推动编程语言的演变和创新。

劳动节程序员应该知道的知识——计算机

注意:高级语言的一条语句 (Statement) 往往对应很多条指令 (Instruction) 才能完成。

    

劳动节程序员应该知道的知识——计算机

操作系统

操作系统是一组做计算机资源管理的软件的统称。目前常见的操作系统有: Windows 系列、 Unix 系列、Linux系列、 OSX 系列、 Android 系列、 iOS 系列、鸿蒙等。
 

操作系统(Operating System,OS)是计算机系统中的一种软件,它负责管理和控制计算机硬件和软件资源,为用户和应用程序提供服务。操作系统通常包括以下几个核心组件:

  1. 内存管理:内存管理模块负责管理计算机的内存资源,包括内存分配、内存保护、虚拟内存等。通过有效地管理内存,操作系统可以最大化利用系统资源,并确保应用程序之间不会相互干扰。

  2. 进程管理:进程管理模块负责管理计算机的进程和线程,包括进程的创建、调度、终止、同步等。通过对进程和线程进行管理,操作系统可以使多个程序同时运行,并确保它们之间不会相互干扰或竞争系统资源。

  3. 文件管理:文件管理模块负责管理计算机的文件系统,包括文件的创建、读取、写入、删除等。通过对文件进行统一管理,操作系统可以保护文件的安全性、完整性和可用性。

  4. 设备管理:设备管理模块负责管理计算机的外部设备,包括I/O设备、网络设备等。通过对设备进行管理,操作系统可以协调多个设备之间的操作,以达到最优的系统性能。

  5. 用户接口:用户接口模块提供了用户和操作系统之间的交互方式,例如命令行界面、图形用户界面等。通过友好的用户接口,操作系统可以使得用户更加轻松地使用计算机系统。

除了这些核心组件之外,操作系统还包括其他一些功能,例如安全管理、网络支持、多处理器支持等。总的来说,操作系统是计算机系统中最重要的组成部分之一,为用户和应用程序提供了强大的支持和保障。

篇幅过长 ,就不详细说了,想详细了解可看

计算机操作系统知识点总结(有这一篇就够了!!!)

结语

作为一名程序员,计算机将会一直陪伴我们今后的日子,我深知计算机技术对于现代社会的重要性。在这个五一劳动节之际,我想向所有辛勤工作的人们致以敬意,并分享一些我认为程序员应该掌握的基础知识。

我们今天介绍了计算机的历史以及了解了计算机时如何工作的,但是计算机技术是一个不断演变和发展的领域,身为程序员的我们需要不断学习和创新,才能保持竞争力和应对未来的挑战。

在这个特别的节日里,让我们一起感恩劳动、尊重知识、珍惜时间,为自己和社会创造更多价值!文章来源地址https://www.toymoban.com/news/detail-444165.html

到了这里,关于劳动节程序员应该知道的知识——计算机的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 应该选择网络安全还是程序员?

    很长的时间我都在思考这个问题.,根据自己的经验和朋友们的讨论后得出了一些结论,网络安全 这个概念太广,我就以安服/渗透岗作为比较的对象,题主可以参考一下: 程序员: 优点: 1.薪资非常高,今年校招大厂普遍是24K*15 2.岗位多,无论大城市还是小城市遍地是岗位

    2023年04月19日
    浏览(43)
  • 不想被卷的程序员们,应该学什么?

    我真的好像感慨一下,这个世界真的给计算机应届生留活路了吗? 看着周围的同学,打算搞前端、JAVA、C、C++的,一个两个去跑去应聘。你以为是00后整治职场? 真相是主打一个卑微:现阶段以学习为主( 工资能活命就行 );学习能力强( 让我干什么都行 );能抗压( 加

    2024年02月12日
    浏览(15)
  • 当前就业环境下,程序员应该自降薪资应聘吗?

    最近就业环境不好,有些人为了找到工作,主动降低薪资要求,甚至有些人主动提出比企业招聘工资更低的工资以求入职,这样做合适吗? 其实这个问题早些年也经常被人提及,主要针对的是新进入就业市场的培训班学员,对他们而言,能用一个较低的薪资进入行业,以后再

    2024年02月04日
    浏览(17)
  • 这7种UML图的画法每个程序员都应该掌握~

    众所周知,软件开发是一个分阶段进行的过程。不同的开发阶段需要使用不同的模型图来描述业务场景和设计思路。在不同的阶段输出不同的设计文档也是必不可少的,例如,在需求分析阶段需要输出领域模型和业务模型,在架构阶段需要输出物理架构设计,在详细设计阶段

    2024年02月11日
    浏览(19)
  • 当程序员纠结中午应该吃什么,那就用pygame来解决吧

    写多了kotlin和android,最近想搞点小东西,于是拿出了长期没有宠爱的python,打算搞个小项目 想想应该写什么,对了,该吃饭了,诶,刚好,写一个能随机选择吃什么的小程序吧,只需要点击按钮,就会随机出现菜谱,然后再点一下,就会得出今天吃什么的结论 思路是这样的

    2024年01月16日
    浏览(27)
  • 程序员不得不知道的 API 接口常识

    1、初识 API 接口 记得在我初学 web 开发的时候,后端框架相关的教程基本都会教学生写渲染模版(不分语言),也就是说后端返回的是整个网页的数据,浏览器只负责渲染。 一般这类模版在后端都会对应一个路由,比如前端想登入一个看用户信息的页面,在 url 中输入的访问

    2024年02月01日
    浏览(22)
  • 程序员必须要知道的编程范式,你掌握了吗?

    一、 什么是编程范式? \\\"编程范式\\\"是一种 编程思想 的总称,它是指在编写程序时所采用的基本方法和规范。常见的编程范式有面向对象、函数式、逻辑式等。 选择合适的编程范式可以提高代码的可读性、可维护性和可扩展性,是程序员必备的基本技能之一。   二、常见的

    2024年02月09日
    浏览(21)
  • 程序员想兼职赚钱?这几个渠道你一定要知道?

    某一天当一个程序员,一拍脑门想要兼职,赚点小钱,于是他打开了知乎,打开了百度搜索兼职。结果弹出了一大部分有兼职要视频剪辑的,写文稿的等等等等。逛了一圈,发现根本没有自己合适的兼职。 我想说: 喂!喂!喂! 你不是程序员吗?我们程序员当然要用自己的

    2024年02月14日
    浏览(20)
  • 新技术越来越多,作为程序员,我们应该怎么规划职业生涯? | 社区征文

    随着科技的不断进步,新技术不断涌现,对程序员的要求也在不断提高。作为一名程序员,要想在这个竞争激烈的行业中立足,就需要制定一份明确的职业规划,不断学习和掌握新技术,提升自己的职业能力和竞争力。 首先,程序员需要明确自己的职业方向和目标。程序员的

    2024年02月06日
    浏览(26)
  • 什么?作为程序员你还不知道人工智能搜索引擎?

    作者 :明明如月学长, CSDN 博客专家,蚂蚁集团高级 Java 工程师,《性能优化方法论》作者、《解锁大厂思维:剖析《阿里巴巴Java开发手册》》、《再学经典:《EffectiveJava》独家解析》专栏作者。 热门文章推荐 : (1)《人工智能时代,软件工程师们将会被取代?》 (2)

    2024年02月10日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包