【1.0】计算机基础

【一】编程语言和编程

【1】什么是语言?

  • 语言是一种人与人之间进行沟通的媒介,例如英语、汉语、俄语等。

【2】什么是编程语言?

  • 编程语言是一种人与计算机之间进行沟通的媒介。

【3】为什么会出现编程语言?

  • 编程语言的出现是为了让人类能够与计算机进行有效的沟通。
  • 计算机在编程者的控制下按照指定的逻辑执行任务,从而实现自动化。

通俗理解为在人与计算机的世界里,人是奴隶主,计算机是奴隶

人与计算机沟通的目的就是为了奴役计算机,让计算机按照人类的思维逻辑自发地去工作,从而解放人力,节约成本。

【4】什么是编程?

  • 编程是指将人类思维逻辑翻译成计算机能够理解和执行的指令,将这些指令写入文件形成程序。

【5】为什么要做编程?

  • 编程的目的是为了让计算机按照人类的意愿完成特定的任务,实现自动化,提高工作效率,解放人力,以及创造各种应用和软件。

【二】计算机组成原理

【1】什么是计算机?

  • 计算机是一种通电的智能设备,被称为电脑,拥有处理数据、执行指令的能力,是现代科技和信息社会的重要工具

电脑又可以理解为通电的大脑

电脑二字蕴含了人类对计算机的终极期望,希望它能真的像人脑一样去工作,实现自动化,提高工作效率,解放人力。

【2】为什么要发明计算机?

  • 计算机的发明是为了解决人类在处理大量数据和复杂计算时的困难,提高工作效率,减轻人力负担,实现自动化。
  • 计算机能够执行重复性、繁琐的任务,从而解放人类的思维和创造力,让人们能够更专注于创新和发展。
  • 世界由聪明的懒人统治,计算机作为一种工具,能够满足人们对高效、精确、持续工作的需求,是现代社会不可或缺的技术支持。

世界是由聪明的懒人统治的,任何时期,总有一群聪明的懒人想要奴隶别人

在奴隶制社会,聪明的懒人奴役的是真正的人,而人是无法不吃、不喝、不睡觉一直工作的

计算机作为一台机器是可以做到的,所以把计算机当奴隶是上上之选

【3】计算机的五大组成部分

  • 计算机是由五大组成部分构成的,这些部分相互协作,完成各种任务。
  • 我们可以将这五大组成部分类比为人类的各种器官,以更好地理解其功能。

(1)控制器

  • 功能: 控制器相当于计算机的大脑,负责指挥和协调其他部件的工作。
  • 类比: 人的大脑,负责指挥身体各部分协同工作。

(2)运算器

  • 功能: 运算器执行各种算术和逻辑运算,实现计算机的计算功能。
    • 算术运算:数字之间的运算,例如 + - * /
    • 逻辑运算:根据某个条件是否成立,决定是否要做事情
  • 类比: 人的大脑皮层,负责思考和计算的任务。
    • 控制器+运算器=CPU
    • cpu相当于人的大脑

(3)存储器

  • 功能: 存储器用于存储计算机运行时所需的数据和指令。
  • 类比: 人的记忆系统,分为短时记忆(内存)和长时记忆(外存)。

[1]内存

  • 功能: 内存是计算机用于临时存储数据和程序的地方,是CPU能够直接访问的存储介质。
  • 类比: 相当于人的短时记忆,用于存储当前正在进行的任务和运行的程序。
  • 特点
    • 断电数据丢失:内存是一种易失性存储器,断电后存储在其中的数据将丢失。
    • 读取速度快:由于内存是直接与CPU相连的,因此读取速度非常快。
  • 作用: 在运行程序时,数据必须先加载到内存中,CPU才能够快速访问和处理这些数据。

[2]外存

  • 功能: 外存用于永久存储数据,即使在断电的情况下数据也不会丢失。
  • 类比: 相当于人的长时记忆,用于存储更为持久的信息,如文件、照片等。
  • 特点
    • 断电数据不会丢失:外存是一种非易失性存储器,数据在断电后依然保持。
    • 读取速度慢:与内存相比,外存的读取速度较慢,因为需要通过外部设备进行读取。
  • 形式: 包括磁带、光盘、U盘、硬盘等形式。

