三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

第1章 必备基础知识

第1章 必备基础知识

第 1 章 必备基础知识

1.1 计算机组成

1.1.1 硬件

计算机硬件主要由五个部分组成,分别是:运算器、控制器、存储器、输⼊设备、输出设备。

image-20251204144529594

1.1.2 软件

计算机软件主要分为:系统软件、应⽤软件。

image-20251204144910447

类型 作用
系统软件 直接管理和控制计算机硬件的软件,为应⽤软件提供运⾏平台,它负责协调硬件资源(如内存、处理器)并提供通⽤服务,例如:⽂件管理、设备控制、任务调度。
应用软件 ⽤于执⾏特定任务的软件,满⾜⽤户的具体需求,如:⽂档编辑、数据分析、娱乐等,它依赖系统软件提供的资源和服务。

1.2 计算机语言

1.2.1 计算机语言、代码、程序

image-20251204145342959

1.2.2 计算机语⾔简史

第1代:机器语言

计算机问世的初期,⼈们只能通过『机器语⾔』(⼜称机器码)来操作计算机,所谓机器语⾔,就是 0 和 1 组成的⼆进制内容。⽽且在当时,录⼊和修改信息通常都需要:拨动开关、或插拔连线、或使⽤打孔纸带来输⼊指令。

image-20251204145601988

image-20260224110131240

  • 优点:机器可直接执行,速度最快;硬件直接控制
  • 缺点:二进制编写,人极难读写和维护;完全依赖硬件,无移植性。

例如:在 x86 的 CPU 架构下,使⽤机器码编写 1 + 1 的运算代码如下:

10110000 00000001 00000100 00000001

第2代:汇编语言

⽤机器语⾔编程,程序员很难理解每⼀条指令的含义,为了解决这个问题,『汇编语⾔』应运⽽⽣,它将机器语⾔中的⼆进制指令,转化为更容易记忆的助记符 (如 MOV 、 ADD 、 LOAD 等),从⽽让程序员能以近似“英⽂简写”的⽅式进⾏编程,简单说 就是:『汇编语⾔』是对『机器语⾔』的“⼈性化翻译”,汇编语⾔显著降低了编程的⻔槛,也为 后续⾼级语⾔的诞⽣,打下了基础。

  • 优点:比机器语言易读写;执行效率高;
  • 缺点:仍依赖特定CPU指令集;编程效率低;代码量大;

例如:在 x86 的 CPU 架构下,使⽤『汇编语⾔』编写 1 + 1 的运算代码如下:

mov al, 1 
add al, 1

⚠️注意:『汇编语⾔』需要翻译成『机器码』,才能交给 CPU 执⾏,因为 CPU 只认⼆进制指 令。

第3代:高级语言

相对『机器语⾔』和『汇编语⾔』⽽⾔,『⾼级语⾔』更接近⼈类的⾃然语⾔,它允许程序员使⽤ 英语来编写程序,并向程序员屏蔽了⼤部分的底层细节,语⾔中的符号和算式,也和⽇常的数学算 式差不多,它更容易被掌握,常⻅的『⾼级语⾔』有:C、C++、Java、PHP、Go、Rust、 JavaScript、Python 等。

  • 优点:接近自然语言,易学易用;代码简洁;硬件无关,移植性好;丰富的库和工具
  • 缺点:执行需编译/解释,效率较低;对硬件控制能力弱

例如:下⾯的 Python 代码,可以输出 "Hello, world!"

print("Hello, world!")

例如:下⾯的 Java 代码,可以输出 "Hello, world!"

public class HelloWorld {public static void main(String[] args){System.out.println("Hello, world!");}
}

⚠️注意:计算机不能直接执⾏『⾼级语⾔』,同样需要将其转换为『机器语⾔』才能被计算机 执⾏。

1.2.3 编译型语⾔与解释型语⾔

对于⾼级语⾔来说,我们会根据其转换成⼆进制指令过程的不同,可将其分为:『编译型』和『解 释型』

编译型语⾔

将程序翻译成计算机能理解的⼆进制内容,并且通常会⽣成⼀个可执⾏⽂件,例如在 windows 系 统上⽣成的可执⾏⽂件是 .exe ⽂件,常⻅的『编译型』语⾔有:C、C++、Go、Rust 等。

image-20251204151118032

  • 优势:同⼀运⾏平台,代码只需编译⼀次,且执⾏效率⾼。
  • 劣势:跨平台性差,⼤型项⽬编译时间较⻓,开发效率略低。

解释型语⾔

将程序⼀句⼀句的翻译为:计算机可以执⾏的指令,整个过程通常不⽣成可执⾏⽂件,常⻅的解释型语⾔有:Python、Php、JavaScript 等。

