目录
首先我们知道Python是门编程语言,编写的是程序,那这程序在计算机中起到了什么作用,这就需要我们首先了解下计算机;第二,我们的程序为什么要用Python来写?有什么替代方案吗?这就需要我们了解程序语言的发展历史,以及各个编程语言的优缺点;
一:计算机基础知识
计算机组成原理
计算机组成原理是讲计算机是由什么组成,并且怎么运行起来的;研究计算机由什么组成,相对应的就是计算机硬件部分;怎么运行起来的,相对应的是计算机的软件部分,以及硬件如何与软件相互配合工作;专业话语是:它涵盖了计算机系统的各个方面,包括计算机的功能、组件、数据表示、指令集体系结构、处理器设计、存储器层次结构、输入输出系统、总线结构、操作系统以及计算机网络等。
冯·诺依曼体系结构
计算机系统是如何运行的,软件与硬件是如何配合运行的,这个计算机设计模式就是冯·诺依曼体系结构;自从1940年这个理论提出来,直到现在,计算机一直是使用的这个理论,它的核心思想是将程序和数据存储在同一个存储器中(内存),并通过控制单元执行指令(cpu)。
基本组成
冯·诺依曼体系结构主要由以下几个部分组成:
1. 中央处理器(CPU):CPU是计算机的核心部件,负责执行指令和处理数据。它包括控制单元和算术逻辑单元(ALU),控制单元负责指令的解码和控制,ALU负责执行算术和逻辑操作。
2. 存储器:存储器用于存储数据和指令。计算机中的存储器按层次结构包括寄存器、、主存(内存)和辅助存储器。寄存器是最快速但容量最小的存储器,用于存储处理器中的数据和指令。主存是计算机的主要存储器,用于存储程序和数据。辅助存储器(如硬盘、固态硬盘)用于长期存储大量的数据。
3. 输入输出设备:输入输出设备用于与计算机进行交互和数据的输入输出。常见的输入设备包括键盘、鼠标、扫描仪等,输出设备包括显示器、打印机、音频设备等。输入输出设备通过接口和控制器与计算机连接。
4. **总线:总线是计算机中各个组件之间进行数据传输的通道。它包括数据总线、地址总线和控制总线。**数据总线用于传输数据,地址总线用于指定数据的存储位置,控制总线用于传输控制信号。
工作原理
冯·诺依曼体系结构的工作原理基于“存储程序计算机”的概念,即指令和数据存储在同一内存中。CPU从存储器取出指令和数据,进行相应的计算。其主要特点包括:
- 单处理机结构:以运算器为中心。
- 采用二进制表示:数据以二进制形式存储。
- 指令顺序执行:程序按照预先定义的顺序执行。
- 软硬件分离:软件和硬件完全分离。
总结:
- 我们的程序是以二级制形式存储在内存中,我们传递给计算机的信息流只能是二进制;
- 由CPU从内存中取出指令和数据来运行;
- *存储器按照运行速度:寄存器(容量最小,存储CPU中的指令数据)>内存(主要存储器,用于存储程序和数据)>外部存储(存储长期数据)
二: 编程语言
什么是编程语言
编程语言是一种用于编写计算机程序的形式化语言。比如我们现在正在学习的Pyton,它是一种人与计算机之间进行交流的工具,用于描述和指示计算机执行特定任务或完成特定操作的步骤和逻辑。
分类:机器语言、汇编语言和高级语言
编程语言根据其抽象层级和与硬件的交互方式可分为机器语言、汇编语言和高级语言三大类。
-
机器语言
- 也就是机器指令(1930-1960s);
- 计算机本质上就是是一台只懂得执行简单指令的机器。而执行的指令也就是我们说的机器指令,其实背后对应的就是一个个电路运算,例如算术运算、逻辑运算、存储等等。
- 指令的执行本质就是由CPU来触发****这些对应的电路执行从而完成特定的功能。
-
汇编语言(1947 )
- 机器语言对人类来说非常晦涩和难以理解。这使得编写和理解机器语言程序非常困难和容易出错。为了让人类能够更方便地编写和理解计算机程序,汇编语言应运而生。
- 汇编语言本质就是指令符号化。因为计算机只能识别二进制,所以需要使用汇编器把指令转换为二进制;
-
高级语言(1972 )
- 尽管汇编语言比机器语言更容易理解,但仍然需要编写大量的指令来完成复杂的任务,包括各种底层硬件的直接操作。这对于开发人员来说是一项繁琐和容易出错的工作。为了进一步提高编程效率和可读性,高级语言应运而生。
- 高级语言是一种更加抽象和易用的编程语言,如C,Java、Python等。它们提供了更高级别的抽象,包括更丰富的数据类型、复杂的数据结构、函数、类、库等。使用高级语言,开发人员可以用更简洁、易读的方式表达程序的逻辑和算法,而不需要关注底层的机器细节。
- 随着计算机硬件的发展,高级语言的应用越来越广泛,例如 C、C++、Java、Python、JavaScript 等。
- 高级语言的核心是语句封装了指令;
- 需要使用编译器或者解释器把高级语言编译为二进制文件;
- 总之,高级语言的出现使得编程变得更加高效、易读和易维护。它们提供了更强大、更友好的工具和库,使开发人员能够更快速地构建复杂的应用程序,并推动了软件开发的快速发展。
- 高级语言可分为编译型语言与解释型语言
-
编译型语言(C、C++和Pascal等)
- 编译型语言的代码在执行之前需要经过编译器的处理。编译器将源代码作为输入,通过多个阶段的处理生成机器码(目标代码),然后将目标代码链接为可执行文件。这个可执行文件可以直接在计算机上执行。编译型语言的典型代表是C、C++和Pascal等。
- 特点:
- 编译过程在代码执行之前进行,只需要进行一次编译。
- 编译后的代码执行效率高,因为它是直接由计算机硬件执行的机器码。
- 可执行文件独立于源代码,可以在不同的计算机上执行,前提是目标机器上有相应的编译器和运行时支持。
- 编译型语言对代码的静态类型检查较为严格,需要在编译时确定变量的类型和错误检查。
-
解释型语言(Python、JavaScript和Ruby等)
- 解释型语言的代码在**执行时逐行被解释器解释执行,不需要显式的编译过程。**解释器将源代码逐行解释翻译成机器码或虚拟机指令,并实时执行。解释型语言的典型代表是Python、JavaScript和Ruby等。
- 特点:
- 不需要显式的编译过程,代码可以直接执行。
- 每次执行都需要解释器逐行解释代码,因此执行效率相对较低;
- 源代码可以跨平台执行,只需要针对不同平台提供相应的解释器。
- 解释型语言通常具有动态类型检查的特性,变量的类型在运行时确定。
-
-
主流编程语言对比
- 开发效率与运行效率不可兼得
- C语言是离硬件最近的高级语言,是面向过程开发,运行效率最高,开发难度最高;C语言的应用场景:服务器开发、嵌入式、操作系统;
- C++是在c的基础上增加了面向对象,本质还是C;C++ 最大的应用场景:游戏; 仅次于java,在企业里面的第二大应用,
- SHELL不是编程语言,是脚本语言,在运维圈会用;
- Python的作者其实就是使用C+SHELL来做的;发布后很长时间没有火,原因是它是位于离机器最远的那个等级的语言;后面有两次小高潮:1.在运维圈想做自动化脚本,SHELL不能像编程语言那样写代码,而Python可以,python 取代shell ; 2. 真正引爆的时候是2015年之后,做数据分析,数据挖掘,2020年人工智能把python带到了第一位;
- perl,ruby,python 其实都是脚本语言,但是python其实远远超过了脚本语言的作用;perl主要做文本处理;
- go:c家族的,谷歌开发的,攻守平衡:80%的C的运行性能,80%的python的开发难度,想要替代c,c++;
- Rust:也想要替代c,c++;
总结:Python最可能成为全民编程的语言
- Python是解释性高级编程语言,性能没有C语言好,但是随着硬件的发展,性能问题是能够被解决的;
- Python简洁优雅,易学易用,生态资源丰富,应用广泛,尤其在智能领域发光发热,所以是最可能成为全民编程的语言;