1 计算机的组成
1.1 什么是计算机
- 计算机(computer)俗称电脑,是现代一种用于高速计算的电子计算机器,可以进行数值计算,又可以进行逻辑计算,还具有存储记忆功能。是能够按照程序运行,自动、高速处理海量数据的现代化智能电子设备。由硬件系统和软件系统所组成,没有安装任何软件的计算机称为裸机。
1.2 硬件
-
硬件(英文名Hardware),计算机硬件是指计算机系统中由电子,机械和光电元件等组成的各种物理装置的总称。这些物理装置按系统结构的要求构成一个有机整体为计算机软件运行提供物质基础;
-
计算机由运算器、控制器、存储器、输入设备和输出设备等五个逻辑部件组成
-
运算器:由算术逻辑单元(ALU)、累加器、状态寄存器、通用寄存器组等组成。算术逻辑运算单元(ALU)的基本功能为加、减、乘、除四则运算,与、或、非、异或等逻辑操作,以及移位、求补等操作;
-
控制器:Control Unit,是整个计算机系统的控制中心,它指挥计算机各部分协调地工作,保证计算机按照预先规定的目标和步骤有条不紊地进行操作及处理;
-
中央处理器:CentralProcessingUnit(CPU),由运算器和控制器组成,是任何计算机系统中必备的核心部件。CPU由运算器和控制器组成,分别由运算电路和控制电路实现;
-
存储器:Memory是计算机系统中的记忆设备,用来存放程序和数据。计算机中全部信息,包括输入的原始数据、计算机程序、中间运行结果和最终运行结果都保存在存储器中。它根据控制器指定的位置存入和取出信息。有了存储器,计算机才有记忆功能,才能保证正常工作;
-
输入设备:向计算机输入数据和信息的设备,是计算机与用户或其他设备通信的桥梁。输入设备是用户和计算机系统之间进行信息交换的主要装置之一;
-
输出设备:Output Device,是计算机的终端设备,用于接收计算机数据的输出显示、打印、声音、控制外围设备操作等。也是把各种计算结果数据或信息以数字、字符、图像、声音等形式表示出来。
-
1.3 软件
-
软件(英文:Software)是一系列按照特定顺序组织的计算机数据和指令的集合。一般来讲软件被划分为系统软件、应用软件和介于这两者之间的中间件;
-
系统软件是各类操作系统,如Dos、windows、Linux、UNIX、Mac、Android、IOS等,还包括操作系统的补丁程序及硬件驱动程序,都是系统软件类;
-
应用软件可以细分的种类就更多了,如QQ、酷我、暴风、微信软件等都属于应用软件类。
-
2 程序和编程语言
-
当我们要让计算机帮我们解决问题时,就需要编写程序;
-
程序是一组计算机能识别和执行的指令,这些指令由数字、字符和语法规则组成,它通常是用某种计算机编程语言编写的;
-
计算机编程语言,便是我们与计算机沟通的工具,就像我们交流使用的语言一样,只不过是人与计算机之间通讯的语言;
-
计算机只能执行二进制代码,程序设计语言一般类似英文,想要让计算机理解你写的程序,必须把程序代码"翻译"成计算机能理解的二进制代码,根据翻译形式的不同,可以分为:
- 编译 :将程序代码翻译成计算机能理解的二进制目标代码,会生成特定的可执行代码(在window上是
exe文件),可执行代码是二进制的,无法看到源码,然后执行可执行代码就可以得到结果,如C语言、C++等; - 解释:将程序代码一句一句翻译为计算机可以执行的指令,立即执行,不会生成可执行文件,如Python、Php、JavaScript等。
- 编译 :将程序代码翻译成计算机能理解的二进制目标代码,会生成特定的可执行代码(在window上是
-
3 计算机语言简史
3.1 第一代:机器语言
-
1946年2月14日,世界上第一台计算机ENIAC诞生,使用的是最原始的穿孔卡片。这种卡片上使用的是二进制代码表示的语言,与人类语言差别极大,这种语言就称为机器语言。比如一段典型的机器码:
-
0000,0000,000000010000 代表 LOAD A, 16
-
0000,0001,000000000001 代表 LOAD B, 1
-
0001,0001,000000010000 代表 STORE B, 16
-
3.2 第二代:汇编语言
-
使用英文缩写的助记符来表示基本的操作,比如:LOAD、MOVE等,使人更容易使用,这些助记符构成了汇编语言的基础。因此,汇编语言也称为符号语言;
-
优点:能编写高效率的程序;
-
缺点:汇编语言是面向机器的,不同计算机会有不同的汇编语言,程序不易移植;

-
3.3 第三代:高级语言
-
高级语言,是一种接近于人类使用习惯的程序设计语言,它允许程序员使用接近日常英语的指令来编写程序,程序中的符号和算式也与日常用的数学算式差不多,接近于自然语言和数学语言,容易被人们掌握;

-
高级语言独立于计算机硬件,有一定的通用性。计算机不能直接识别和执行用高级语言编写的程序,需要使用编译器或者解释器,将高级语言转换为机器语言才能被识别和执行;

-
常见的高级语言有Fortran、ALGOL、Basic、COBOL、LISP、Pascal、PROLOG、C、C++、VB、Delphi、Java、PHP、JavaScript、Python等,我们主要学习的是Python;
-
下图是TIOBE(TIOBE Index - TIOBE)在2025年01月份统计的热门语言排行:


4 为什么学习Python
4.1 Python起源
-
Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/),是一门优雅而健壮的编程语言;
-
作者是荷兰人Guido van Rossum(吉多·范罗苏姆),1982年从阿姆斯特丹大学获得了数学和计算机硕士学位。然而,尽管他算得上是一位数学家,但他更加享受计算机带来的乐趣;

