[一]编程和编程语言是什么
【1】什么是编程
编程就是将人类的语言转换为计算机能识别的语言
【2】什么是编程语言
- 任何人之间都会进行交流
- 人和人之间交流的媒介就是语言
- 编程语言就是人与计算机进行交流的语言
【3】为什么要常出现编程语言?
- 最根本的原因就是计算机无法识别人类语言
- 于是就开发了计算机能识别的语言
【4】为什么要做编程?
- 编程就是为了让计算机能够理解人类所下达的指令,然后让计算机实现自动完成任务的功能
[二]计算机组成原理
【1】什么是计算机
- 计算机就是通电的智能机器
- 能够批量处理人类的指令和数据
【2】为什么要发明计算机
- 节省劳动成本、增加效益
【3】计算机的五大组成部分
(1)控制器
- 相当于人类的大脑,可以相互协调、工作。
(2)运算器
- 相当于我们大脑进行的逻辑运算和数字运算的功能
- 逻辑运算包括与或非、如果、但是、其他
- 数据运算:加减乘除
(3)存储器
- 人类的记忆存在与大脑中,如海马体
- 人类的记忆也分为:长期记忆、短期记忆
(1)短期记忆:内存
- 临时存储数据,断电重启数据消失。
(2)长期记忆:外存
- 硬盘
- 机械硬盘
- 可以存储大量的数据,但是读取速度比较慢,价格低
- 固态硬盘
- 可以存储大量的数据,读取速度快,但是价格高
- 机械硬盘
- 可以持久性的存储数据,并且断电不会消失
(4)输入设备
- 就是我们使用的向电脑输入内容的设备
- 鼠标键盘、麦克风...
(5)输出设备
- 计算机向我们展示信息的平台和设备
- 投影仪、显示器....
[4]计算机的三大核心硬件
(1)CPU
- 控制器+运算器=CPU
- 中央控制处理器
- 控制整个电脑的调度和运算
(2)内存
- 临时存储数据的地方
- 断电数据消失,数据安全性低,但是读取速度快
(3)硬盘
- 持久化存储数据的地方
- 断电数据不消失、数据安全性高,读取速度慢
[5]程序的执行过程
- 数据准备
- 数据读取
- 数据写入
[三]操作系统的概念
【1】操作系统的由来
- 出现的目的就是为了简化操作
- 为了简化一系列的操作指令,只能是找到这些指令的替代品
【2】操作系统
- 操作系统其实就是再一堆硬件的基础上实现功能和接口的封装,通过这些接口和程序进行硬件的调度。
【3】开发一套操作系统
- 开发一款视频软件
- 核心业务:播放视频、输出音频
- 将视频文件数据从硬盘中读取出来到内存中,经过播放器进行转码
- 进行音视频输出
- 核心业务:播放视频、输出音频
【4】常见的操作系统
(1)Windows平台
(2)Mac平台
(3)Linux平台
(4)Andoraid
(5)IOS
(6)鸿蒙
【5】系统软件和操作软件的区别
(1)什么是系统软件
- 系统软件就是建立在硬件之上的软件,负责调度整个硬件
- Windows,MacOS,Linux
- 功能包括调度计算机服务、读取文件、进程管理...
(2)什么是操作系统
【1】系统软件
- 系统自带的服务,网卡服务,文件管理器
【2】应用软件
- 基于Windows系统之上安装的其他软件
【6】计算机系统的三层架构
- 底层就是硬件层
- 所有的操作都是基于硬件的
- 中间层就是操作系统层
- 所有的硬件调度服务都是基于操作系统的
- 最上面的是应用层
- 进行工作和开发的软件层
【7】平台
- 平台就是操作系统+硬件
- Linux平台
- 用在服务器上
- CPU+显卡+内存+硬盘
- Windows平台
- Windows系统+CPU+...
- MacOS平台
- macOS+Mac相关硬件
【四】为什么要学Python
【五】编程语言
【1】编程语言的分类
- 编程语言的发展史,在开始的编程语言(人与计算机进行交流)
【2】机器语言
(1)什么是机器语言
- 机器语言就是计算机可以理解的语言。操作计算机的系统硬件
- 由于计算机基于电工作,电分为高低电频,0/1
- 我们可以控制高低电频的变化组成一系列的指定去操作系统硬件
- 机器语言因为可以直接操作计算机硬件,所以是最低级的语言。
(2)机器指令
- 控制高低电频的变化组成一系列的指令就叫机器指令,能控制电脑硬件
(3)如何写机器指令
- 记住计算机的全部指令及核心代码的含义
- 在编写机器指令程序的时候需要自己处理每一条数据,以及数据随时可能会发生意外情况
(4)机器语言的示例
- 机器语言及其繁琐且难以记忆
(5)及其语言的优缺点
- 优点
- 执行效率高
- 可以直接操作计算机的底层硬件
- 执行效率高
- 缺点
- 开发效率低
- 学习成本高,开发效率慢
- 跨平台性很差
- 更换系统硬件会导致机器指令失效
- 理解源码、反码、补码
- 开发效率低
底层单位数据的换算
#00000001 表示1字节,有256种排列方式,从0到255。
#00000001 -----> 1bytes -----> 256种排列方式 -----> 从0开始计数就是0-255
#八个字节表示一个 bytes
单位换算公式
1024 bytes = 1 KB
1024 KB = 1 MB
1024 MB = 1 GB
1024 GB = 1 TB
1024 TB = 1 ZB
【3】汇编语言
- 汇编语言可以直接操作底层硬件
- 对比机器语言来说,汇编语言就是一种进步,一定程度上降低了开发成本
(1)什么是汇编语言
- 汇编语言就是用一个英文字母或一串单词来替代
(2)汇编语言示例
hello world
; 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)汇编语言的优缺点
-
优点
- 执行效率高
- 直接操作计算机底层硬件
- 操作灵活
- 简化了机器指令可以快速实现代码编程
- 可执行文件很小
- 执行效率高
-
缺点
-
开发效率低
- 需要记住很多指令集
-
复杂度很高
-
跨平台很差
- 直接操作计算机底层硬件
【4】高级语言
(1)什么是高级语言
- 高级语言就是从人类角度出发,用人类语言转化为计算机可以识别的语言
- 可以通过人类的指令实现操作
- 更贴近人类
(2)高级语言分类
- 按照编译方式分为两类
- 编译型语言
- 解释型语言
(3)编译型语言
[1]什么是编译型语言
- 编译型语言就是将源代码一次性翻译成目标代码
- 下次执行代码只需要执行,翻译过后的文件即可
[2]优缺点
- 优点:
- 一次编译处处执行,效率高
- 缺点:
- 修改过后需要重新编译
- 跨平台性很差
[3]编译型语言的代表
- C、C++、Java
(2)解释型语言
[1]什么是解释型语言
- 解释型语言就是在执行代码过程中,不是一次性变异而是用到哪里编译到哪里
- 一点一石的进行编译后执行
[2]解释型语言优缺点
- 优点
- 不需要改动后在编译,开发效率高
- 跨平台性强
- 缺点
- 执行效率慢
[3]编译语言代表
- Go、Python
【5】语言对比
(1)执行效率
- 机器语言
- 汇编语言
- 高级语言
- 编译型
- 解释型
(2)开发效率
- 高级语言
- 解释型
- 编译型
- 汇编语言
- 机器语言
(3)跨平台性
- 高级语言
- 编译型
- 解释型
- 汇编语言
- 机器语言
【六】Python语言介绍
【1】创始人
- 吉多·范罗苏姆(Guido van Rossum)。
【2】名字的由来
- Pyhton的名字,是来自Guido喜欢的电视剧《Monty Python's Flying Circus》,他希望这个语言叫做Python的语言。
- 创造一种C和shell之间,语法能够像shell一样简洁,易学易用、可拓展性强,同时兼顾C的强大功能。
【3】全球语言排行榜
【4】Python语言的应用领域
- 人工智能、数据分析、爬虫、金融量化、云计算、web开发、自动化运维/测试、游戏开发、网络服务、图像处理等众多领域。
【5】国内应用
Python在国内目前几乎所有的大中型互联网企业都在使用Python
- Quora(中国知乎)、豆瓣、BiliBili、百度、腾讯....
【6】Python解释器的发展史
-
1989年,Guido开始写Python语言的编译器。
-
1991年,第一个Python编译器诞生。
- 它是用C语言实现的,并能够调用C语言的库文件。
- 从一出生,Python已经具有了:类,函数,异常处理,包含表和词典在内的核心数据类型,以及模块为基础的拓展系统。
-
Python 2.7 - July 3, 2010
-
Python 3.6 - 2016-12-23 发布python3.6.0版
-
本次将使用Python3.10
【7】Python的解释器种类
(1)Cpython解释器
- 基于C语言开发的解释器版本
- 底层源码都是C语言。
Cpython是我学习使用的解释器
(2)jpython
- 基于Java写的Python解释器
(3)ipython
- 可以进行交互的解释器版本