背景
目的
• 本示例教程的是30分钟内掌握现代软件工程以及软件工程管理的手册。
• 通过实践驱动的方式,快速掌握现代软件开发的核心概念和工程管理方法。
风格
• 是以实践为先导,毕竟如果你想造一辆汽车进行代步,最好的方式就是先造一辆滑板,然后在滑板的基础上逐步升级。
• 每一步都是可以运行的程序,而不是纸上谈兵。
• 使用现代开发工具(Cursor、Devbox等)来跳过环境配置直接开始实践。
特点
• 你并不需要先去了解了怎么样造一辆汽车以及怎么样使用造车的工具才能开始。你唯一需要知道的就是一些简单的动力学原理和工程管理思想。
• 同理在软件工程领域,你只需要知道可计算原理等理论性知识,以及软件工程管理思想,就可以开始你的软件开发之旅。
• 通过真实项目(钱庄系统)来理解软件工程概念,并充分利用大语言模型作为开发助手,将理论直接构建为程序。
前提条件
Cursor
AI开发环境,Cursor文档中心
安装
配置
- 在软件右上角进入设置→General → Rules for AI
- 复制以下文字粘贴
# AI交互规则1. 使用中文回答。 2. 回答代码相关问题应该尽量向函数式的设计靠拢,代码风格同样也是函数式。当遇到有状态时采用事件驱动风格。 3. 当询问你是否理解时,我们是在探讨思路,不要进行具体的开发工作,要回答结构性的信息。 4. 回答思路相关的问题或写代码注释时风格如下:突出本质(忽略非必要细节),逻辑清晰,易于理解(层次化结构),可推导性 5. 当命令你连网查询时,research in english and reponse in chinese

- 安装markdown文档预览插件

模型选择
模型 | 场景 | 特点 |
gemini-2.0-flash | 超长文档理解(>50000字) | 速度快,理解力强 |
claude-3.5-sonnet-20241022 | 代码生成与调试 | 代码质量高,解释详细 |
deepseek-r1 | 探索性任务 | 创造性强,思路开放 |
本示例中将全部使用Claude-3.5-sonnet-20241022

第一章-现代软件架构
钱庄程序
准备工作
- 连接到云端开发环境
进入Sealos控制台

打开devbox,并创建项目

创建python开发环境,并在Cursor内打开


在cursor内查看
有可能浏览器将提示是否允许打开Cursor,点击允许后界面如下

这个过程中会持续在左下角弹出弹窗提示安装插件,统一同意
复制下载的教程中的所有文件到Cursor内

展开为 ShellWorkflow.md文件的内容
# 角色 - 钱庄前台人员 - 钱庄财务人员 - 钱庄记账人员 - 账本 # 命令行交互流程 ## 1️⃣ 钱庄前台人员: - **前台提示用户**: ``` "你好,我是钱庄前台人员,请输入数字以选择你要办理的业务:1. 查询余额" ``` ## 2️⃣ 用户输入: - 用户选择业务: ``` 1 ``` ## 3️⃣ 前台查询: - **前台请求用户输入账本编号**: ``` "请输入你要查询的账本编号" ``` ## 4️⃣ 用户输入: - 用户输入账本编号: ``` 1 ``` ## 5️⃣ 内部处理流程: - **前台 -> 财务**: ``` "帮我查一下编号为1的账号有多少余额" ``` - **财务 -> 记账**: ``` "帮我查一下编号为1的账号有多少余额" ``` - **记账 -> 账本**: ``` "查找编号为1的账号" ``` - **账本 -> 记账**: ``` "编号为1的账号有1000元" ``` - **记账 -> 财务**: ``` "编号为1的账号有1000元" ``` - **财务 -> 前台**: ``` "编号为1的账号有1000元" ``` - **前台 -> 用户**: ``` "编号为1的账号有1000元" ``` # 账本 ```yaml accounts: - id: 1 balance: 1000 name: "张三" created_at: "2024-01-01" status: "active" - id: 2 balance: 2000 name: "李四" created_at: "2024-01-02" status: "active" - id: 3 balance: 3000 name: "王五" created_at: "2024-01-03" status: "active"
``
开始写程序
- 打开Cursor AI
使用Win-Ctrl+I/Mac-Command+I 打开COMPSOER

