惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
News and Events Feed by Topic
S
Security @ Cisco Blogs
S
Secure Thoughts
Attack and Defense Labs
Attack and Defense Labs
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Hacker News - Newest:
Hacker News - Newest: "LLM"
Recent Commits to openclaw:main
Recent Commits to openclaw:main
H
Hacker News: Front Page
博客园 - 叶小钗
H
Heimdal Security Blog
Microsoft Security Blog
Microsoft Security Blog
Forbes - Security
Forbes - Security
AI
AI
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
T
Troy Hunt's Blog
罗磊的独立博客
Application and Cybersecurity Blog
Application and Cybersecurity Blog
爱范儿
爱范儿
GbyAI
GbyAI
The Last Watchdog
The Last Watchdog
TaoSecurity Blog
TaoSecurity Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
D
DataBreaches.Net
Recent Announcements
Recent Announcements
Schneier on Security
Schneier on Security
C
Cisco Blogs
美团技术团队
D
Docker
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
WordPress大学
WordPress大学
月光博客
月光博客
雷峰网
雷峰网
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
H
Hackread – Cybersecurity News, Data Breaches, AI and More
A
Arctic Wolf
B
Blog RSS Feed
Cisco Talos Blog
Cisco Talos Blog
C
Cybersecurity and Infrastructure Security Agency CISA
V
Vulnerabilities – Threatpost
V2EX - 技术
V2EX - 技术
Y
Y Combinator Blog
N
News and Events Feed by Topic
www.infosecurity-magazine.com
www.infosecurity-magazine.com
W
WeLiveSecurity
Security Archives - TechRepublic
Security Archives - TechRepublic
G
GRAHAM CLULEY
Jina AI
Jina AI
Hugging Face - Blog
Hugging Face - Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
The Hacker News
The Hacker News

qlAD 的技术笔记

2026 年 6 月 7 日 -- 我有社交恐惧症,恐惧外面到处雷电风雨声(大学生活记录) 手把手带你实现哈希表(C/C++ 数据结构) 手把手带你实现图结构(C/C++ 数据结构) 手把手带你实现二叉树(C/C++ 数据结构) 手把手带你实现栈和队列(C/C++ 数据结构) 手把手带你实现单/双链表(C/C++ 数据结构) 手把手带你实现动态数组(C/C++ 数据结构) 2026 年 1 月 2 日 -- 我不怕冷,因为我内心炽热 【2025 年度总结】(大学生活记录) 2025 年 12 月 2 日 -- 省电模式:大一 100 天耗电日志(大学生活记录) 蓝桥杯备赛第一期 —— 枚举与模拟 2025 年 11 月 3 日 -- 用爱发电、大爱无私(大学生活记录) 使用循环嵌套输出规则图形找规律讲解(嵌套循环-图形输出) 2025 年 10 月 1 日 -- 二字开头第一年的生日记录及感悟随笔(大学生活记录) Python 初级 04 -- 目前为止 Python 中你们做题可能会遇到的问题以及七七八八 2025 年 9 月 24 日 -- 开学后的第一课及军训汇演(大学生活记录) Python 初级 03 -- 程序设计的三种结构之选择结构和循环结构 Python 初级 02 -- 基础的数据类型和输入输出 2025 年 9 月 17 日 -- 大连 2025 国际大体联足球世界杯(大学生活记录) 适合大一新生学习编程的前一课 -- 编程先导(编程的本质) 2025 年 9 月 12 日 -- 三天军训感受以及一些七七八八(大学生活记录) 2025 年 9 月 9 日 -- 体检、军训前的准备(大学生活记录) 适合大一新生的计算机基础知识 -- 个人认为足够版 2025 年 9 月 7 日 -- 既来之、则安之(大学生活记录) C++ 程序的内存布局 —— 代码区、全局/静态区、栈区和堆区 联想小新 pro 16 2025 开箱记录:跳过联网、office 激活、更换 win 11 专业版 R 语言中的数学函数 计算机软件著作权申请过程记录 从聚类到回归:用 Python 解析鸢尾花数据集的完整数据科学流程 条件概率、全概率与贝叶斯公式 —— 一篇文章带你死磕概率公式 高中化学物质反应规则表 —— 方程式之间也有规律可循 集合元素性质、关系、子集公式、基本运算 —— 一篇文章带你全方面死磕集合 如何为你的项目选择合适的许可证 -- 全方位指南 解释 3:1 和 9:3:3:1 的详细来源 —— 建立减数分裂与孟德尔遗传学定律之间的联系 重新设置磁盘分区以及 Btrfs 子卷(subvolume)布局的无损方案 零基础实战:用 Docker 启动 dockermailserver 绕过 25 端口封锁搭建个人邮箱服务器 基于 GitHub Actions + OSS 的自托管 APT 仓库全面指南 如何在安装 Debian 时配置 Btrfs 子卷 | 详细分步指南 一个合格的个人网站站长应该知道哪些事? CSS 基础入门教程 —— 选择器、样式声明 HTML 基础入门 —— 基本结构和语法 给博客添加一个文章数据统计的页面 Git 学习笔记(命令备忘表) Anki 牌组选项详细解释与设置 手动编译带有 KernelSU 的 OnePlus 6 内核 安卓类原生系统补全计划 —— PixelExperience(一加 OnePlus) 如何使用 use-sound 为 React 应用添加声音效果 标准化项目的 GitHub Flow 工作流 如何搭建设计自己的博客网站? 使用安知鱼主题同款的 Twikoo 评论组件 配置 GitHub Actions 实现自动化提交百度收录 第00期 | 环境搭建 & 递归 (一) | 基本数列递归 逐字符讲解 C 语言 HelloWorld 程序 2023 年回顾 🤟 Anki:记忆神器,助你高效学习 Gentoo 学习笔记 美化你的 PixelExperience OS Markdown 语法指南 搭建 OneDrive 目录索引 为什么用 65 表示大写字母 A
Python 初级 01 -- 初识编程、理解计算机语言及程序运行方式
qlAD · 2025-09-14 · via qlAD 的技术笔记