-
在那时,Guido接触并使用过诸如Pascal、C、Fortran等语言。这些语言的基本设计原则是让机器能更快运行。但为了增进效率,语言也迫使程序员像计算机一样思考。这种编程方式让Guido感到苦恼。即使Guido知道如何用C语言写出一个功能,但整个编写过程却也需要耗费大量的时间。他的另一个选择是shell。Bourne Shell(是一个交换式的命令解释器和命令编程语言)作为UNIX系统的解释器已经长期存在。shell可以像胶水一样,将UNIX下的许多功能连接在一起。许多C语言下上百行的程序,在shell下只用几行就可以完成;
-
Guido希望有一种语言既能像C语言那样全面调用计算机的功能接口,又可以像shell那样轻松的编程。1989年,为了打发聊的圣诞节假期,Guido开始编写Python语言的编译器。Python这个名字,来自Guido所挚爱的电视剧Monty Python's Flying Circus(飞行马戏团)。他希望这个新的叫做Python的语言,能符合他的理想:创造一种C和shell之间,功能全面,易学易用,可拓展的语言;
-
Python的设计哲学是"优雅"、"明确"、"简单";
-
用一种方法,最好是只有一种方法来做一件事,如果面临多种选择,Python 开发者一般会拒绝花俏的语法,而选择明确没有或者很少有歧义的语法;
-
Python第一个公开发行版发行于1991年。
4.2 Python能做什么
-
作为一个实用主义的学习者,最关心的问题一定是 "我为什么要选择学 Python,学会之后我可以用来做什么?";
-
首先,对于初学者来说,比起其他编程语言,Python 更容易上手;
-
Python 的设计哲学是优雅、明确、简单。在官方的 The Zen of Python(《Python 之禅》)中,有这样一句话,There should be one-- and preferably only one --obvious way to do it. Python 追求的是找到最好的解决方案。相比之下,其他语言追求的是多种解决方案;
-
如果你试着读一段写的不错的 Python 代码,会发现像是在读英语一样。这也是 Python 的最大优点,它使你能够专注于解决问题而不是去搞明白语言本身;
-
以下漫画形容了Python开发者是多么轻松:

-
-
其次,Python功能强大,很多你本来应该操心的事情,Python都替你考虑到了。当你用 Python语言编写程序的时候,你不需要考虑如何管理你的程序使用的内存之类的底层细节。并且Python有很丰富的库,其中有官方的,也有第三方开发的,你想做的功能模块很有可能已经有人写好了,你只需要调用,不需要重新发明轮子。这就像是拥有了智能手机,可以任意安装需要的 app;