image-20251204151222235

  • 优势:跨平台性好,⽆需编译,开发调试灵活⾼效。
  • 劣势:每次运⾏都需要解释,执⾏效率较低。

编译+解释混合型

Java 是典型的编译与解释混合型语言,这种设计是它“一次编写,到处运行”能力的关键。

简单概括它的执行过程:Java源码 (.java) → 编译 → 字节码 (.class) → 解释/即时编译 → 机器码执行

image-20251204160455002

有人说python也是编译+解释的混合型的?

  • Java 通过“先静态编译为字节码,再在JVM上解释/JIT编译执行”的混合模式,完美结合了编译型和解释型语言的优点,目标是平衡启动速度和运行性能

  • Python是一门“先(隐式)编译为字节码,再由虚拟机解释执行”的语言。它没有JIT编译步骤,其“编译”主要服务于语法分析和生成中间格式,而非性能优化。其核心执行模型仍然是解释型的。虽然它确实经历了“编译”和“解释”两个阶段,但我们通常不称之为“混合型语言” ,因为它缺乏关键的 运行时编译优化 环节。

    image-20260224092846190

特性 Java Python (CPython)
编译产出 显式生成 .class 字节码文件 隐式生成 .pyc 字节码文件(可缓存)
执行引擎 解释器 + JIT编译器(如HotSpot) 纯解释器(CPython标准实现)
性能核心 依赖JIT将热点字节码编译为优化后的机器码 依赖解释器直接执行字节码
“混合”含义 编译 + 解释 + 即时编译,旨在提升峰值性能 编译 + 解释,旨在实现跨平台和开发便利

结论:Python是高级语言,是解释型语言。

1.2.4 TIOBE排行

TIOBE 排行榜 是衡量编程语言流行度的一个长期、月度更新的指标。它由荷兰的 TIOBE 公司发布,始于2001年,已成为业界观察语言趋势的重要参考。https://www.tiobe.com/tiobe-index/

核心要义:它衡量的是“流行度”或“关注度”,而非“最好用”或“代码量最多”。 标题 “TIOBE Programming Community Index” 也点明了它反映的是 开发者社区的活跃度和关注度。

TIOBE 采用 自动化算法,主要数据来源于全球主流搜索引擎的查询结果。语言流行度与招聘需求、技术文章、教程数量高度相关,是开发者学习、企业技术选型的“风向标”之一。它衡量的是“讨论热度”,而非“实际代码行数”或“项目数量”。一门成熟语言可能仍在关键系统中大量运行,但讨论度低,排名就会靠后,而新闻事件、大型会议可能导致某个语言的搜索量短期激增。

image-20251204160830513

image-20260224093050508

1.3 Python语言概述

1.3.1 Python的起源

Python 的作者 Guido van Rossum 来⾃荷兰(国内爱称:⻳叔),1982年从阿姆斯特丹大学获得了数学和计算机硕士学位。他发现⽤: C、Fortran 等语⾔写程序太费劲,⽽ Shell 虽然轻松,但功能却很有限。1989 年圣诞节,⻳叔开始动⼿编写⼀种既能像 C 那样全⾯操控系统,⼜能像 Shell ⼀样好上⼿的解释器,并以他喜爱的喜剧 《Monty Python’s Flying Circus》(巨蟒剧团之飞翔的马戏团)为灵感,命名为“Python”。

Python 的设计哲学是“优雅、明确、简单”,Python 提倡:最好只有⼀种⽅法来做⼀件事,它的第⼀个公开版本于 1991 年问世,如今已成为全球最受欢迎的编程语⾔之⼀。

image-20251204162247375

1.3.2 Python的特点

优点:

image-20251204162345136

缺点:

image-20251204162435270

1.3.4 Python版本

Python有2个版本,Python2 和 Python3。

Python 3.x 是现在和未来主流的版本。相对于Python的早期版本是一个比较大的升级,且为了不带入过多的累赘, Python 3.0在设计的时候没有考虑向下兼容,因而许多早期Python版本设计的程序都无法在 Python 3.0上正常执行。但随着Python3使用越来越广泛,大部分新项目开始使用Python3,且大部分三方库已经支持Python3.x,Python3.x已经成为趋势。

  • Python 3.0发布于2008年
  • 2020年: Python 2 官⽅停⽌维护,Python 2.7被确定为最后一个 Python 2.x 版本。同时 Python 3.9 发布。
  • 2021年:Python 3.10 发布。
  • 2022年:Python 3.11 发布,平均性能提升 10%-60% 。
  • 2023年:Python 3.12 发布,进⼀步优化性能和类型提示。
  • 2024年:Python 3.13 发布。
  • 2025年:Python 3.14 发布。
  • 当前课程使用的版本是Python3.12.8

1.3.4 Python解释器

由于整个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,而是通过网络调用来交互,确保各程序之间的独立性。

← 返回列表