- 复制提示词进入Composer后,点击submit
这是一个钱庄程序 @ShellWorkflow.md ,我需要你用python实现这个命令行交互的程序@hello.py (账本用本地yaml文件代替),并在写好之后给我详细的运行命令。
接受并运行程序

错误解决
复制给出的指令到终端内,运行程序


发现报错,添加到composer内,让Cursor Fix


运行检验&改进
- 复制给出的指令到终端内,运行程序
python hello.py

- 发现过于简单,应该增加交互性
- 复制一下文字进入composer 让Cursor进行修改
我希望你把程序的每个节点每个角色的交流都在应用中输出,并且使用emoj增加交互可读性
- 再运行 python hello.py,结果类似如下

从钱庄组织到现代软件
💡 现在得到的程序具有以下启示性
角色映射关系
写一个程序就像写一本书更精确的来说是写一个舞台剧的剧本,在一个舞台剧中的剧本你首先要确定历史背景场景,然后是确定人物都有哪些,每个人物都有什么特点茶有什么性格,主要都发生哪些事情。人物之间怎么交互。我们写这个钱庄程序时给到Cursor的就是一个简单的剧本。
剧本
# 角色 - 钱庄前台人员 - 钱庄财务人员 - 钱庄记账人员 - 账本 # 命令行交互流程 ## 1️⃣ 钱庄前台人员: - **前台提示用户**: ``` "你好,我是钱庄前台人员,请输入数字以选择你要办理的业务:1. 查询余额" ``` ## 2️⃣ 用户输入: - 用户选择业务: ``` 1 ``` ## 3️⃣ 前台查询: - **前台请求用户输入账本编号**: ``` "请输入你要查询的账本编号" ``` ## 4️⃣ 用户输入: - 用户输入账本编号: ``` 1 ``` ## 5️⃣ 内部处理流程: - **前台 -> 财务**: ``` "帮我查一下编号为1的账号有多少余额" ``` - **财务 -> 记账**: ``` "帮我查一下编号为1的账号有多少余额" ``` - **记账 -> 账本**: ``` "查找编号为1的账号" ``` - **账本 -> 记账**: ``` "编号为1的账号有1000元" ``` - **记账 -> 财务**: ``` "编号为1的账号有1000元" ``` - **财务 -> 前台**: ``` "编号为1的账号有1000元" ``` - **前台 -> 用户**: ``` "编号为1的账号有1000元" ``` # 账本 ```yaml accounts: - id: 1 balance: 1000 name: "张三" created_at: "2024-01-01" status: "active" - id: 2 balance: 2000 name: "李四" created_at: "2024-01-02" status: "active" - id: 3 balance: 3000 name: "王五" created_at: "2024-01-03" status: "active" ```
🔄 实体世界与软件世界的类比关系
钱庄角色 | 生活类比 | 软件组件 | 主要职责 |
顾客 | 去银行办事的人 | 用户在浏览器的操作 | 发起请求 |
前台柜员 | 银行柜台界面 | 前端界面 | 展示与交互 |
财务主管 | 银行业务规则 | 后端程序 | 业务处理 |
记账员 | 档案管理制度 | ORM层 | 数据操作 |
账本 | 银行金库 | 数据库 | 数据存储 |
银行架构图
graph TB subgraph 前台窗口 A[钱庄前台人员] end subgraph 财务室 B[钱庄财务人员] end subgraph 会计室 D[记账人员] end subgraph 账房 C[账本] end A -->|请求查询| B B -->|查账| D D -->|查找| C C -.->|余额信息| D D -.->|查询结果| B B -.->|查询结果| A
软件架构图
graph TB subgraph 前端 A[UI界面] end subgraph 后端 B[业务逻辑] end subgraph 数据访问 D[ORM层] end subgraph 存储 C[数据库] end A -->|HTTP请求| B B -->|查询| D D -->|SQL| C C -.->|数据| D D -.->|对象| B B -.->|JSON| A
以上图表可以直接粘贴在 Mermaid Chart 进行可视化。 同时你也可以利用此网站进行可视化绘制来描述需求 然后将图表代码直接提交给Cursor
业务流程对比
📋 查询余额的例子
🔧 各层次的具体实现方式
钱庄环节 | 软件技术 | 通信方式 | 数据格式 |
柜台交互 | HTML/CSS/JS | HTTP | JSON |
业务审核 | Python/Java | 函数调用 | 对象 |
记账操作 | ORM框架 | SQL | 表记录 |
账本存储 | 数据库 | - | 二进制 |
钱庄流程图
sequenceDiagram participant 顾客 participant 柜员 participant 主管 participant 记账 participant 账本 柜员->>顾客: 您好,请问要办什么业务? 顾客->>柜员: 查询余额 柜员->>顾客: 请提供账号 顾客->>柜员: 账号123 柜员->>主管: 请查询账号123的余额 主管->>记账: 调取账号123的记录 记账->>账本: 翻找账号123 账本-->>记账: 余额1000元 记账-->>主管: 报告余额1000元 主管-->>柜员: 账号123余额1000元 柜员-->>顾客: 您的余额是1000元
软件流程图
sequenceDiagram participant 浏览器 participant 前端 participant 后端 participant ORM participant 数据库 前端->>浏览器: 显示查询界面 浏览器->>前端: 点击查询按钮 前端->>后端: POST /api/balance 后端->>ORM: select_account(123) ORM->>数据库: SELECT * FROM accounts 数据库-->>ORM: {id: 123, balance: 1000} ORM-->>后端: Account(id=123, balance=1000) 后端-->>前端: {"balance": 1000} 前端-->>浏览器: 显示"余额: 1000元"
核心特点
✨ 为什么要这样设计?
分工明确
• 钱庄:柜员不需要懂账本
• 软件:前端不需要懂数据库
标准接口
• 钱庄:统一的单据格式
• 软件:统一的API格式
数据安全
• 钱庄:层层审核
• 软件:分层验证
可扩展性
• 钱庄:可增设柜台
• 软件:可横向扩展
Free try
第二章-大模型推理原理
状态表示的两种模式
语言是对”事件的相继“的记录,即事物状态记录,下文将称之为状态链
状态链有两种等价的表示,比如状态n=状态0 乘以 操作按照序列的复合
下文是一个生活中的例子,电影和游戏在描述状态链时候的不同,前者是一帧一帧的画面(状态),后者是初始状态然后运动。
电影模式:离散状态链

