什么是编程
什么是语言?
中文,英语,日语,语言是拿来交流沟通的
编程语言:和计算机交流一种介质
什么是编程
表达自己的想法(实现一些东西)
编程:通过编程语言做一些事情,写一堆.py/.obj/.css文件
为什么要编程
编程的目的:取代劳动力,然后才帮人类完成一些具体的事情
计算机的组成
CPU(大脑)
电脑创立初控制器和运算器是分开的
控制器(控制)
控制硬件(运算器,存储器,输入设备,输出设备)
运算器(运算)
算术运算(1+1=2)+逻辑运算(今天下雨我就带伞)
存储器(记忆)
主存(脑子)
内存(内存4gb--》8gb),内存越大,同时能运行的程序越多
优点:速度快
缺点:容量小,断电即消失
外存(笔记本)
机械硬盘--》128gb固态硬盘
优点:容量非常大,永久存储
缺点:速度慢,
I/O设备(Input/Output设备)(网络并发延迟问题 )
输入设备(眼睛)
输入信息,键盘/鼠标/麦克风/==u盘==
输出设备(决策)
输出信息,显示屏/打印机/==U盘==
冯诺依曼机,图灵(提出计算机猜想)
计算机组成的补充
多核CPU
一个CPU相当于一个大脑,左手画圆右手画方(太简单可忽略时间差)
多核CPU--》计算机同时拥有多个CPU,同一时刻处理多件事情(多进程)
32位和64位
计算机如何存储图片:计算机只认识0(低电频和)1(高电频),图片本质就是一串0和1
鼠标点击--》低电频低电频低电频高电频低电频--》00010(化学材料特殊性展示,显示屏有寿命,化学材料消耗)
光盘--》凹0凸1刻印
32位--》计算机一次性能处理32个0和1
64位--》计算机一次性能处理64个0和1
32位和64位本质上是同一种东西
安装包是64位的(一次性给你64个0和1),计算机是32位的(一次性能接收32个0和1)
安装包是32位的,计算机是64位的(可兼容)
==向下兼容性==
机械硬盘工作原理
凹凸凹凸凹凸 010101
机械手臂
读取数据
磁道
存储数据
扇面(整个为磁面)
划分了磁道,多个扇面(扇区的最小单位通常为512kb,计算机一次性从机械硬盘上读取512kb数据)其实就是一个盘(区)
平均寻(磁)道时间
机械臂抬起放下时间,一直放下磁面移动时造成数据损坏
由于工业水平限制--》5ms
平均延迟时间
不考虑分区情况,7200r/min的电脑
$$
7200/60=120r/s\
1/120=0.0083s=8.3ms\
8.3/2=4.15ms
$$
==平均寻找数据时间==
$$
5+4.15=9.15ms
$$
固态硬盘
基于电容存储,(有电1无电0)成本高,数学的算法压缩文件
优点:不需要机械手臂;基于电存储
操作系统
如果只有刚刚说的五大组成刚刚说的五大组成,你要读取数据,只能自己滑动机械手臂
0.17个GB留给了一部分其他东西
什么是文件
存储信息的介质,操作系统提供给你的一个虚拟的概念,这个虚拟的概念可以用来存储信息,帮你滑动了机械手臂
==接口(操作系统提供的,而文件只是其中的一个接口):帮你把对硬件的复杂操作简单化==
双击接口(操作系统提供的):让你快速打开一个应用程序
操作系统有什么用
提供给我们一个一个接口,让我们不再关心硬件的复杂操作,让复杂操作简单化
==应用程序的启动(以启动QQ为例)==
- 双击qq--》让操作系统通知cpu(企鹅是操作系统提供给你的)(找到qq在硬盘的位置)
- cpu让内存去外存读取qq的数据,qq数据进入内存
- 启动qq
==计算机的组成(有了操作系统之后==)
- 应用程序(软件):和操作系统交互
- 操作系统:和硬件交互
- 硬件:硬件直接交互
==操作系统的启动(开机)==
启动软件,首先启动操作系统找软件在硬盘上的位置,操作系统本质也是一个软件,启动操作系统也需要找到操作系统在硬盘中的位置(要找到就必须通过操作系统)
临时操作系统(ROM存储器)
==计算机出厂的时候就写死了==,他会去CMOS存储器上调用操作系统的路径,只负责寻找操作系统路径 ,
临时内存(CMOS存储器)
用电池供电,存储了操作系统的路径(==未被写死,重装操作系统修改启动盘的位置,改的就是这个==)存储了时间
- 开机,启动临时操作系统
临时操作系统去CMOS存储器上找到操作系统的路径
启动操作系统,临时操作系统关闭
编程语言分类
计算机只认识0和1
编码
0001--》a
0011--》b
0100--》c
0101--》d
0111--》+
00010011--》ab
机器语言
写0和1
000101110011--》(设备)--》低低低高
早期只有顶级科学解才能使用计算机
优点:速度非常快执行速度非常快,直接和硬件交互
缺点:开发速度非常缓慢
print('hello')-->0010101100101001
汇编语言
add--》0111
add(a,b)--》(设备)--》0001101110011--》设备--》低低低高(高低压电频)
优点:(相交于机器语言):开发效率高
缺点(相交于机器语言):执行效率低
高级语言
a+b(解释型语言)--》(设备)--》a+b(高级语言/编译型语言)--》(设备)--》add,a,b(汇编语言,无括号)--》
(设备)--》000101110011(机器语言)--》(设备)--》低低低高(高低压电频)
编译型语言(通过设备的翻译形式)
类似于谷歌翻译,一次翻译所以代码为机器代码
# 这串代码表示:打印1+2的值
x=1
y=2
print(x+y)
'nick handsome
nice to meet you
good morning'
'0010010100100000110101010'
'''
010010100100000
运行
010010100100000
运行
010010100100000
运行
'''
优点(相较于解释型语言):执行效率高
缺点(相较于解释型语言):开发效率低(调试bug非常复杂)
解释型语言(通过设备的翻译形式)
类似同声传译,一次翻译一句,==解释型语言的翻译器是通过编译型语言写出来的==
优点(相较于编译型而言):开发效率高
缺点(相较于编译型而言): 执行效率低
网络瓶颈效应
编程--》完成具体的事情--》帮人类干活
写一个应用程序(一定要联网)
程序一定要通过网络通信
木桶效应
A人的枪打到B人的头
网络的瓶颈效应
网络的通信时间(1000s)远远大于程序的执行时间(1s)--》
程序的执行效率就没必要考虑了--》网络的应用程序(解释型语言)
操作系统(单机操作的程序)--》编译型语言
操作系统1G内存
微内核0.1G内存+0.1G网络通信10G放到服务器