【一】编程和编程语言

【1】什么是编程语言

  • 语言:就是人与人和人与动物之沟通交流的媒介
  • 编程语言:就是任何计算机之间沟通交流的媒介

【2】什么是编程

  • 中国人和美国人交流,借助翻译器进行翻译 将中文转换成英文将英文转换成中文
  • 编程:人与计算机无法直接使用人类的语言进行沟通,那么将人想要表达的含义翻译给计算机的过程就是编程

【二】计算机的组成原理

【1】计算机的五大组成部分

(1)控制器

  • 相当于计算机的大脑,控制整个计算机的硬件协调工作

  • 相当于你的大脑,负责协调整个身体的运行

(2)运算器

  • 处理计算机中的各种数据运算和逻辑判断
  • 相当于人类的大脑 的某部分
  • 控制器 + 运算器 = CPU 相当于人类的大脑

(3)存储器

  • 存储数据,存储电脑中临时性或永久性的数据

  • 外存:相当于你的硬盘 (机械硬盘和固态硬盘) :负责永久性的存储数据

    • 固态硬盘:读取速度非常快但是贵
    • 机械硬盘:读取速度慢但是便宜、数据安全性高
  • 内存:负责临时性数据存储

    • 重启或关机后临时性数据会消失

(4)输出设备

  • 显示器 / 音箱 / 耳机 …
  • 将计算机计算出的内容展示给用户

(5)输入设备

  • 键盘 / 鼠标 / 耳麦 …
  • 向计算机中输入数据的设备

【2】计算机五大组成部分小结

  • 控制器 + 运算器 —> 控制整体硬件的运行以及处理数据运算和逻辑运判断—>两者整体构成了 CPU

  • 存储器 : 存储电脑运行产生的数据

    • 外存 : 存储永久性数据
    • 内存 : 存储临时性数据
  • 输入设备和输出设备 : 向计算机中输入内容和计算机展示结果

【3】计算机三大核心硬件

(1)CPU

  • 由控制器和运算器组成。
  • 用于计算数据,执行程序的指令
  • 负责控制计算机的操作。
  • 计算机的"大脑",决定程序执行的顺序和过程。

(2)硬盘

  • 读取速度相对较慢。
  • 用于永久保存数据,包括操作系统、应用程序和用户数据等
  • 断电后数据不会丢失,是一种非易失性存储器。
  • 作为长期存储的主要设备,容量通常较大。

(3)内存

  • 读取速度快,基于电工作。
  • 用于存储正在运行的程序和临时数据
  • 断电后数据立即丢失,是一种易失性存储器。
  • 作为CPU直接访问的存储介质,提供了高速的数据读写能力。

(4)补充:进制换算

TB,PB, Eb, Zb, YB
1B= 8bit
1KB=2(10)B=1024B; 括号中的数字为2的指数(即多少次方) 
1MB=2(10)KB=1024KB=2(20)B; 
1GB=2(10)MB=1024MB=2(30)B。 
1TB=2(10) GB=1024GB=2(40)B 
1PB=2(10) TB=1024TB=2(50)B 
1EB=2(10) PB=1024PB=2(60)B 
1ZB=2(10) EB=1024EB=2(70)B 
1YB=2(10) ZB=1024ZB=2(80)B 

1Byte相当於一个英文字母
Kilobyte(KB)=1024B相当於一则短篇故事的内容。 
Megabyte(MB)=l024KB相当於一则短篇小说的文字内容。 
Gigabyte(GB)=1024MB相当於贝多芬第五乐章交响曲的乐谱内容。 
Terabyte(TB)=1024GB相当於一家大型医院中所有的X光图片资讯量。 
Petabyte(PB)=l024TB相当於50%的全美学术研究图书馆藏书资讯内容。 
Exabyte (EB)=1024PB;5EB相当於至今全世界人类所讲过的话语。 
Zettabyte(ZB)=1024EB如同全世界海滩上的沙子数量总和。 
Yottabyte(YB)=1024ZB相当於7000位人类体内的微细胞总和。