内存的读取和存取速率远远高于外存

存储器如内存、磁盘等,既是输入设备又是输出设备,统称为IO设备

(4)输入设备(input)

  • 功能: 输入设备用于将外部信息输入到计算机,让计算机能够处理。
  • 类比: 人的感官器官,如眼睛、耳朵,用于感知外界信息;如键盘、鼠标、麦克风、扫描仪。

(5)输出设备(output)

  • 功能: 输出设备将计算机处理后的结果呈现给用户或其他设备。
  • 类比: 人的口鼻,人说的话,写出的文章,用于表达和输出信息;如显示器、打印机。

(6)小结

  • cpu是人的大脑,负责控制全身和运算
  • 内存是人的记忆,负责临时存储
  • 硬盘是人的笔记本,负责永久存储
  • 输入设备是耳朵或眼睛或嘴巴,负责接收外部的信息存入内存
  • 输出设备是你的脸部(表情)或者屁股,负责经过处理后输出的结果
  • 以上所有的设备都通过总线连接,总线相当于人的神经

(7)案例

  • 你通过耳朵接收老师讲的知识->输入
  • 通过自己的神经,将接收的数据存入自己的内存/短期记忆(总线、内存)
  • 光听不行,你还需要反应/处理老师讲的知识,于是你的大脑/cpu从短期记忆里取出知识/指令,分析知识/指令,然后学习知识/执行指令 (cpu取指、分析、执行)
  • 你通过作业或者说话输出你学到的结果
  • 你想要永久将知识保存下来,只能拿出一个笔记本,把刚刚学会的知识都写到本子上,这个本子就是硬盘(磁盘)

【4】三大核心硬件(重点)

  • 程序在计算机中的运行涉及到 CPU、内存和硬盘等核心硬件的协同工作

(1)CPU(中央处理器)

  • 由控制器和运算器组成。
  • 用于计算数据,执行程序的指令
  • 负责控制计算机的操作。
  • 计算机的"大脑",决定程序执行的顺序和过程。

(2)内存

  • 读取速度快,基于电工作。
  • 用于存储正在运行的程序和临时数据
  • 断电后数据立即丢失,是一种易失性存储器。
  • 作为CPU直接访问的存储介质,提供了高速的数据读写能力。

(3)硬盘

  • 读取速度相对较慢。
  • 用于永久保存数据,包括操作系统、应用程序和用户数据等
  • 断电后数据不会丢失,是一种非易失性存储器。
  • 作为长期存储的主要设备,容量通常较大。

img

TB,PB, Eb, Zb, YB
1B= 8bit
1KB=2(10)B=1024B; 括号中的数字为2的指数(即多少次方) 
1MB=2(10)KB=1024KB=2(20)B; 
1GB=2(10)MB=1024MB=2(30)B。 
1TB=2(10) GB=1024GB=2(40)B 
1PB=2(10) TB=1024TB=2(50)B 
1EB=2(10) PB=1024PB=2(60)B 
1ZB=2(10) EB=1024EB=2(70)B 
1YB=2(10) ZB=1024ZB=2(80)B 

1Byte相当於一个英文字母
Kilobyte(KB)=1024B相当於一则短篇故事的内容。 
Megabyte(MB)=l024KB相当於一则短篇小说的文字内容。 
Gigabyte(GB)=1024MB相当於贝多芬第五乐章交响曲的乐谱内容。 
Terabyte(TB)=1024GB相当於一家大型医院中所有的X光图片资讯量。 
Petabyte(PB)=l024TB相当於50%的全美学术研究图书馆藏书资讯内容。 
Exabyte (EB)=1024PB;5EB相当於至今全世界人类所讲过的话语。 
Zettabyte(ZB)=1024EB如同全世界海滩上的沙子数量总和。 
Yottabyte(YB)=1024ZB相当於7000位人类体内的微细胞总和。

【5】程序的执行过程