游戏模式:操作状态链

自然语言的状态表示与状态链推理问题
状态链

不严格的来说自然语言不管什么语言其主语谓语以及其修饰是状态描述,动词性词语是对状态的操作。
自然语言描述 | 隐含状态链表示 | 类型 |
“树苗长高了成了大树” | 树苗 –生长3年–> 大树 | 时序状态 |
“空地上建好了房子” | 空地 –[打地基,砌墙,盖顶]–> 房子 | 操作状态 |
“食材做熟了” | 食材 –[切菜,调味,加热]–> 熟菜 | 转换状态 |
状态链翻译 🔄

在数学中有一个概念是抽象矢量,抽象矢量是无法被表征的,抽象矢量只有通过选择基底茶才能够被表征出来。而不同的基底可以简单的理解为不同的坐标系,比如我们比较熟悉的笛卡尔坐标系及坐标系。
状态里面也有这样的特征,就像上文所实现的银行程序,自然语言表征的时一个剧本,序语言Python表征出的是一个程序,可以简单理解自然语言程序语言只是不同的坐标系,当然自然语言中还有更细的不同基底——中文、英语、法语、德语、拉丁语,其特征标是不同的。同样的在程序语言中也有更细的不同基底——Python、Java、C++、JavaScript,其特征标是不同的。

同一个抽象状态链的不同表示的互相转换也是状态链,如下图所示:

从剧本到程序 🎭
📝 写一个程序就像创作一部舞台剧的剧本。让我们来看看这个创作过程:
💡 就像我们的钱庄程序,本质上就是一个简单但完整的"剧本",定义了:
- 角色: 前台、财务、记账员等
- 场景: 钱庄业务环境
- 互动: 查询余额等业务流程
状态链推理问题的计算
当状态链没有操作后的状态时,就称之为状态链推理问题。
问题描述 | 状态链表示 |
“树苗长高了成了什么?” | 树苗 -> 生长3年 = ? |
“空地上建好了什么?” | 空地 -> [打地基,砌墙,盖顶] = ? |
“食材做熟了是什么?” | 食材 -> [切菜,调味,加热] = ? |

人类在使用自然语言学习、工作、协作时,存在大量对状态链推理问题的计算。下图为示例:

对计算过程的描述也可以作为初始状态,状态链推理问题总是可以看成🌊 Stream→🪄Pipeline,通俗的举例来说有一个管道可以把凉水变成热水,还有一个管道可以把热水和咖啡豆变成咖啡。这里的凉水、热水、咖啡豆可以换成任意stream都是成立的。而程序可以看作🪄Pipeline。


大语言模型的状态计算
在大语言模型出现之前,自然语言的编译和推理计算只能依赖人脑。大语言模型(LLM)作为一个近似于人脑的编译和推理计算引擎,可以执行类似的状态计算:

LLM 核心特性与指南 🤖
基础特性 ⚡
无记忆性 🔄
LLM 的工作模式类似于纯函数,每次对话都是独立的状态计算
- 📥 输入: 当前对话 + 历史对话记录
- 📤 输出: 生成的回答
- 🔍 特性: 每次推理都是独立的状态计算
💡 关键点: 确保提供给 LLM 的信息是完整的(具有马尔可夫性质),这样才能得到准确的推理结果

"语义世界"模型 🌍
LLM 是对人类语言描述的状态链下的世界的建模,而非对现实世界(抽象本征状态链)的直接建模
- 现实世界存在抽象的本征状态链
- 人类通过自然语言描述这些状态链
- LLM 是对这些语言描述的建模
- LLM 不直接接触抽象本征状态链


指南
B. 非线性信息表达
推荐使用图来表达描述状态
因为自然语言是一维串行的,就像很难表达一个电影的片段只能用剧本。图表是二维的可以非线性并行的表示状态
- 流程图
- 状态图
- 思维导图
- UML 图
可使用 Mermaid Chart 进行绘制。
C. 状态计算输入规范

形式
# 初始状态 # 结果状态 (结束状态可以不写) # 操作 # 示例 - 示例1:初始状态 → 结果状态 - 示例2:初始状态 → 结果状态
示例
# 初始状态 { ### 预层范畴和层的解释 #### 生活示例 **生活中的层次结构**:想象一个学校的组织结构。学校可以被视为一个“层”,而在这个层中又有不同的“预层”,例如: - **学校层**:整个学校作为一个整体。 - **班级层**:每个班级作为一个子层。 - **学生层**:班级中的每个学生。 在这个例子中,学校是一个层,而班级和学生则是预层。每个层次都有其特定的角色和功能。 #### Mermaid 图表 ```mermaid graph TD A[学校层] B[班级层] C[学生层] A --> B B --> C ``` #### 概念映射表 | 概念 | 描述 | |------------|--------------------------------------------| | 层 | 整体结构的一个部分,具有特定的功能和角色。 | | 预层 | 层中的子结构,进一步细分层的功能和角色。 | | 例子 | 学校层、班级层、学生层 | | 关系 | 层包含预层,预层构成层的具体实现。 | ### 总结 - **层**是一个整体结构的组成部分,具有特定的功能。 - **预层**是层的细分,进一步定义了层的内部结构和功能。 - 通过生活中的例子、图表和概念映射,可以更清晰地理解这两个概念的关系和作用。 } # 操作 把初始状态翻译成英语,注意学术用语

第三章-本地全栈应用软件工程
🤖 使用AI助手配置开发环境
提示
打开新文件夹


