【一】编程和编程语言是什么
【1】什么是编程
- 编程其实就是将人类的语言转换为计算机能识别的语言
【2】什么是编程语言
- 人和人之间都会进行交流
- 人和人之间交流的媒介就是语言
- 编程语言就是人与计算机之间进行交流的语言
【3】为什么要出现编程语言
- 最根本的原因就是计算机无法识别人类的语言
- 于是大家光丝记忆就开发了计算机能识别的语言
【4】为什么要做编程
- 编程就是为了让计算机能够理解人类的所下达的指定,然后让计算机实现自动完成任务的功能
- 在奴隶社会的时候,奴隶主会劳役下面的努力
- 人是需要吃饭和喝水的
【二】计算机的组成原理
【1】计算机的五大组成部分
(1)控制器
- 相当于人类的大脑,相互协调工作,完成任务
(2)运算器
- 相当于我们大脑进行的逻辑运算和数字运算的功能
- 逻辑运算包括是或非
- 数字运算包括加减乘除
(3)存储器
- 人类的记忆存在与大脑中,海马体
[1]内存
- 和我们短期记忆一样是临时存储数据的
- 断电重启数据就消失了
[2]外存
-
硬盘
- 机械硬盘
- 可以存储大量的数据,但是读取速度比较慢,并且价格很低
- 固态硬盘
- 可以存储大量的数据,但是读取速度会非常快,价格太高了
- 机械硬盘
-
可以持久性的存储数据,并且断电不会消失
(4)输入设备
- 鼠标键盘、麦克风、手写笔 ....
(5)输出设备
- 投影仪、显示器 ...
(6)总结
- 控制器相当于人类的大脑 控制去全身和计算
- 内存像是人的记忆 临时储存
- 硬盘像是人的笔记本 永久储存
- 输入设备像是人的眼睛 耳朵 嘴巴 接受外部的信息存入内存
- 输出设备像是人的表情 反馈结果
(7)程序的执行过程
- 数据准备
- 数据读取
- 数据写入
- 数据关闭
【2】计算机的主要三大核心硬件
(1)CPU
- 控制器 + 运算器 = CPU
- 中央控制处理器
- 控制整个电脑的调度和运算的
(2)内存
- 临时存储数据的地方
- 虽然断电数据消失,数据安全性低,但是读取速度极快
(3)硬盘
- 持久化存储数据的地方
- 虽然断电数据不消失,但是数据安全性高,只要你的硬盘不发生损坏,就不会造成数据的丢失。读取速度慢
【三】操作系统
【1】操作系统的由来
-
出现的目的就是为了简化我们的硬件操作
- 在最开始的时候,电脑就是一大堆硬件拼凑在一起
-
随着时代的发展,我们想要简化一系列操作指令,我们只能是找到这些指令的替代品
【2】操作系统
- 操作系统就是在硬件的基础上实现功能和接口的封装,我们可以通过这些接口和程序进行硬件的调度
【3】操作系统的开发
- 所有开发者遵循共同的一套规范
- 我们共同研发出一个功能和接口
- 有一个锁但是我们都有钥匙的副本
- 我们都遵循一个规范
- 核心业务就是播放视频,输出音频做成一个公共的
- 我们共同研发出一个功能和接口
- 下次谁需要这个功能谁就来直接拿着用
【4】常见的操作系统
(1)Windows平台
- Window7
- Windowxp
- Window 8
- Window 10
- Window 11
(2)Mac平台
- IOS系统
- intel
(3)Linux平台
- centos
- 蓝鲸
(4)Andoraid
【5】什么是系统软件什么是操作软件
(1)什么是系统软件
- 系统软件是就是建立在硬件至上的软件,负责调度整个硬件
- Window、MacOS、Linux
- 功能包括调度计算机服务,读取文件,进程管理 ...
(2)什么是操作软件
[1]系统软件
- 系统自带的服务 网卡服务、文件管理器
[2]应用软件
- 就是我们基于Window系统至上安装的其他软件
- QQ、微信、QQ音乐
【6】计算机系统的三层架构
- 底层就是硬件层
- 所有的操作都是基于硬件的
- 中间层就是操作系统层
- 所有的硬件调度服务都是基于操作系统的
- 最上面是应用层
- 进行工作和开发的软件层
【7】平台
-
平台就是你的操作系统 + 你的硬件
-
Window平台
- Window系统 + CPU + ...
-
MacOS平台
- macOS + Mac相关硬件
【四】编程语言
【1】机器语言
(1)什么是机器语言
- 机器语言就是计算机可以理解的语言,操作计算机的系统硬件
- 我们可以控制高低电频的变化组成一系列的指定去操作我们的系统硬件
(2)机器指令
- 控制高低电频的变化组成一系列的指令就叫做机器语言 能控制电脑硬件
(3)怎么写机器指令
- 首先你得必须记住计算机的全部指令及核心代码的含义
- 在编写机器指令程序的时候需要自己处理每一条数据,以及数据随时可可能会发生的意外情况
- 一般发生在源头厂家中,原头厂家调控硬件内部设备的时候会用得到
(4)机器语言的例子
'''指令部份的示例'''
0000 代表 加载(LOAD)
0001 代表 存储(STORE)
...
LOAD 0000 # 加载寄存器A
STORE 0001 # 存储到寄存器B
'''暂存器部份的示例'''
0000 代表暂存器 A
0001 代表暂存器 B
...
'''存储器部份的示例'''
000000000000 代表地址为 0 的存储器
000000000001 代表地址为 1 的存储器
000000010000 代表地址为 16 的存储器
100000000000 代表地址为 2^11 的存储器
(5)机器语言的优缺点
- 优点
- 执行效率高
- 可以直接操作计算机的底层硬件
- 执行效率高
- 缺点
- 开发效率低
- 学习成本高,开发效率慢
- 跨平台性很差
- 所以更换系统硬件就会导致机器指令失效
- 理解原码、反码、补码、位运算( & | )
- 开发效率低
底层单位数据的换算
# 00000001 表示1字节,有256种排列方式,从0到255。
# 八个字节表示一个 bytes
# 8 字节 = 1 bytes
# 1024 bytes = 1 kB
# 1024 kb = 1 MB
# 1024 mb = 1GB
# 1024 GB = 1 TB
# 1024 TB = 1 ZB
【2】汇编语言
- 汇编语言仍然可以直接操作底层硬件,但是美国人可以用一个字母或者一串字母来声明这串机器指令代表的含义
- 但是对比与机器语言来书,汇编语言就是一种进步,一定程度上降低了开发成本
(1)什么是汇编语言
- 汇编语言其实就是用一个英文字母或者一串单词来代表机器语言的语言
(2)汇编语言示例
; hello.asm
section .data ; 数据段声明
msg db "Hello, world!", 0xA ; 要输出的字符串
len equ $ - msg ; 字串长度
section .text ; 代码段声明
global _start ; 指定入口函数
_start: ; 在屏幕上显示一个字符串
mov edx, len ; 参数三:字符串长度
mov ecx, msg ; 参数二:要显示的字符串
mov ebx, 1 ; 参数一:文件描述符(stdout)
mov eax, 4 ; 系统调用号(sys_write)
int 0x80 ; 调用内核功能
; 退出程序
mov ebx, 0 ; 参数一:退出代码
mov eax, 1 ; 系统调用号(sys_exit)
int 0x80 ; 调用内核功能
(3)汇编语言的优缺点
- 优点
- 执行效率高
- 直接操作计算机底层硬件
- 操作灵活
- 简化了一些机器指令可以让我们快速实现代码编程
- 可执行文件很小
- 执行效率高
- 缺点
- 开发效率低
- 仍然需要记住很多指令集
- 复杂度很高
- 一串代码可能会用到很多指令集
- 跨平台性很差
- 直接操作计算机底层硬件
- 开发效率低
【3】高级语言
(1)什么是高级语言
- 高级语言就是从人类的角度出发,用人的思维将人的语言转换为计算机可以识别的语言
- 可以通过人类的指令实现操作计算机等硬件
- 我们不需要考虑底层硬件而是直接操作系统
- 更贴近与人类
(2)高级语言的分类
- 按照编译方式分为两类
- 编译型语言
- 解释型语言
(3)编译型语言
[1]什么是编译型语言
-
编译型语言就是将源代码一次性翻译成目标代码,然后生成一个可执行文件
- 下次执行代码只需要执行 翻译过后的文件即可
-
如果我觉得代码中某些代码需要修改和完善,修改完代码以后就需要再重新编译
-
比兔说我们拿到一篇英文文献
- 一次性将整篇文献翻译成汉语,直接使用
- 下次如果不改动,直接使用翻译稿即可
- 一旦发生改动。整篇文章重新翻译
- 一次性将整篇文献翻译成汉语,直接使用
[2]优缺点
- 优点:
- 一次编译处处执行,只需要编译一次,下一次可以直接拿过来用,效率很高
- 缺点
- 但是修改过后需要重新编译
- 跨平台性很差
- Window系统上编译出来的可执行文件
[3]编译型语言的代表
- C、C++、C#、Java
(4)解释型语言
[1]什么是解释型语言
-
解释性语言就是在执行代码的过程中,不是一次性变异而是用到哪里就编译到哪里
-
一点一点的进行编译后执行
-
比兔说我们拿到一篇英文文献
- 翻译一段就用一段,用到哪就翻译到哪
- 效率就变低了
[2]解释型语言的优缺点
- 优点
- 不需要改动后再编译,开发效率提高了
- 跨平台性很强
- 缺点
- 执行效率变慢了
[3]编译语言代表
- Go、Python
【4】开发语言对比
(1)执行效率
- 机器语言
- 汇编语言
- 高级语言
- 编译型
- 解释型
(2)开发效率
- 高级语言
- 解释型
- 编译型
- 汇编语言
- 机器语言
(3)跨平台性
- 高级语言
- 解释型
- 编译型
- 汇编语言
- 机器语言
【五】Python语言
【1】Python语言的应用领域
- 人工智能、数据分析、爬虫、金融量化、云计算、WEB开发、自动化运维/测试、游戏开发、网络服务、图像处理等众多领域。
- 图像处理比如人脸识别
- 数据分析
- 【补充】Python全栈开发可从事方向 - Chimengmeng - 博客园 (cnblogs.com)
【2】Python的解释器的种类
(1)Cpython解释器
-
基于C语言开发的解释器版本
-
我们学习使用的解释器就是基于C语言开发出来的CPython解释器
-
底层源码都是C语言,如果从Python代码开源码,看不到C代码
-
从Python解释器的官网 GitHub
(2)jpython
- 基于Java写的Python解释器,没人用
(3)ipython
- 可以进行交互的解释器版本呢