编程与编程语言
什么是语言
中文、日文、韩文、英文都是人类的语言
语言其实就是人用来沟通交流的媒介(语言就是一种事物与另外一种事物沟通表达的方式/工具)
什么是编程语言
人与计算机之间沟通交流的媒介
**人-----------编程语言------------计算机**
编程语言的本质就是一门语言
能够与机器的对话的人
什么是编程
编程即程序员根据需求把自己的思想流程按照某种编程语言的语法风格编写下来,产出的结果就是包含一堆字符的文件。
- 1、想好做事的步骤
- 2、找一种对方能听懂语言把做事的步骤给翻译下来,并且存入文件中
强调:程序在未运行前跟普通文件无异,只有程序在运行时,文件内所写的字符才有特定的语法意义
什么是程序,什么是进程
程序就是一系列的代码文件,进程指的是一个正在运行的程序
为何要编程
计算机就相当于人类的奴隶,编程的目的是为了控制计算机让其代替人类去工作,从而解放人力
计算机基础
什么是计算机
计算机有一个别名“电脑”,包含人对计算机的终极期望,通电之后能够真的像人脑一样去工作
为何要有计算机
为了执行人类的程序,从而把人类解放出来
大前提:计算机所有的组成都是模仿人的某一功能或器官
计算机五大组成部分
运算器:控制数学运算与逻辑运算
- 数学运算:数字相关的运算
- 逻辑运算:根据条件判断是否可行
控制器:是计算机的指挥系统,负责控制计算机各个硬件的工作
- 控制器+运算器=》CPU————相当于人的大脑
存储器:存取数据
- 内存:基于电工作的,内存里存放的数据都是电信号
特点:存取数据速度快,断电数据丢失,只能临时存取数据——-》人脑的记忆功能
外存:比如磁盘,基于磁工作,磁盘里存放的是磁信号
- 特点:存取数据速度远远慢于内存,断电数据不受影响,可以永久保存数据——-》人的笔记本
输入设备input:如键盘、鼠标、麦克风….
- 将外界的数据传递给计算机
输出设备output: 如显示器、音响、打印机…..
- 将计算机内部的数据传递给外部
eg:人与计算机对比
加入要考试发卷子之后
用眼睛看卷子(输入设备)思考题目怎么做(运算器 内存)拿笔写卷子(控制器 输出设备)
与运行程序有关的三大核心硬件
- 中央处理器(CPU)
- CPU去内存中取程序的指令并运行
- 内存
- 程序要想运行必须先存在于内存中
- 硬盘
- 永久保存相应数据
-
程序的运行经历的步骤:
- 1、先将程序由硬盘读入内存->程序启动/加载过程
2、cpu从内存中取出程序的指令来运行->程序的运行
ps:程序运行过程中产生的数据一定是最先存放于内存中的,关键数据一定要由内存刷入硬盘永久保存下来
总结:
- 程序最先是存放于硬盘之上
- 程序的运行一定是先把程序的代码由硬盘加载到内存
- 然后CPU从内存中读取指令执行
计算机硬件详解
CPU
x86-64<br /> cpu具有向下兼容<br /> 64的cpu既能运行32位的程序也能运行64位的程序
多线程与多核芯片
2核4线程:<br /> 2核代表有两个cpu,4线程指的是每个cpu都有两个线程=》假4核
4核8线程<br /> 4核代表有4个cpu,8线程指的是每个cpu都有两个线程=》假8核
内存
随机存取存储器
再往下一层是主存,此乃存储器系统的主力,主存通常称为随机访问存储RAM,就是我们通常所说的内存,容量一直在不断攀升,所以不能再高速缓存中找到的,都会到主存中找,主存是易失性存储,断电后数据全部消失
硬盘
- 机械硬盘:磁盘
磁道:一圈数据,对应着一串二进制(1bit代表一个二进制位)
8bit比特位=1Bytes字节
1024Bytes=1KB
1024KB=1MB
1024MB=1GB
1024GB=1TB
1024TB=1PB
200G=20010001000B每个磁头可以读取一段换新区域,称为磁道
把一个戈丁手臂位置上所以的磁道合起来,组成一个柱面
每个磁道划成若干扇区,扇区典型的值是512字节
扇区:
- 一个扇区通过为512Bytes
- 站在硬盘的解读,一次性读写数据的最小单为为扇区
- 操作系统一次性读写的单位是一个block块=》8扇区的大小=4096Bytes
柱面:
- 每张盘片由若干个磁道和若干个扇区组成从外向内分别为0磁道、1磁道、2磁道……不同盘片的同一磁道构成的一个圆柱面称为柱面,柱面由外向内依次为0柱面、1柱面、2柱面……磁盘将信息按扇区存入
- 平均寻道时间:机械手臂转到数据所在磁道需要花费的时间,受限于物理工艺水平,目前机械硬盘可以达到的是5ms
平均延迟时间:转半圈需要花费4ms,受限于硬盘的转速
IO延迟 = 平均寻道时间 + 平均延迟时间
优化程序运行效率的一个核心法则:能从内存取数据,就不要从硬盘取
固态硬盘:固态盘(SSD)
buffer写缓冲区:
- 是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区,显然缓冲区是具有一定大小的。
- 缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区
cache读缓存:
- cache是一个非常大的概念。
缓存(cache)与缓冲(buffer)的主要区别
- Buffer的核心作用是用来缓冲,缓和冲击。比如你每秒要写100次硬盘,对系统冲击很大,浪费了大量时间在忙着处理开始写和结束写这两件事嘛。用个buffer暂存起来,变成每10秒写一次硬盘,对系统的冲击就很小,写入效率高了,日子过得爽了。极大缓和了冲击。
- Cache的核心作用是加快取用的速度。比如你一个很复杂的计算做完了,下次还要用结果,就把结果放手边一个好拿的地方存着,下次不用再算了。加快了数据取用的速度。
- 简单来说就是buffer偏重于写,而cache偏重于读。
- ps:有时候大家要好好理解这些专有名词字面上的意思,对理解这些概念有好处,缓冲:缓解冲击,缓存:临时存储
虚拟内存:
许多计算机支持虚拟内存机制,该机制使计算机可以运行大于物理内存的程序,方法是将正在使用的程序放入内存取执行,而暂时不需要执行的程序放到磁盘的某块地方,这块地方成为虚拟内存,在linux中成为swap,这种机制的核心在于快速地映射内存地址,由cpu中的一个部件负责,成为存储器管理单元(Memory Management Unit MMU)
**IO设备=设备的控制+设备本身**
操作系统
操作系统是一个协调、管理、控制计算机硬件资源与软件资源的程序。
它处于计算机硬件与应用程序之间
- BIOS介绍:
- BIOS:Basic Input Output System
- BIOS被写入ROM设备
在计算机的主板上有一个基本的输入输出程序(Basic Input Output system)BIOS就相当于一个小的操作系统,它有底层的I/O软件,包括读键盘,写屏幕,进行磁盘I/O,该程序存放于一非易失性闪存RAM中。
裸机:
- CPU:中央处理器
- ROM:充当内存,存放BIOS系统
- CMOS:充当硬盘
操作系统的启动流程
- 1.计算机加电
- 2.BIOS开始运行,检测硬件:cpu、内存、硬盘等
- 3.BIOS读取CMOS存储器中的参数,选择启动设备
- 4.从启动设备上读取第一个扇区的内容(MBR主引导记录512字节前446为引导信息,后64为分区信息,最后两个为标志位)
- 5.根据分区信息读入bootloader启动装载模块,启动操作系统
- 6.然后操作系统询问BIOS,以获得配置信息。对于每种设备,系统会检查其设备驱动程序是否存在,如果没有,系统则会要求用户按照设备驱动程序。一旦有了全部的设备驱动程序,操作系统就将它们调入内核
BIOS
- 1、存有win10系统的光盘、u盘、移动硬盘:无密码
- 2、本地硬盘上的win7系统:密码
应用程序的启动流程
- 1、双击exe快捷方式—》exe文件的绝对路径,就是在告诉操作系统说:我有一个应用程序要执行,应用程序的文件路径是(exe文件的绝对路径)
- 2、操作系统会根据文件路径找到exe程序在硬盘的位置,控制其代码从硬盘加载到内存
- 3、然后控制cpu从内存中读取刚刚读入内存的应用程序的代码执行,应用程序完成启动
计算机的三层结构
- 应用程序
- 操作系统
- 计算机硬件(cpu、内存、硬盘)
"""
我们日常生活中所使用的 程序员所编写的程序都必须基于操作系统之上
"""
# PC端
windows 更加注重用户体验
linux 更加主动软件运行
macOS 两者均可
# 移动端
安卓 ios 鸿蒙
一个非常重要的基础概念:平台
应用程序都是运行于操作系统之上,而操作系统则是运行于硬件之上的,所以承载应用程序的是一台运行有操作系统的计算机,称之为应用程序的运行平台,即:硬件 + 操作系统 == 平台
常见的平台有:windows系统+某款硬件、linux系统+某款硬件、ubuntu+某款硬件等,我们在开发应用程序时就需要考虑到应用程序的跨平台性,如果能开发出一款可以在任意平台运行的应用程序,那对于开发者来说真是极大的福音。而决定应用软件的跨平台性的关键因素往往是编程语言的选择,python恰好是一款跨平台性语言,这也是我们学习它的原因之一。