- 这幅漫画形容了 Python 的库有多强大,导入一个反重力库就可以飞起来了;
-
第三,Python 能做的事情有许多(应用面广),主要应用场景如下:
-
Web应用开发:拥有Django、Flask等丰富的Web开发框架,能够快速完成网站的开发和Web服务,像Google、豆瓣等都有使用;
-
网络爬虫:可按照一定规则自动抓取互联网信息,用于爬取图片、数据等,在新闻采集、数据挖掘、网站监测、舆情分析等方面应用广泛;
-
系统网络运维:适合将运维工作中的大量重复性工作自动化,如管理、监控、发布系统等,可提高工作效率;
-
数据分析与科学计算:广泛应用于科学与数字分析,常用Numpy、Scipy等库。可进行数据处理、清洗、转换和计算,还能实现统计分析和数据可视化,帮助理解数据规律和趋势;
-
人工智能与机器学习:是人工智能的主要开发语言,拥有T。ensorFlow、Keras等众多相关库,可用于机器学习、自然语言处理和计算机视觉等领域;
-
办公自动化:可用于处理ppt文件、图片处理、文件备份、系统监控等,还能与Excel、Word文档结合,实现数据清洗、分析、批量操作等;
-
金融分析与量化交易:可高效处理大量金融数据,开发量化交易模型,进行回测和性能评估、风险管理、算法交易和自动化交易以及金融可视化和报告生成等;
-
3D游戏开发:有Pygame、Pykyra等很好的3D渲染库和游戏开发框架,可用于网络游戏开发等;
-
桌面GUI应用:Tkinter库可用于设计用户界面,PyQt、Kivy等工具包则有助于跨平台设计UI应用;
-
教育领域:作为一种对初学者友好的编程语言,拥有简单的学习曲线和丰富的学习资源,常被用于开发教育程序和在线课程。
-
4.3 Python特点
-
Python优点
-
易于学习:Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单;
-
广泛的标准库:Python最大的优势之一就是有着丰富的库。Python拥有一个强大的标准库,Python语言的核心只包含一些常见类型和函数,而Python标准库提供了系统管理、网络通信、文本处理、数据库接口、图形系统、XML处理等额外的功能;
-
大量的第三方模块:Python社区提供了大量的第三方模块,使用方式与标准库类似。它们的功能覆盖科学计算、人工智能、机器学习、Web开发、数据库接口、图形系统等多个领域;
-
互动模式:可以从终端输入执行代码并立即获得结果;
-
可移植:基于其开放源代码的特性,Python已经被移植(也就是使其工作)到许多平台;
-
可扩展:如果需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用C或C++完成那部分程序,然后从你的Python程序中调用;
-
免费、开源;
-
-
Python缺点
-
运行速度慢:和C程序相比非常慢,因为Python是解释型语言,代码在执行时会一行一行地翻译成CPU能理解的机器码,这个翻译过程非常耗时。而C程序是运行前直接编译成CPU能执行的机器码;
-
代码不能加密:如果要发布Python程序,实际上就是发布源代码,这一点跟C语言不同,C语言不用发布源代码,只需要把编译后的机器码(也就是在Windows上常见的exe文件)发布出去。所以,凡是编译型的语言都没有这个问题,而解释型的语言则必须把源码发布出去。
-
5 Python版本
-
Python有2个版本,Python2 和 Python3;
-
2020年1月1日,官方宣布,停止 Python 2 的更新,Python 2.7被确定为最后一个 Python 2.x 版本;
-
Python 3.x 是现在和未来主流的版本。相对于Python的早期版本是一个比较大的升级,且为了不带入过多的累赘, Python 3.0在设计的时候没有考虑向下兼容,因而许多早期Python版本设计的程序都无法在 Python 3.0上正常执行。但随着Python3使用越来越广泛,大部分新项目开始使用Python3,且大部分三方库已经支持Python3.x,Python3.x已经成为趋势。
-
Python 3.0发布于2008年
-
Python 3.13.1发布于2024年12月
-
当前课程使用的版本是Python3.12.8
-
6 Python解释器
-
当我们编写Python代码时,我们得到的是一个包含Python代码的以
.py为扩展名的文本文件。要运行代码,就需要Python解释器去执行.py文件; -
由于整个Python语言从规范到解释器都是开源的,所以理论上,只要水平够高,任何人都可以编写Python解释器来执行Python代码(当然难度很大)。事实上,确实存在多种Python解释器。
-
CPython
- 当我们从Python官方网站下载并安装好Python 3.x后,我们就直接获得了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器;
- CPython是使用最广的Python解释器。教程的所有代码也都在CPython下执行;
-
IPython
-
IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE;
-
CPython用
>>>作为提示符,而IPython用In [序号]:作为提示符;
-
-
PyPy
- PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度;
- 绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点;
-
Jython:Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行;
-
IronPython:IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。
-
-
Python的解释器很多,但使用最广泛的还是CPython。如果要和Java或.Net平台交互,最好的办法不是用Jython或IronPython,而是通过网络调用来交互,确保各程序之间的独立性。