cover

Python 是一种计算机的程序设计语言,常常被用作新手入门的第一个编程语言

1、什么是编程语言

编程(动词),即编写程序,其实就是用代码告诉计算机去完成一系列任务。

语言(名词),就是进行沟通交流的表达方式

那么顾名思义,编程语言,就是一种程序代码的语言,有固定的语法规则,用于和计算机进行交流,

打个比方,这就像你在教一个新手如何做一道菜。你会详细地用中文告诉他每一步该怎么做:先洗菜,再切菜,然后热锅,最后烹饪。

同样地,编程也是把复杂的任务分解成简单的步骤,然后通过编程语言所对应的语法和规则,告诉计算机如何执行这些步骤。

Procedure MultiplyUsingLoop
Input: a, b
result = 0
abs_b = abs(b)
for i in range(abs_b):
    result += a
if b < 0:
    result = -result
return result

既然编程是把人类的思维转换成计算机能够理解的语言,那么为什么还会有 Python、C、C++、Java 等多种多样的语言呢?

那是因为计算机能够识别和执行的命令被称为指令,指令的格式是二进制码(只有 0 和 1 组成),但是程序员只用 0 和 1 来编程难度很大,这就让人类无法与计算机顺畅沟通。

因此,为了方便程序员编写程序,编程语言承担了二者的中间人,我们写的代码最终都会变成 CPU 能执行的机器指令(0和1),而翻译工具(编译器/解释器)就是完成这个转换的。

这个工具可以理解为翻译工具,即解释器、编译器等

2、Python 和 Pycharm

Python 只是一种计算机程序设计语言,它具有简单易学、可读性、可扩展的特点,使得 Python 成为最流行的编程语言

以下是不同编程语言来计算 1 + 2 的结果:

/* Java */

public class Main {
    public static void main(String[] args) {
        System.out.println(1 + 2);
    }
}
/* C++ */

#include <iostream>
using namespace std;
int main() {
    cout << 1 + 2 << endl;
    return 0;
}

可以看出来同样的功能,python 代码量是最少的。但是计算机还是不能直接运行这段代码,我们知道了 Python 语言所对应的语法和规则,但是计算机没有学习过这门语言啊,所以需要下载 Python 解释器到计算机上,然后才能运行这段代码。就相当于人类和计算机要学习同一门外语才能进行交流

而 Pycharm 是一个用于 Python 的集成开发环境(IDE),它提供了丰富的功能,如代码自动完成、错误检查、代码格式化、调试等等,使得 Python 的开发更加高效。

当然你也可以不用 Pycharm,用记事本也是可以的。就好比,拍照不管是用原相机还是用美颜相机,都会调用摄像头来进行拍照一个道理

大多数操作系统(如 Windows)默认不自带 Python,需要手动安装;而部分 Linux 和 macOS 系统可能预装了 Python,但版本不一定是最新的,建议根据开发需要安装官方版本。

Python 下载

总结一下:

1、程序员通过 Python 对应的语法和规则来编写程序(.py 文件)。

2、但是计算机并不认识你写的程序,需要下载 Python 这个解释器软件才能让 .py 文件成功运行(被翻译成指令)。

3、最后为了高效地编写程序,一般会用到 Pycharm 这个工具

二、如何编写和运行 Python 程序

这里就不涉及语法和规则了,体验下编程的感觉就行,在你安装好了 python 和 pycharm 的基础上执行以下步骤

1、记事本 + 命令行运行

1、新建一个 .py 文件,比如 test.py

2、右键打开方式选择记事本,在 test.py 文件中粘贴如下代码:

import math
import time
import sys

