[一]编程语言和编程
【1】什么是语言?
-
语言是一种人与人之间进行沟通的媒介,例如英语、汉语、俄语等。
[2]什么是编程语言?
-
编程语言是一种人与计算机之间进行沟通的媒介。
【3】为什么会有编程语言
-
是为了能够让人类与计算机能够进行有效的交流
-
计算机在编程者的控制下按照指定的逻辑执行任务,从而实现自动化。
通俗理解为在人与计算机的世界里,人是奴隶主,计算机是奴隶
人与计算机沟通的目的就是为了奴役计算机,让计算机按照人类的思维逻辑自发地去工作,从而解放人力,节约成本。
[4]什么是编程?
-
就是用人类的思维翻译成计算机能够理解和执行命令,将这些指令写入程序形成指令。
[5]编程的目的
-
为了让计算机按照人类的意愿完成特定的任务,实现自动化,提高工作效率,解放人力,以及创造各种应用和软件。
【二】计算机组成原理
【1】什么是计算机?
-
它是一个通电的设备,又叫做电脑,拥有处理数据、执行指令的能力
-
能够批量处理人类的指令和数据
【2】为什么要有计算机
-
就是为了提高效率,可以24小时不间断的工作
-
节约劳动成本,提高效益
【3】计算机的五大组成部分
(1)控制器
-
相当于人类的大脑,相互协调工作,完成工作(非常核心的部分)
【2】运算器
-
相当于我们的大脑进行逻辑运算和数字运算的功能
-
逻辑运算包括与或非,如果,但是....
-
数字运算包括加减乘除法...
-
【3】存储器
-
人类的记忆在于大脑中(海马体)
-
分为长期和短期记忆
-
长期记忆就是你一直记得的事情
-
短期记忆就是你睡一觉你就忘记啦
-
-
-
存储器也分为两种:内存和外存
(1)内存
-
就是短时间存储的数据
-
断电或者重启电脑就会消失
-
比如你写一篇作文几百字突然断电,所写的内容就会消失
-
(2)外存
-
外存又叫硬盘
-
硬盘分两种
-
机械硬盘
-
可以存储大量的数据,但是读取速度比较慢,并且价格很低
-
-
固态硬盘
-
可以存储大量的数据,读取速度非常快,但是价格太高
-
-
-
持久性的存储数据,并且断电不会消失
【4】输入设备
-
电脑输入内容的设备
-
鼠标键盘,麦克风,手写笔...
【5】输出设备
-
计算机展示信息的平台和设备
-
投影仪和打印机,显示器...
【6】总结
-
cpu是人的大脑,负责控制全身和计算
-
内存是人的记忆,负责临时存储
-
硬盘是人的笔记本,负责永久存储
-
输入设备是耳朵或眼睛或嘴巴,负责接收外部的信息存入内存
-
输出设备是你的脸部(表情)或者屁股,负责经过处理后输出的结果
-
以上所有的设备都通过总线连接,总线相当于人的神经
【4】计算机三大核心硬件
(1)cpu
-
控制器+运算器=cpu
-
中央控制处理器
-
控制整个电脑的调度和运算的
(2)内存
-
临时存储数据的地方
-
突然断电数据消失,数据安全性低,但是读取速度极快
(3)硬盘
-
持久化储存数据的地方
-
断电了数据也不会消失,数据安全性能高,只要硬盘不发生损坏,就不会数据丢失,读取速度很慢。
【5】程序的执行过程
-
数据准备
-
想用QQ,应该要下载 QQ 的应用程序
-
QQ的文件夹内,你会看到很多的文件数据,这些数据就是QQ的启动程序
-
-
数据读取
-
从硬盘中将QQ的数据读取到内存中,进行临时存储
-
双击QQ的图标,出现QQ登录界面这个操作就是数据从硬盘中读取到内存中的过程
-
-
数据写入
-
输入账号和密码,点击登陆进行登陆,
-
进入到QQ聊天界面的过程就是CPU从内存中将数据读取出来进行调度和运算的过程
-
-
关闭QQ ,CPU负责调度当前程序进行杀死,杀死过后要释放当前的内内存资源
-
点击关闭QQ,慢慢的消失
-
CPU将QQ的数据保存到内存中
-
内存中的数据再写入到硬盘中,进行持久化存储
-
QQ完全退出了
-
【三】操作系统的概念
【1】操作系统的历史
-
它的出现是为了简化我们硬件的操作
-
最开始的时候电脑就是一堆零件拼凑的
-
计算机是属于电工作的,电流有正负,高低电频之分,0/1
-
想要简化一系列操作指令,我们只能是找到这些指令的替代品
【2】操作系统
-
操作系统其实就是在一堆硬件的基础上实现功能和接口的封装,我们可以通过这些接口和程序进行硬件的调度
【3】开发一套操作系统
-
比如我们开发暴风影音
-
核心业务就是播放视频,输出音频
-
你在公司里,有这个需求就要完成这个需求,将这个功能开发一套
-
将视频文件数据从硬盘中读取出来放到内存中,再经过播放器进行转码
-
进行音视频输出
-
-
你的同桌在另一个公司,也需要开发这么一套功能
-
从零开发
-
-
-
所有开发者遵循共同的一套规范
-
我们共同研发出一个功能和接口
-
有一个所但是我们都有要是的副本
-
-
我们都遵循一个规范
-
核心业务就是播放视频,输出音频做成一个公共的
-
-
-
下次谁需要这个功能谁就来直接拿着用
【4】常见的操作系统
(1)Windows平台
-
Window7
-
Windowxp
-
Window 8
-
Window 10
-
Window 11
(2)Mac平台
-
IOS系统
-
intel
(3)Linux平台
-
centos
-
蓝鲸
-
...
(4)Andoraid
(5)IOS
(6)鸿蒙
【5】系统软件和操作软件的区别
(1)什么是系统软件
-
系统软件是就是建立在硬件至上的软件,负责调度整个硬件
-
Window、MacOS、Linux
-
功能包括调度计算机服务,读取文件,进程管理
(2)什么是操作软件
[1]系统软件
-
系统自带的服务 网卡服务、文件管理器
[2]应用软件
-
就是我们基于Window系统至上安装的其他软件
-
QQ、微信、QQ音乐、网易云、WeGame
【6】计算机系统的三层架构
-
底层叫硬件层
-
所有操作都属于硬件
-
-
中层叫操作系统层
-
所有的硬件调度服务都属于操作系统
-
-
顶层叫做应用层
-
进行工作和开发的软件
-
【7】平台
-
平台就是你的操作系统+硬件
-
Linux平台
-
用在服务器上
-
只需要一个 CPU+显卡+内存+硬盘
-
-
Window平台
-
Window系统 + CPU + ...
-
-
MacOS平台
-
macOS + Mac相关硬件
-
【四】为啥要学python
-
跨平台性高,学习成本低
-
电脑配置低也可以使用
-
-
window上能用,Linux上也能用(不建议)...
-
java需要java虚拟机
【五】编程语言
【1】编程语言的分类
-
编程语言的发展史,最开始的编程语言肯定不是我们现在学习的python(编程语言就是人与计算机之间的交流)
第一类:机器语言
-
机器语言就是计算机可以理解的语言,操作计算机的系统硬件
-
机器语言是最低级的语言,因为只有计算机能看懂。
机器指令
-
控制高低电频的变化组成一系列的指令就叫机器指令,能控制电脑硬件
如何写机器指令
-
首先你得必须记住计算机的全部指令及核心代码的含义
-
在编写机器指令程序的时候需要自己处理每一条数据,以及数据随时可可能会发生的意外情况
-
这个过程是一件及其繁琐且耗费经历的工作
-
一般发生在源头厂家中,原头厂家调控硬件内部设备的时候会用得到
机器语言的示例
-
机器语言及其繁琐且难以记忆
'''指令部份的示例''' 0000 代表 加载(LOAD) 0001 代表 存储(STORE) ... LOAD 0000 # 加载寄存器A STORE 0001 # 存储到寄存器B '''暂存器部份的示例''' 0000 代表暂存器 A 0001 代表暂存器 B ... '''存储器部份的示例''' 000000000000 代表地址为 0 的存储器 000000000001 代表地址为 1 的存储器 000000010000 代表地址为 16 的存储器 100000000000 代表地址为 2^11 的存储器
机器语言的优缺点
-
优点:执行效率高,可以直接操作底层硬件
-
缺点:开发效率低,学习成本高
-
跨平台性差,更换系统硬件就会导致机器指令失效
-
理解原码、反码、补码、位运算( & | )
-
底层单位数据的换算 # 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
第二类:汇编语言
-
汇编语言仍然可以直接操作底层硬件,但是美国人可以用一个字母或者一串字母来声明这串机器指令代表的含义
-
但是对比与机器语言来书,汇编语言就是一种进步,一定程度上降低了开发成本
什么是汇编语言
-
是用一个英文字母或者一串单词来代表机器语言的语言
示例
; 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 ; 调用内核功能
优缺点
-
优点:执行效率高,直接操作底层硬件
-
操作灵活,简化了一些机械指令何以让我们快速实现代码编程
-
可执行文件很小
-
-
缺点:开发效率底,也需要记住很多指令
-
发杂度很高,一些代码还是需要记住很多指令
-
跨平台型很差,直接操作底层硬盘
-
第三类:高级语言
-
高级语言就是从人类的角度出发,用人的思维将人的语言转换为计算机可以识别的语言
-
可以通过人类的指令实现操作计算机等硬件
-
-
我们不需要考虑底层硬件而是直接操作系统
-
更贴近与人类
高级语言的分类
-
按照编译方式分为:编译型和解释型语言
-
第一种编译型语言:就是将源代码一次性翻译成目标代码,然后生成一个可执行文件
-
下次执行代码只需要执行 翻译过后的文件即可
-
如果我觉得代码中某些代码需要修改和完善,修改完代码以后就需要再重新编译
-
-
比如:一次性将整篇文献翻译成汉语,直接使用
-
下次如果不改动,直接使用翻译稿即可
-
一旦发生改动。整篇文章重新翻译
-
-
优缺点
-
优点:一次编译处处执行,只需要编译一次,下一次可以直接拿过来用,效率很高
-
缺点:但是修改过后需要重新编译,跨平台性很差
-
Window系统上编译出来的可执行文件
-
-
-
编译型语言的代表:c,c++,c#,java
-
-
第二种解释型语言:解释性语言就是在执行代码的过程中,不是一次性变异而是用到哪里就编译到哪里
-
一点一点的进行编译后执行
-
比如说我们拿到一篇英文文献
-
翻译一段就用一段,用到哪就翻译到哪
-
效率就变低了
-
-
-
优缺点
-
优点:不需要改动就可以编译,开发效率高,跨平台性强
-
缺点:执行效率变慢啦
-
-
编译语言的代表:go,python
-
【2】开发语言的对比
(1)执行效率
-
机器语言
-
汇编语言
-
高级语言
-
编译型
-
解释型
-
(2)开发效率
-
高级语言
-
解释型
-
编译型
-
-
汇编型
-
机器语言
(3)跨平台性
-
高级语言
-
解释型
-
编译型
-
-
汇编型
-
机器语言
【六】python语言
【1】创建人
-
吉多·范罗苏姆(Guido van Rossum)。(俗称龟叔)
【2】名字的由来
-
Python这个名字,来自Guido所挚爱的电视剧《Monty Python’s Flying Circus》,他希望这个新的叫做Python的语言,能符合他的理想:
-
创造一种C和shell之间,语法能够像shell一样简洁,易学易用、可拓展性强,同时兼顾C的强大功能。
【3】全球语言排行榜
【4】Python语言的应用领域
-
人工智能、数据分析、爬虫、金融量化、云计算、WEB开发、自动化运维/测试、游戏开发、网络服务、图像处理等众多领域。
-
图像处理比如人脸识别
-
数据分析
【补充】Python全栈开发可从事方向 - Chimengmeng - 博客园 (cnblogs.com)
【5】国内大厂都在用
-
目前业内几乎所有大中型互联网企业都在使用Python
-
Youtube、Dropbox、BT、Quora(中国知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、腾讯、汽车之家、美团等。
-
【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版本我们学
-
最新版本的解释器不稳定存在bug
【7】Python的解释器的种类
(1)Cpython解释器
-
基于C语言开发的解释器版本
-
我们学习使用的解释器就是基于C语言开发出来的CPython解释器
-
底层源码都是C语言,如果从Python代码开源码,看不到C代码
-
从Python解释器的官网 GitHub
(2)jpython
-
基于Java写的Python解释器,没人用
(3)ipython
-
可以进行交互的解释器版本呢