img

  • 加载阶段: 程序首先存放在硬盘中。
  • 加载到内存: 在运行时,操作系统将程序从硬盘加载到内存中,以便CPU能够直接访问。
  • CPU执行: CPU从内存中读取程序的指令,进行相应的计算和操作。
  • 运算过程: 运算器进行算术和逻辑运算,控制器负责指令的执行流程。
  • 结果返回: 计算结果可能被存储回内存,最终可能被写回硬盘以保持数据的持久性。

程序最先是存放于硬盘中的

程序的运行是先从硬盘把代码加载到内存中,然后cpu是从内存中读取指令运行。

执行速度:CPU >>> 内存 >>> 硬盘

【三】操作系统

  • 前提:我们编程的目的就是为了奴役计算机。
  • 我们希望让计算机硬件自发地运行起来,但是硬件毕竟是”死的“,硬件的运行都是由软件支配的。

【1】操作系统的由来

(1)操作系统出现的目的

  • 操作系统的出现是为了简化硬件操作,提供统一的接口供应用程序使用。
  • 在开发应用程序时,不同开发者无需重复编写控制硬件的底层代码,而是调用操作系统提供的接口。
  • 这样,开发者能够专注于应用程序的业务逻辑,提高开发效率。

(2)举例说明

  • 如果没有操作系统,每个应用程序都需要自行编写控制硬盘读写的代码、控制内存的代码、管理输入输出设备的代码等。
  • 这将导致大量的重复劳动,而且每个程序员都需要深入了解硬件的底层细节,这是一项繁琐且容易出错的任务。

(3)开发程序示例

  • 倘若我们要开发一个应用程序,比如暴风音影
    • 该软件的一个核心业务就是播放视频,开发者若要编写程序完成播放视频这个业务逻辑,必先涉及到底层硬件硬盘的基本运作(视频文件都是先存放于硬盘中),这意味着开发者在编写业务逻辑代码之前,必须先编写一个控制硬盘基本运行的控制程序,然而这仅仅只是一个开始
    • 事实上,在编写应用程序的业务逻辑前,需要开发者编写出一套完整的控制程序用来控制所有硬件的基本运行(这要求开发者需要详细了解计算机硬件的各种控制细节,例如我们必须把CPU里面所有指令集都掌握一遍)
  • 如此,所有的开发者在开发程序时都必须依次开发两种:
    • 1、编写一套完整的的控制程序用来控制硬件的基本运行,以及把复杂的硬件的操作封装成简单的接口;
    • 2、基于控制程序的接口开发包含一系列业务逻辑的程序,为了与控制程序区分,可以称为应用程序;
      • 以ATM这款应用程序为例,业务逻辑有提款、转账、查询余额等

(4)小结

  • 综上,对于不同公司的开发者来说,应用程序的业务逻辑各不相同,但硬件的控制程序都大致相同,为了避免所有程序员做重复劳动,以及不用再耗费精力去了解所有硬件的运行细节,有公司专门跳出来承担起控制程序的开发任务,这里所说的控制程序指的就是操作系统。
  • 操作系统的功能就是帮我们把复杂的硬件的控制封装成简单的接口,对于开发应用程序来说只需要调用操作系统提供给我们的接口即可

【2】操作系统的主要功能

  • 硬件管理: 控制和管理计算机的硬件,包括CPU、内存、硬盘、输入输出设备等。
  • 文件系统: 提供文件和目录的管理,让应用程序能够方便地读取和存储数据。
  • 进程管理: 管理运行在计算机上的各个进程,确保它们有序、安全地运行。
  • 内存管理: 分配和释放内存,以及虚拟内存的管理。
  • 设备驱动程序: 提供硬件设备的驱动程序,使应用程序能够通过操作系统与硬件交互。
  • 用户界面: 提供用户与计算机交互的界面,如图形用户界面(GUI)或命令行界面。

【3】常见的操作系统

(1)客户端(PC)

  • Windows(微软)
  • macOS(苹果)
  • Linux(服务器)

(2)移动端(APP)

  • 安卓
  • iOS
  • 鸿蒙