复制第一章的代码到此处,也可以使用资料中的bank.py,也可以从下方复制。
代码
import yaml from dataclasses import dataclass from typing import List, Optional, Tuple from datetime import datetime # 数据模型 @dataclass class Account: id: int balance: float name: str created_at: str status: str class AccountBook: def __init__(self, file_path: str): self.file_path = file_path self.accounts = self._load_accounts() def _load_accounts(self) -> List[Account]: with open(self.file_path, 'r', encoding='utf-8') as f: data = yaml.safe_load(f) return [Account(**account) for account in data['accounts']] def _save_accounts(self): data = {'accounts': [ { 'id': acc.id, 'balance': acc.balance, 'name': acc.name, 'created_at': acc.created_at, 'status': acc.status } for acc in self.accounts ]} with open(self.file_path, 'w', encoding='utf-8') as f: yaml.dump(data, f, allow_unicode=True) def find_account(self, account_id: int) -> Optional[Account]: print("📚 账本:正在查找账号...") account = next((acc for acc in self.accounts if acc.id == account_id), None) if account: print(f"📚 账本:找到账号,余额为{account.balance}元") else: print("📚 账本:未找到该账号") return account def modify_balance(self, account_id: int, amount: float) -> Tuple[bool, str]: account = self.find_account(account_id) if not account: return False, "账号不存在" new_balance = account.balance + amount if new_balance < 0: return False, "余额不足" account.balance = new_balance self._save_accounts() print(f"📚 账本:余额已更新为{new_balance}元") return True, f"操作成功,当前余额为{new_balance}元" class Accountant: def __init__(self, account_book: AccountBook): self.account_book = account_book def query_balance(self, account_id: int) -> str: print(f"👨💼 记账:收到查询请求,正在查询账号{account_id}...") account = self.account_book.find_account(account_id) result = f"编号为{account_id}的账号有{account.balance}元" if account else f"未找到编号为{account_id}的账号" print(f"👨💼 记账 -> 财务:{result}") return result def process_transaction(self, account_id: int, amount: float) -> str: print(f"👨💼 记账:收到交易请求,账号{account_id},金额{amount}元") success, message = self.account_book.modify_balance(account_id, amount) result = f"交易{'成功' if success else '失败'}:{message}" print(f"👨💼 记账 -> 财务:{result}") return result class FinanceStaff: def __init__(self, accountant: Accountant): self.accountant = accountant def query_balance(self, account_id: int) -> str: print(f"👨🏫 财务 -> 记账:帮我查一下编号为{account_id}的账号有多少余额") result = self.accountant.query_balance(account_id) print(f"👨🏫 财务 -> 前台:{result}") return result def handle_deposit(self, account_id: int, amount: float) -> str: print(f"👨🏫 财务 -> 记账:处理存款,账号{account_id},金额{amount}元") result = self.accountant.process_transaction(account_id, amount) print(f"👨🏫 财务 -> 前台:{result}") return result def handle_withdrawal(self, account_id: int, amount: float) -> str: print(f"👨🏫 财务 -> 记账:处理取款,账号{account_id},金额{amount}元") result = self.accountant.process_transaction(account_id, -amount) print(f"👨🏫 财务 -> 前台:{result}") return result class FrontDesk: def __init__(self, finance_staff: FinanceStaff): self.finance_staff = finance_staff def handle_query_balance(self, account_id: int) -> str: print(f"👨💻 前台 -> 财务:帮我查一下编号为{account_id}的账号有多少余额") result = self.finance_staff.query_balance(account_id) print(f"👨💻 前台 -> 客户:{result}") return result def handle_deposit(self, account_id: int, amount: float) -> str: print(f"👨💻 前台 -> 财务:处理存款业务,账号{account_id},金额{amount}元") result = self.finance_staff.handle_deposit(account_id, amount) print(f"👨💻 前台 -> 客户:{result}") return result def handle_withdrawal(self, account_id: int, amount: float) -> str: print(f"👨💻 前台 -> 财务:处理取款业务,账号{account_id},金额{amount}元") result = self.finance_staff.handle_withdrawal(account_id, amount) print(f"👨💻 前台 -> 客户:{result}") return result def start_interaction(self): while True: print("\n👨💻 前台:你好,我是钱庄前台人员,请输入数字以选择你要办理的业务:") print("1. 查询余额") print("2. 存款") print("3. 取款") print("0. 退出") choice = input("👤 客户:").strip() if choice == "0": print("👨💻 前台:感谢使用,再见!") break try: if choice in ["1", "2", "3"]: print("👨💻 前台:请输入账本编号:") account_id = int(input("👤 客户:").strip()) if choice in ["2", "3"]: print("👨💻 前台:请输入金额:") amount = float(input("👤 客户:").strip()) if amount <= 0: print("❌ 金额必须大于0!") continue print(f"\n=== 开始处理请求 ===") if choice == "1": result = self.handle_query_balance(account_id) elif choice == "2": result = self.handle_deposit(account_id, amount) else: # choice == "3" result = self.handle_withdrawal(account_id, amount) print(f"=== 请求处理完成 ===\n") else: print("❌ 无效的选择,请重试!") except ValueError: print("❌ 输入格式错误,请重试!") def main(): print("🏦 === 钱庄系统启动 ===") # 初始化系统组件 account_book = AccountBook('accounts.yaml') accountant = Accountant(account_book) finance_staff = FinanceStaff(accountant) front_desk = FrontDesk(finance_staff) # 启动交互 front_desk.start_interaction() print("🏦 === 钱庄系统关闭 ===") if __name__ == "__main__": main()
accounts: - id: 1 balance: 1000 name: "张三" created_at: "2024-01-01" status: "active" - id: 2 balance: 2000 name: "李四" created_at: "2024-01-02" status: "active" - id: 3 balance: 3000 name: "王五" created_at: "2024-01-03" status: "active"
需求分析
@{代码的名称} 请review这个项目: 1. 核心功能是什么? 2. 技术架构如何? 3. 主要流程有哪些? 4. 数据结构怎样? 5. 可能的难点在哪? 期望输出: - 功能清单 - 架构图示(mermaid) - 流程说明 - 数据模型 - 风险分析
B. 架构设计
基于需求分析,我现在想把这个程序改成一个web程序 @WebWorkflow.md ,请帮我: 1. 设计系统架构 2. 规划技术栈 3. 定义接口规范 4. 设计数据模型 5. 制定开发计划 输出格式: - 架构图 - 技术选型 - API文档 openapi 3.0规范yaml - 数据库表 - 迭代计划 技术栈: - 前端:HTML/CSS/js Vite - API接口:HTTP/REST - 后端:fastapi,pydantic,sqlalchemy,Poetry - 数据库:sqlite - 记得跨域 - 采用yaml配置化策略 注意在得到我明确提出开始实现之前,不要开始实现,先告诉我你的规划,包括但不限于 - 文件结构 - 数据库设计 - 架构图 - 流程图 且要求你要给我详细的库安装命令
开始重构项目
开始实现
WebWorkflow.md
sequenceDiagram participant 用户 as 用户/Client participant 前台 as 前端/Frontend participant 财务 as 后端业务逻辑/Backend participant 记账 as 数据库连接层/ORM participant 账本 as 数据库/Database 前台->>用户: 展示界面(UI)请选择业务 用户->>前台: HTTP请求:查询操作 前台->>财务: API调用:查询账户余额 财务->>记账: 数据库查询请求 记账->>账本: SQL查询语句 账本-->>记账: 查询结果集 记账-->>财务: 数据对象 财务-->>前台: JSON响应 前台-->>用户: 渲染结果到页面 Note over 用户: 客户端 Note over 前台: 处理UI交互 Note over 财务: 处理业务规则 Note over 记账: ORM/数据访问 Note over 账本: 持久化存储
前端和后端可以分开开发,即让Cursor定义接口文档(REST API,Openapi 3.0 规范),然后前后端分别根据这个文档开发,
总结
优秀状态链表达的要素 ✨
明确的初始状态
- 人物表及其特性(Data class)
- 场景设定
- 人物事件交互(流程图)
💫 通常你并不需要写的如此详细,因为剧本的补全和推理是LLM的强项。
明确的结束状态约束
- 技术栈
- 架构
- 文件结构
- API接口
- 数据库表结构
深入学习路线图 🎓
💡 从基础到高级的理论学习索引,建议直接通过编程实践来掌握概念
- 数学概念可使用 Lean4、Mathematica 实现
- 每个阶段都注重实践与理论结合
Phase 1: Computer Fundamentals (计算机基础) 💻
Von Neumann Architecture (冯诺依曼架构) 🏗️
- Stored Program Concept (存储程序概念)
- Memory-Processor Architecture (存储器-处理器架构)
Turing Machine (图灵机) ⚙️
- Computability (可计算性)
- State Transitions (状态转换)
Basic Computational Models (基本计算模型) 📊
- Finite State Machines (有限状态机)
- Push-down Automata (下推自动机)
Phase 2: Theoretical Computer Science (计算理论) 🧮
Computability Theory (可计算性理论) 🔄
- Recursive Functions (递归函数)
- Turing Completeness (图灵完备性)
- Halting Problem (停机问题)
Recursive Function Theory (递归函数论) 🌀
- μ-recursive Functions (μ递归函数)
- Primitive Recursion (原始递归)
- Minimization (最小化)
Formal Languages and Automata (形式语言与自动机) 📝
- Chomsky Hierarchy (乔姆斯基层级)
- Regular Languages (正则语言)
- Context-Free Grammars (上下文无关文法)
Phase 3: Mathematical Foundations (数学基础) 📐
Category Theory (范畴论) 🔗
- Functors and Natural Transformations (函子与自然变换)
- Universal Properties (泛性质)
- Adjoint Functors (伴随函子)
Set Theory (集合论) 🎯
- ZFC Axioms (ZFC公理)
- Ordinals and Cardinals (序数与基数)
- Forcing (力迫法)
Abstract Algebra (抽象代数) 🎲
- Groups, Rings, Fields (群、环、域)
- Galois Theory (伽罗瓦理论)
- Algebraic Geometry (代数几何)
Phase 4: Advanced Topics (高级主题) 🚀
Representation Theory (表示论) 🎭
- Group Representations (群表示)
- Character Theory (特征理论)
- Lie Algebras (李代数)
Topos Theory (拓扑斯理论) 🌐
- Geometric Logic (几何逻辑)
- Sheaf Theory (层论)
- Internal Languages (内部语言)
Homotopy Type Theory (同伦类型论) 🔱
- Dependent Types (依赖类型)
- Univalence Axiom (单价公理)
- Higher Inductive Types (高阶归纳类型)
Phase 5: Machine Learning (机器学习) 🤖
Scale & Dynamics (尺度与动力学) 📈
- Nonlinear Dynamics (非线性动力学)
- Evolutionary Dynamics (进化动力学)
Neural Foundations (神经基础) 🧠
- Hebb's Law (赫布定律)
- Calculus (微积分)
- Hamiltonian Principle (哈密顿原理)
- Variational Methods (变分法)
- Functional Analysis (泛函分析)
- Complex Analysis (复变函数)
Modern Concepts (现代概念) 💫
- A New Kind of Science (新科学范式)
- Neural Networks (神经网络)
- Deep Learning (深度学习)
- Optimization Theory (优化理论)
Phase 6: Mathematical Physics (数学物理) ⚛️
System Science (系统科学) 🔄
- Cybernetics (控制论)
Quantum Theory (量子理论) 🌌
- Path Integrals (路径积分)
- Gauge Theory (规范理论)
- Renormalization (重整化)
Statistical Physics (统计物理) 📊
- Ising Model (伊辛模型)
- Phase Transitions (相变)
- Critical Phenomena (临界现象)
Advanced Mathematics (高等数学) 📚
- Differential Geometry (微分几何)
- Symplectic Geometry (辛几何)
- Operator Theory (算子理论)