def main():
    A = 0.0
    B = 0.0
    # 清屏的ANSI转义码
    print("\x1b[2J", end="")

    while True:
        # 初始化数组
        z = [0.0] * 1760
        b = [' '] * 1760

        j = 0.0
        while j < 6.28:
            i = 0.0
            while i < 6.28:
                c = math.sin(i)
                d = math.cos(j)
                e = math.sin(A)
                f = math.sin(j)
                g = math.cos(A)
                h = d + 2
                D = 1.0 / (c * h * e + f * g + 5.0)
                l = math.cos(i)
                m = math.cos(B)
                n = math.sin(B)
                t = c * h * g - f * e

                x = int(40 + 30 * D * (l * h * m - t * n))
                y = int(12 + 15 * D * (l * h * n + t * m))
                o = x + 80 * y
                N = 8 * ((f * e - c * d * g) * m - c * d * e - f * g - l * d * n)

                if 22 > y > 0 and 0 < x < 80 and D > z[o]:
                    z[o] = D
                    # 确保N在有效范围内
                    idx = int(N) if N > 0 else 0
                    if idx >= len(".,-~:;=!*#$@"):
                        idx = len(".,-~:;=!*#$@") - 1
                    b[o] = ".,-~:;=!*#$@"[idx]

                i += 0.02
            j += 0.07

        # 移动光标到屏幕顶部
        print("\x1b[H", end="")

        # 输出字符
        for k in range(1761):
            if k % 80 == 0:
                print()
            else:
                print(b[k], end="")
            A += 0.00004
            B += 0.00002

        # 控制帧率,避免输出过快
        time.sleep(0.05)
        # 刷新输出缓冲区
        sys.stdout.flush()

if __name__ == "__main__":
    try:
        main()
    except KeyboardInterrupt:
        # 捕获Ctrl+C,恢复终端设置
        print("\x1b[0m")
        sys.exit(0)

3、先在命令行中进入 test.py 文件所在的目录,然后在命令行中运行 test.py 文件:

# 首先切换到文件所在的目录,例如桌面
cd C:\Users\你的用户名\Desktop

# 然后运行程序
python test.py

除了命令行,你还可以右键文件直接选择 python 运行

4、运行结果

运行结果

2、Pycharm 运行

1、新建项目

新建 python 项目

2、添加 .py 文件

添加 .py 文件

3、粘贴代码并运行

粘贴代码并运行

三、一个程序从诞生到执行的过程

整个过程可以大体分为三步:

  1. 源代码转换为二进制指令
  2. 操作系统加载指令到内存
  3. CPU 逐行执行指令

1、从源代码到二进制指令

不管什么编程语言,对于计算机和人类来讲都是外语,计算机直接读是读不懂的,需要经历代码到二进制指令的转换过程。这个转换过程所用到的工具主要分为两种,编译和解释

编译:将源代码编译成二进制指令,然后保存成二进制文件,比如 C++ 的 .exe 文件

解释:将源代码解释成二进制指令,然后运行。比如 Python 的 .py 文件

以下是 C 语言对应的机器码的一个例子:

C 语言对应的机器码

其中的第一行 d10043ff 就是一句机器码指令,只不过为了缩短长度,将 2 进制用了 16 进制表示。

解析第一条指令

2、程序载入内存

电脑为什么需要内存条?

为了运行速度更快,电脑中一共有两种存储硬件,分别是硬盘和内存条。内存条拥有更快的速度,所以被用来运行程序。这也是为什么运行的应用越多,内存占用就越高的原因

那既然内存条更快,为什么还需要硬盘呢?

那是因为硬盘存储的数据是永久的,并且便宜,而内存条存储的数据是临时的。你后台关闭一个应用,内存中的占用就会减少,一些数据就会丢失。

运行速度对比

CPU 运行速度最快,为什么不直接把指令载入到 CPU 中运行呢?

CPU 贵啊,为了合理调用资源,内存起到了缓冲的作用

硬盘是“仓库”,程序不用时就放在里面;内存是“工作台”,程序要运行时才搬过来;CPU 是“工人”,只在工作台上干活。

更详细的内存介绍可以看看这篇文章:https://www.qladgk.com/blog/memory-layout-cpp

3、CPU 执行指令

CPU 如何执行指令涉及到计算机体系结构的核心知识(如寄存器、ALU、控制单元等),内容较为复杂,我们将在后续的文章中专门探讨。

四、一些其他问题

1、中文为什么不能编程

编程就是两个步骤:1、编写代码 2、翻译成二进制。那为什么不能直接用中文、英语、法语等表示代码然后翻译成二进制呢?专门去学习一种编程语言的语法规则不是多次一举吗?

那是因为像中文、英文等自然语言太复杂了。比如你想让程序输出“你好帅”,有多种的表示方法:

类型表示方法
傲娇版夸我帅
礼貌版请在屏幕上输出你好帅

自然语言的复杂程度不能让翻译官精准地翻译,相反,代码地表示方法往往比自然语言更简单、更清晰,翻译起来也更容易

编程语言的关键字(如 if, for)是设计好的、无歧义的符号系统,而自然语言的复杂性(一词多义、语法灵活)不利于这种精确的逻辑表达。

其实也有中文的编程语言,叫做易语言(写出来跟文言文一样)

2、单靠 0 和 1 真能存储信息吗

虽然只是两个简单地数字,但是通过不同地组合,0 和 1 就能存储任意信息

你们可以看下面的用二进制转中文看看下面的 0 和 1 表示什么信息

111001101000100010010001111001011001011010011100111001101010110010100010111001001011110110100000

二进制转中文在线工具:https://onetools.online/zh/binary-translator