【4】计算机的操作系统

(1)操作系统的由来

操作系统的出现是为了简化硬件操作,提供统一的接口供应用程序使用。

在开发应用程序时,不同开发者无需重复编写控制硬件的底层代码,而是调用操作系统提供的接口。

这样,开发者能够专注于应用程序的业务逻辑,提高开发效率。

(2)常见的操作系统

  • 客户端 PC电脑端
    • Windows系统
    • MacOS系统
    • linux系统
  • 移动端 App
    • 安卓
    • IOS
    • 鸿蒙

(3)软件

  • 系统软件:操作系统的软件 Windows系统 , 里面有很多内置的应用
  • 应用软件:根据用户的特定需求开发出来的软件 可以运行在操作系统之上

【5】计算机系统的三层架构

(1)硬件层

负责所有的基础硬件设置

(2)操作系统层

在硬件层之上有一个操作系统来统筹所有的操作

(3)应用层

在操作系统之上安装应用

【6】平台

平台就是 硬件+ 操作系统就平台

比如常见的平台有:

  • Windows 平台
  • MacOS 平台
  • linux 平台

有的应用可以在window上面用 有的只能在MacOS上面用,那么跨平台就是指一个应用可以在多种平台上面使用

【三】编程语言介绍

【1】什么是编程语言

人与计算机之间进行交流的媒介就是编程语言

【2】按照发展阶段

(1)机器语言

机器语言就是计算机可以理解的,直接操作底层硬件的语言,因为计算机是基于电信号工作的 ,电信号有高低电频代表0和1,通过0和1进行控制计算机,通过不同的二进制指令执行不同的功能

# 一个人是 0 一个人是 1
# 01 a 
# 10 b

# 01010101 aaaa
# 10101010 bbbb

# 01100110 abab

# 01010101010101 开机
# 10101010101010 关机

机器指令:就是二进制 0 或 1 组成的一串指令,可以直接操作底层硬件

'''指令部份的示例'''
 0000 代表 加载(LOAD)
 0001 代表 存储(STORE)
 ...
 
LOAD 0000  # 加载寄存器A
STORE 0001 # 存储到寄存器B

'''暂存器部份的示例'''
0000 代表暂存器 A 
0001 代表暂存器 B 
...

'''存储器部份的示例'''
000000000000 代表地址为 0 的存储器
000000000001 代表地址为 1 的存储器 
000000010000 代表地址为 16 的存储器
100000000000 代表地址为 2^11 的存储器

机器语言的优点

  • 执行效率高:机器语言直接操作底层硬件

机器语言的缺点

  • 开发效率低:需要记住很多二进制指令

  • 跨平台性差:不同的系统需要重新开发

  • 学习成本高:学习次的成本很高