【4】系统软件与应用软件

(1)系统软件(操作系统)

  • 操作系统是一种系统软件,作为计算机硬件和应用软件之间的中介,负责协调、管理、控制计算机硬件与应用软件资源的控制程序。
  • 其主要功能包括硬件管理、文件系统、进程管理、内存管理、设备驱动程序、用户界面等。
  • 常见的操作系统有Windows、macOS、Linux等。

(2)应用软件(应用软件)

  • 应用软件是为了满足用户特定需求而开发的软件,通过操作系统运行。

  • 它包括各种各样的程序,涵盖了几乎所有计算机用户可能需要的功能。

  • 例如:

    • QQ: 一款即时通讯软件,用于文字、语音、视频通话以及文件传输等功能。

    • 微信: 一款综合性社交平台软件,除了即时通讯外,还包括朋友圈、小程序等功能。

    • Word: 一种文字处理软件,用于创建、编辑文档,处理文本内容。

  • 这些应用软件通过操作系统提供的接口与硬件交互,使用户能够方便地完成各种任务。

  • 应用软件的种类丰富多样,涵盖了各个领域,满足了用户的不同需求。

【5】计算机系统的三层架构

  • 我们开发应用程序本质是在控制硬件,但是我们直接打交道的是操作系统,应用程序都是通过操作系统来间接地操作硬件的,所以一套完整的计算机系统分为三层

(1)应用层

  • 在计算机系统的顶层是应用层,这是用户直接交互的层面。
  • 我们的主要关注点通常是在这个层次上。
  • 在这里,我们编写和设计各种应用程序,包括但不限于网页应用、桌面应用、移动应用等。
  • 编写代码的目标是实现用户需求,而这些应用程序通过操作系统提供的接口来与底层硬件进行通信。

(2)操作系统层

  • 操作系统层是连接应用层和硬件层的桥梁。
  • 它提供了一系列的系统调用和服务,使应用程序能够在硬件上运行。
  • 这一层包括操作系统的内核,负责管理系统资源、进程调度、文件系统等。
  • 不同操作系统有不同的特性,例如Linux、Windows等,以及它们在开发中的影响。

(3)硬件层

  • 硬件层是计算机系统的最底层,包括处理器、内存、存储设备、输入输出设备等。
  • 在这个层次上,我们关注计算机体系结构、指令集架构、存储器层次结构等概念。
  • 理解硬件层对于优化应用程序性能和解决一些底层问题至关重要。

(4)图解总结

img

【6】平台的概念

(1)什么是平台

  • 应用程序都是运行于操作系统(系统软件)之上
    • 而操作系统则是运行于硬件之上的,
    • 所以承载应用程序的是一台运行有操作系统的计算机,称之为应用程序的运行平台
      • 即:硬件 + 系统软件 == 平台

(2)常见的平台

  • windows系统+某款硬件
  • linux系统+某款硬件
  • ubuntu+某款硬件等

(3)跨平台性的优势

  • 在开发应用程序时,考虑跨平台性是至关重要的。
  • 这意味着无论用户使用的是Windows、Linux还是其他操作系统,应用程序都能够在不同平台上运行。
  • 这为开发者提供了更广泛的用户群体,减少了开发和维护的成本,同时增加了应用程序的灵活性。

(4)编程语言的选择

  • 决定应用软件的跨平台性的确关键因素之一是选择合适的编程语言。
  • 不同的语言在这方面有着不同的表现。
  • Python作为一种解释型语言,具有卓越的跨平台性,这是因为Python解释器本身可以在各种操作系统上运行,而且许多Python库和框架也是跨平台的。

(5)Python的跨平台性

  • Python的设计理念之一就是"Write once, run anywhere",即一次编写,到处运行。
  • 这得益于Python解释器的能力,使得开发者无需担心底层平台细节,只需专注于编写高级代码。
  • 这对于培训零基础小白来说,降低了学习和开发的门槛,使他们更容易进入开发领域。
posted @ 2023-11-18 15:10  Chimengmeng  阅读(145)  评论(0编辑  收藏  举报
/* */