编程语言的本质就是一门语言,
语言就是一种事物与另外一种事物沟通的表达方式/工具。
编程就是人把自己想计算机做的事,也就是自己的思维逻辑,用编程语言表达出来。
编程的目的就是让计算机按照人类的思维逻辑去工作,从而解放人力。
机器语言是站在计算机(奴隶)的角度,说计算机能听懂理解的语言,而计算机能直接理解的就是二进制指令,所以机器语言就是直接用二进制编程,
这意味着机器语言是直接操作硬件的,因此机器语言属于低级语言,此处的低级指的是底层、贴近计算机硬件(贴近代指需要详细了解计算机硬件细节、直接控制硬件。
优点: 编写的程序可以被计算机无障碍理解、直接运行,执行效率高。
缺点: 复杂,开发效率低,贴近\依赖具体的硬件,跨平台性差。
汇编语言仅仅是用一个英文标签代表一组二进制指令,毫无疑问,比起机器语言,汇编语言是一种进步, 但汇编语言的本质仍然是直接操作硬件,因此汇编语言仍是比较低级/底层的语言、贴近计算机硬件。
优点: 相对于机器语言,使用英文标签编写程序相对简单,执行效率稍低,开发效率稍高。
缺点: 仍然是直接操作硬件,比起机器语言来说,复杂度稍低,但依旧居高不下,所以开发效率依旧较低,依赖具体的硬件,跨平台性差。
高级语言是站在人(奴隶主)的角度,说人话,即用人类的字符去编写程序,而人类的字符是在向操作系统发送指令,而非直接操作硬件,所以高级语言是与操作系统打交道的,
此处的高级指的是高层开发者无需考虑硬件细节,因而开发效率可以得到极大的提升,但正因为高级语言离硬件较远,更贴近人类语言,人类可以理解,而计算机则需要通过翻译才能理解,
所以执行效率会低于低级语言。
按照翻译的方式的不同,高级语言又分为两种:
编译型(如c语言): 把程序所有代码编译成计算机能识别的二进制指令,之后操作系统会拿着编译好的二进制指令直接操作硬件。
优点: 编译一次之后就可以拿着结果重复运行,而无需再次翻译,执行效率高于解释型。
缺点: 编译型代码是针对某一个平台翻译的,当前平台翻译的结果无法拿到另外-一个平台使用,即无法跨平台。
解释型(如python): 类似同声翻译,需要有一个解释器,解释器会读取程序代码,一边翻译一边执行。
优点: 代码运行是依赖于解释器,不同平台有对应版本的解释器,所以代码是可以跨平台运行。
缺点: 每次执行都需要翻译,执行效率低于编译型。
数据类型不可以被忽略的语言 即变量的数据类型一旦被定义,那就不会再改变,除非进行强转。 在python中,例如:name = ‘tony’,这个变量name在被赋值的那一刻,数据类型就被确定死了,是字符型,值为’tony’。
数据类型可以被忽略的语言 比如linux中的shell中定义一个变量,是随着调用方式的不同,数据类型可随意切换的那种。
运行时才进行数据类型检查,即在变量赋值时,才确定变量的数据类型,不用事先给变量指定数据类型
需要事先给变量进行数据类型定义
执行效率: 机器语言>汇编语言>高级语言(编译型>解释型)
开发效率: 机器语言<汇编语言<高级语言(编译型<解释型)
跨平台性: 解释型具有极强的跨平台型。
计算机俗称“电脑”,包含人对计算机的终极期望,能够真的像人脑一样去工作。
为了执行人类的程序,从而把人类解放出来。
大前提:计算机所有的组成都是模仿人的某一功能或器官。
控制器(英文名称:controller)是指按照预定顺序改变主电路或控制电路的接线和改变电路中电阻值来控制电动机的启动、调速、制动和反向的主令装置。
由程序计数器、指令寄存器、指令译码器、时序产生器和操作控制器组成,它是发布命令的“决策机构”,即完成协调和指挥整个计算机系统的操作。
作用:是计算机的指挥系统,负责控制计算机所有其他组件如何工作的。
类比:控制器=》人类的大脑
运算器由算术逻辑单元(ALU)、累加器、状态寄存器、通用寄存器组等组成。算术逻辑运算单元(ALU)的基本功能为加、减、乘、除四则运算,与、或、
非、异或等逻辑操作,以及移位、求补等操作。计算机运行时,运算器的操作和操作种类由控制器决定。运算器处理的数据来自存储器;处理后的结果数据通常送回存储器,
或暂时寄存在运算器中。与Control Unit共同组成了CPU的核心部分。
作用:运算包括数学运算与逻辑运算。
类比:运算==》人类的大脑运算能力
ps:控制器+运算器=cpu ===》类比于人类的大脑
作用:是计算机的记忆功能,负责数据的存取。
再分类:存储器是用来存储程序和各种数据信息的记忆部件。存储器可分为主存储器(简称主存或内存)和辅助存储器(简称辅存或外存)两大类。和CPU直接交换信息的是主存。
内存:内存条(基于电工作):存取数据都快,断电数据丢失,只能临时存取数据。
外存:硬盘、光盘…(硬盘,基于磁工作):存取速度都慢,断电数据也不丢,可以永久保存数据。
类比:
内存=》人类的大脑的记忆功能
外存=》人可以永久记录东西的工具,比如我们的本子…
输入设备向计算机输入数据和信息的设备。是计算机与用户或其他设备通信的桥梁。输入设备是用户和计算机系统之间进行信息交换的主要装置之一。
如键盘、鼠标…
输出设备(Output Device)是计算机硬件系统的终端设备,用于接收计算机数据的输出显示、打印、声音、控制外围设备操作等。
也是把各种计算结果数据或信息以数字、字符、图像、声音等形式表现出来。
如显示器、打印机…
程序最先是存放于硬盘之上,程序的运行一定事先把程序的代码加载到内存,然后cpu从内存中读取指令执行。
组成计算机五大单元可以合并成三大核心组件: CPU、I0设备=》磁盘、主存储器=》内存
①控制单元+算数逻辑单元=>CPU;
②主存储器,即主记忆体;
③输入单元Input+输出单元Outpu=>IO设备。
CPU的核心工作在于进行运算和判断,那么要被运算与判断的数据是从哪里来的?CPU读取的数据都是从主存储器(内存) 来的!主存储器内的数据则是从输入单元所传输进来!
而CPU处理完毕的数据也必须先写回主存储器中,最后数据才从主存储器传输到输出单元。
所以计算机五大组成部分的基本工作流程就是:
输入单元=>主存储器= >CPU=>主存储器=>输出单元
而CPU会从内存中取指令=》解码=》执行,然后再取指=》解码=》执行下一条指令,周而复始,直至整个程序被执行完成。
x86:是对cpu型号或者架构的一种统称。
64位:cpu的位数指的是cpu一次能从内存里取出多少二进制指令,64bit指的是一次能从内存里取出64位二进制指令。
cpu具有向下兼容性,指的是64位的cpu技能运行64位软件,也能运行32位的,而32位cpu的只能运行32位的软件。
内核态与用户态:代表cpu的两种工作状态;
内核态: 运行的程序是操作系统,可以操作计算机硬件;
用户态: 运行的程序是应用程序,不能操作计算机硬件。
ps: 内核态与用户态的转换:应用程序的运行必然涉及到计算机硬件的操作,那就必须有用户态切换到内核态下才能实现,所以计算机工作时在频繁发生内核态与用户态的转换。
2核4线程: 2核代表有两个cpu,4线程指的是每个cpu都有两个线程=》假4核;
4核8线程: 4核代表有4个cpu,8线程指的是每个cpu都有两个线程=》假8核。
随机存取存储器(英语:Random Access Memory,缩写:RAM),也就是内存。
常说的也叫主存,是与CPU直接交换数据的内部存储器。
优点:可读可写,读写速度快,最快DDR4标准的内存读写速度高达50000MB/s。
缺点:一旦断电,数据就会丢失。
ROM 是 read only memory的简称,表示只读存储器。
只读存储器(ROM)是一种在正常工作时其存储的数据固定不变,其中的数据只能读出,不能写入。
即使断电也能够保留数据,要想在只读存储器中存入或改变数据,必须具备特定的条件。
优点:即使断电也可以保存数据。
缺点:只能读取,不能写入,读写速度慢。
cmos是电脑主板上的一块可读写的RAM芯片。
电脑主板上用来保存BIOS设置完电脑硬件参数后的数据,这个芯片仅仅是用来存放数据的。
优点:可读可写,可保存数据,耗电量极低。
缺点:读写速度慢,断电数据会丢失。
电脑硬盘是计算机最主要的存储设备,主要分为 “机械硬盘” 和 “固态硬盘” 2种。
磁道: 一圈数据,对应着一串二进制(1bit代表一个二进制位)
单位换算:
8bit比特(位) = 1Bytes字节
1024Bytes = 1KB
1024KB = 1MB
1024MB = 1GB
1024GB = 1TB
1024TB = 1PB
扇区: 一个扇区通过为512Bytes,站在硬盘的解读,一次性读写数据的最小单为为扇区。
IO延迟: 以一个7200rpm的硬盘为例;
7200rpm也就是7200转 / 分钟
120转 / 秒
1次转动花费8ms
平均寻道时间: 机械手臂转到数据所在磁道需要花费的时间,受限于物理工艺水平,目前机械硬盘可以达到的是5ms。
平均延迟时间: 转半圈需要花费4ms,受限于硬盘的转速。
IO延迟 = 平均寻道时间 + 平均延迟时间
优化程序运行效率的一个核心法则:能从内存取数据,就不要从硬盘取。
IO设备=设备的控制+设备本身
常见的机械硬盘接口:SATA
优点: 存储容量大,价格便宜,使用寿命长。
缺点: 读写速度慢,最快读写速度约为300M/s;有噪音;震荡易损坏;功耗大。
俗固态硬盘是用固态电子存储芯片阵列而制成的硬盘,SSD由控制单元和存储单元(FLASH芯片、DRAM芯片)组成。
常见的固态硬盘接口: SATA、M.2、PCI-E
优点: 读写速度快,最快读写速度约为5000M/s;轻便、功耗小、抗震防摔。
缺点: 最大容量小于机械硬盘;价格高;因为擦写次数的限制,寿命短。
操作系统是管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、
控制输入设备与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。
作用: 控制计算机硬件的基本运行,把使用硬件的复杂操作封装成简单的功能,给上层的应用程序使用,文件就是操作系统提供给应用程序/用户操作硬盘的一种功能。
计算机硬件是死的,计算机硬件的运行都受软件控制,所以说,软件相当于计算机的灵魂,具体来说软件分为两种;应用软件、系统软件==》控制底层硬件。
计算机系统三层结构: 应用程序、操作系统、计算机硬件。
什么是平台: 计算机硬件+操作系统==》平台;
PS: 软件的跨平台性指的是:一款软件可以任意平台上运行,是衡量软件质量高低的一个非常重要的指标。
BIOS(Basic Input Output System),基本输入输出系统。BIOS是被烧录在主板的ROM中的一个程序。(这里说的主板是纯主板,不包括CPU,内存和硬盘之类的硬件)
BIOS中的配置信息会被保存在CMOS中,一旦CMOS断电,这些配置信息就会被清空。虽然BIOS是一个底层的系统,但是也可以设置密码,开机后先于操作系统执行。
①计算机按下开机按钮,通电。
②BIOS开始运行,进行硬件检测:CPU、内存、硬盘…
③BIOS读取CMOS存储区中的配置参数,选择要启动的硬件设备。
④从启动的硬件设备中读取第一个扇区的信息。(引导根据分区格式的不同分为MBR和UEFI)
⑤根据分区信息读入bootloader启动装载模块,启动操作系统。
⑥操作系统询问BIOS,获得配置信息。系统监测设备驱动是否正常,然后将其调入内核。
①双击 “.exe” 结尾的快捷方式,找到文件的绝对路径。
②操作系统根据文件路径找到exe程序在硬盘的位置,控制其代码从硬盘加载到内存。
③控制CPU从内存中读取之前读入内存的应用程序的代码执行,应用程序启动完成。