(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            		; 调用内核功能

汇编语言的优点

  • 直接操作底层硬件 : 执行效率高
  • 操作灵活:可以用英文字母代替机器指令
  • 可执行文件小 :编译后的文件小

汇编语言的缺点

  • 开发效率低 : 只停留在最初的阶段用一个字母或特殊字符代替一些指令,记住所有的字母和字符代替idea指令才行
  • 跨平台型差:在不同的平台开发
  • 复杂度高:所有的英文字母 组合起来很麻烦

(3)高级语言

  • 从人的角度出发,以人类可读的字符编写程序
    • 而人类的字符是在向操作系统发送指令,而非直接操作硬件,所以高级语言是与操作系统打交道的
    • 此处的高级指的是高层、开发者无需考虑硬件细节
  • 与低级语言相比,高级语言更贴近人类语言,使开发者无需考虑硬件细节,提高了开发效率。
  • 但正因为高级语言离硬件较远,更贴近人类语言,执行效率相对较低。
    • 人类可以理解,而计算机则需要通过翻译才能理解,所以执行效率会低于低级语言。
高级语言的分类

按照翻译方式的不同分为两种:

编译型语言:c / c++ / c# / java

解释型语言 : python / go / php

【3】编译型语言

编译型语言将整篇源程序一次性翻译成目标代码,然后生成可执行文件。

修改源代码后,需要重新编译整个程序。虽然执行效率较高,但开发效率相对较低,跨平台性也较差。

例子:给你一篇英文文献,将整篇文章全部翻译完成以后,再进行浏览

优点:

执行效率高:在执行运行文件之前先对文件进行编译 —> 将高级语言转换为 机器语言或者汇编语言 —> 执行的是编译后的文件

【4】解释型语言

解释型语言逐句翻译源程序成中间代码,由解释器逐句执行。

修改源代码后,不需要重新编译整个程序,直接执行即可。

执行效率较低,但开发效率高,且具有较强的跨平台性。

例子:给你一篇英文文献,在每一段的文献中进行翻译,翻译之后进行浏览

优点:

开发效率高:写的程序可以边编译边执行,如果其中一段代码那报错然后修改,不需要等待所有的内容加载完后再去执行

跨平台性强:不需要经过编译

【5】总结

根据不同的优缺点比较不同的语言

执行效率 : 机器语言 > 汇编语言 > 高级语言

开发效率 : 机器语言 < 汇编语言 < 高级语言

【四】Python

【1】Python 含义

  • 代表的是Python这门编程语言
  • 代表的是Python的语法风格

【2】Python的创始人

  • Python的创始人为吉多·范罗苏姆(Guido van Rossum)。

在这里插入图片描述

【3】Python解释器的种类

我们使用的Python是 CPython ,底层是 C 语言编写的!

(1)CPython

官方的Python解释器本质就是基于C语言开发的一个软件,该软件的功能就是读取以.py结尾的文件内容,然后按照Guido定义好的语法和规则去翻译并执行相应的代码。
这种用C实现的解释器称为CPython,它是python领域性能最好,应用最广泛的一款解释器,我们在后面提到的解释器指的都是Cpython解释器。
但其实解释器作为一款应用软件,完全可以采用其他语言来开发,只要能解释python这门语言的语法即可。
Python解释器的一些种类如下,简单了解即可

(2)Jython

JPython解释器是用JAVA编写的python解释器,可以直接把Python代码编译成Java字节码并执行,它不但使基于java的项目之上嵌入python脚本成为可能,同时也可以将java程序引入到python程序之中。

(3)IPython

IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。
这就好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。
CPython用>>>作为提示符,而IPython用In [序号]:作为提示符。

(4)PyPy

PyPy是Python开发者为了更好地Hack Python而用Python语言实现的Python解释器。
PyPy提供了JIT编译器和沙盒功能,对Python代码进行动态编译(注意不是解释),因此运行速度比CPython还要快。

(5)IronPython

IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。

【五】补充Python安装

【1】多版本Python共存解决方案

复制当前 Python安装目录下的 python.exe 程序 —> 改个名字 代版本号的名字

Python3.10 解释器 —> python310

【2】默认Python解释器版本

环境变量种存在多个Python版本的情况下 将需要设置为默认版本的解释器的位置移动到最前面

【3】PIP换源

永久性的将 pip 源从国外源切换到国内的源

方式一、使用命令行设置

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple/
# 查看当前镜像源
pip config get global.index-url

方式二、使用配置文件

配置文件的位置根据操作系统不同而不同:

  • Windows: C:\Users\你的用户名\pip\pip.ini
  • macOS 和 Linux: ~/.pip/pip.conf

如果配置文件不存在,可以手动创建一个。

在配置文件中添加以下内容:

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple

常用的国内镜像源

清华大学(推荐):	   https://pypi.tuna.tsinghua.edu.cn/simple/ 
阿 里 云:	   https://mirrors.aliyun.com/pypi/simple/
豆    瓣:	    https://pypi.douban.com/simple/
中 科 大:	   https://pypi.mirrors.ustc.edu.cn/simple/

临时换源方法

pip install 模块名 -i https://pypi.tuna.tsinghua.edu.cn/simple/ 

【4】修改pip默认下载地址

修改python安装目录下Lib/site.py文件

  1. 将ENABLE_USER_SITE=None修改为ENABLE_USER_SITE=True

  2. 修改USER_BASE(基础目录)

  3. 修改USER_SITE(具体路径)

    USER_SITE = r"F:\Environment\Python\Python312\Package\site-packages"
    USER_BASE = r"F:\Environment\Python\Python312\Package\Scripts"
    
  4. 设置环境变量PYTHONPATH设置值为 F:\Environment\Python\Python312\Package\site-packages

如果使用Anaconda创建虚拟环境这样会导致Python的搜索路径中PYTHONPATH对应的路径优先级高于Anaconda中的路径,这会导致在Anaconda创建的虚拟环境运行程序时优先使用PYTHONPATH对应的路径下的库,从而因为版本问题报错,这样创建虚拟环境就失去意义,所以并不推荐这种方法

【5】虚拟环境

(1)系统环境和虚拟环境介绍

系统环境

  • 系统环境是指安装在计算机全局范围内的Python环境。
  • 当在计算机上安装Python时,它会成为系统环境的一部分。
  • 在系统环境中安装的Python解释器和库对整个计算机可见,所有项目都可以访问它们。

虚拟环境

  • 虚拟环境是一种在项目级别隔离Python依赖的方法。
  • 通过创建虚拟环境,可以为每个项目设置独立的Python环境,从而解决全局安装可能导致的问题。
  • 虚拟环境可以包含自己的Python解释器和依赖库,与其他虚拟环境和系统环境隔离开。

(2)创建虚拟环境的三种方式

venv

**介绍:**Python自带的虚拟环境工具,适用于Python 3.3及以上版本。

使用:

  1. 到需要创建项目所在的目录
  2. 在命令行窗口下执行python -m venv 虚拟环境名称 进行创建虚拟环境
  3. 进入虚拟环境 需要在创建虚拟环境的目录下找到Scripts文件夹 进入后在命令行窗口下执行active
  4. 退出虚拟化环境在命令行窗口下执行 deactivate
# 创建虚拟化环境
python -m venv 虚拟环境名称
# 进入虚拟化环境
cd /虚拟化环境目录/Scripts
active
# 退出虚拟化环境
deactivate
virtualenv

**介绍:**使用增强模块进行虚拟化环境创建。

使用:

  1. 需要安装两个增强模块

    pip install virtualenv
    # 该模块是Windows的增强模块 使得在Windows上使用虚拟环境更方便
    pip install virtualenvwrapper-win
    
  2. 需要增加一个环境变量的配置 WORKON_HOME 变量值为虚拟化环境的目录位置

  3. 找到对应安装插件的Python的安装目录,然后进入Scripts文件夹,双击运行virtualenvwrapper.bat文件

  4. 创建虚拟环境 执行命令 mkvirtualenv 虚拟环境名字

# 创建虚拟化环境
mkvirtualenv 虚拟环境名字
# 进入虚拟化环境
cd /虚拟化环境目录/Scripts
active
# 退出虚拟化环境
deactivate
# 查看全局的虚拟化环境
workon
virtualenv

**介绍:**使用增强模块进行虚拟化环境创建。

使用:

  1. 需要安装两个增强模块

    pip install virtualenv
    # 该模块是Windows的增强模块 使得在Windows上使用虚拟环境更方便
    pip install virtualenvwrapper-win
    
  2. 需要增加一个环境变量的配置 WORKON_HOME 变量值为虚拟化环境的目录位置

  3. 找到对应安装插件的Python的安装目录,然后进入Scripts文件夹,双击运行virtualenvwrapper.bat文件

  4. 创建虚拟环境 执行命令 mkvirtualenv 虚拟环境名字

# 创建虚拟化环境
mkvirtualenv 虚拟环境名字
# 进入虚拟化环境
cd /虚拟化环境目录/Scripts
active
# 退出虚拟化环境
deactivate
# 查看全局的虚拟化环境
workon
Logo

昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链

更多推荐