附录3 百宝箱——工欲善其事必先利其器
路虽远行则将至,事虽难做则必成。
一、思维方法论
三种核心思维
| 思维 | 说明 |
|---|---|
| 数学思维 | 数学是科学的语言,是最重要的理论工具 |
| 工具思维 | 计算机是最重要的工程应用工具 |
| 工程思维 | 将理论工具应用到实际问题中的思维方式 |
人类学习的一般规律
- 从特殊到一般:先接触具体实例,再归纳总结出普遍规律
- 从直觉到抽象:先靠感官感知,再上升到抽象推理
- 从已知到未知:依托已有知识同化新知识
- 从感性到理性:先感性观察,再理性分析
费曼学习法
如果你不能用简单的话把某个概念讲清楚,说明你还没有真正理解它。—— 理查德·费曼
四个步骤:
- 确定目标:写下你想学习的概念
- 模拟教学:用最简单的语言解释给一个8岁的孩子听
- 发现盲点:卡住的地方回到原始材料重新学习
- 简化与类比:用一个生动的类比让外行也听懂
二、中外著名数学家
| 时代 | 数学家 | 国籍 | 贡献 |
|---|---|---|---|
| 古希腊 | 毕达哥拉斯 | 希腊 | 勾股定理、万物皆数 |
| 古希腊 | 欧几里得 | 希腊 | 《几何原本》、公理化方法 |
| 古希腊 | 阿基米德 | 希腊 | 浮力定律、杠杆原理 |
| 17世纪 | 牛顿 | 英国 | 微积分、万有引力 |
| 17世纪 | 莱布尼茨 | 德国 | 微积分(独立创立) |
| 18世纪 | 欧拉 | 瑞士 | 数学分析、图论、符号创造 |
| 19世纪 | 高斯 | 德国 | 数论之王、统计学 |
| 19世纪 | 黎曼 | 德国 | 黎曼几何、黎曼猜想 |
| 20世纪 | 冯·诺依曼 | 匈牙利 | 计算机架构、博弈论 |
| 20世纪 | 拉马努金 | 印度 | 数论、直觉数学天才 |
| 20世纪 | 庞加莱 | 法国 | 拓扑学、庞加莱猜想 |
| 时代 | 数学家 | 贡献 |
|---|---|---|
| 三国 | 刘徽 | 《九章算术注》、割圆术 |
| 南北朝 | 祖冲之 | 圆周率精确到 7 位小数 |
| 南宋 | 秦九韶 | 《数书九章》、秦九韶算法 |
| 近代 | 华罗庚 | 解析数论、统筹法 |
| 近代 | 陈景润 | 哥德巴赫猜想研究 |
| 近代 | 陈省身 | 微分几何 |
| 近代 | 吴文俊 | 吴方法(机器证明) |
| 当代 | 丘成桐 | 菲尔兹奖、卡拉比-丘流形 |
| 当代 | 陶哲轩 | 数论、调和分析 |
| 当代 | 张益唐 | 孪生素数猜想突破 |
更多数学家参考:数学时间线
三、计算机著名科学家
| 人物 | 贡献 |
|---|---|
| 艾伦·图灵 | 图灵机、人工智能、密码破译 |
| 约翰·冯·诺依曼 | 冯·诺依曼架构、博弈论 |
| 克劳德·香农 | 信息论、数字电路理论 |
| 高德纳(Donald Knuth) | 《计算机程序设计艺术》、TeX |
| 约翰·麦卡锡 | Lisp 语言、人工智能 |
| 林纳斯·托瓦兹 | Linux 内核、Git |
四、数学工具
| 工具 | 说明 |
|---|---|
| MATLAB | 商业科学计算软件 |
| [Wolfram | Alpha](https://zh.wolframalpha.com/) |
| 北太天元 | 国产通用型科学计算软件 |
| Desmos | 在线图形计算器 |
| Mathigon | 数学游乐场(交互式学习) |
| GeoGebra | 动态几何数学软件 |
| VisuAlgo | 算法可视化 |
五、Python 工具生态
| 工具 | 用途 |
|---|---|
| Manim | 数学动画制作 |
| NumPy | 科学计算基础库 |
| SciPy | 科学计算 |
| SymPy | 符号计算 |
| Matplotlib | 数据可视化 |
| Pandas | 数据分析 |
| Scikit-learn | 机器学习 |
| Statsmodels | 统计建模 |
| PaddlePaddle | 深度学习框架 |
| CUDA | GPU 并行计算 |
| jieba | 中文分词 |
六、Rust 工具生态
| 工具 | 用途 |
|---|---|
| cargo | Rust 包管理器 |
| nalgebra | 线性代数库 |
| plotters | 数据绘图库 |
| Apache Arrow | 内存列式数据格式 |
| DataFusion | 查询引擎 |
| mdBook | 电子书生成工具 |
| mdbook-mermaid | mdBook 的 Mermaid 图表插件 |
| Mermaid | 图表即代码 |
| Tauri | 桌面应用框架 |
| SQLite | 嵌入式数据库 |
| Rustls | TLS 库 |
| dimforge | 科学计算库集合 |
| CodeWhale | Rust 在线学习平台 |
| ffmpeg | 多媒体处理库 |
| ffmpeg-next | 多媒体处理库的 Rust 绑定 |
在线运行环境
| 工具 | 说明 |
|---|---|
| Rust Playground | 在线运行 Rust 代码 |
| Rust Explorer | Rust 代码在线实验 |
| Replit | 多语言在线 IDE |
| Godbolt (Compiler Explorer) | 交互式编译实验室 |
| miniserve | 静态文件服务器 |
七、IDE 与编辑器
| IDE | 说明 |
|---|---|
| Zed | 高性能编辑器(Your last next editor) |
| VS Code | 最流行的通用编辑器 |
| RustRover | JetBrains 出品的 Rust IDE |
| IntelliJ IDEA | Java/Rust 开发 |
八、学习资源
8.1 经典书籍
计算机科学经典
| 书名 | 作者 | 说明 |
|---|---|---|
| 《计算机程序设计艺术》(TAOCP) | Donald Knuth | 算法圣经,共四卷 |
| 《算法导论》(CLRS) | Cormen 等 | 最经典的算法教材 |
| 《深入理解计算机系统》(CSAPP) | Bryant & O’Hallaron | 程序员视角理解计算机 |
| 《计算机程序的构造和解释》(SICP) | Abelson & Sussman | MIT 经典,Scheme 语言 |
| 《代码大全》 | Steve McConnell | 软件构建实践百科 |
| 《程序员修炼之道》 | Hunt & Thomas | 务实程序员指南 |
| 《设计模式》 | GoF 四人组 | 23 种经典设计模式 |
| 《重构:改善既有代码的设计》 | Martin Fowler | 代码重构方法论 |
| 《编译原理》(龙书) | Aho 等 | 编译器构造经典 |
| 《计算机组成与设计》 | Patterson & Hennessy | 硬件与软件的接口 |
| 《操作系统概念》(恐龙书) | Silberschatz 等 | 操作系统教材 |
| 《计算机网络:自顶向下方法》 | Kurose & Ross | 网络经典教材 |
| 《数据库系统概念》 | Silberschatz 等 | 数据库教材 |
| 《人工智能:一种现代方法》(AIMA) | Russell & Norvig | AI 领域权威教材 |
| 《深度学习》(花书) | Goodfellow 等 | 深度学习圣经 |
Rust 编程
| 书名 | 说明 |
|---|---|
| 《The Rust Programming Language》 | Rust 官方教程(Klabnik & Nichols) |
| 《Rust By Example》 | 通过示例学 Rust |
| 《Rustlings》 | 交互式 Rust 练习 |
| 《Programming Rust》 | O’Reilly 深入版(Blandy & Orendorff) |
| 《Rust in Action》 | 系统编程实战(McNamara) |
| 《Zero to Production in Rust》 | 后端工程实战(Palmiro) |
| 《Rust for Rustaceans》 | 进阶 Rust(Gjengset) |
| 《Command-Line Rust》 | CLI 工具开发 |
算法与数据结构
| 书名 | 作者 | 说明 |
|---|---|---|
| 《算法》(Algorithms) | Sedgewick | 配合可视化,Java 版 |
| 《算法图解》 | Bhargava | 入门友好,插图丰富 |
| 《剑指 Offer》 | 何海涛 | 面试算法经典 |
| 《编程珠玑》 | Bentley | 算法思维训练 |
| 《算法竞赛入门经典》 | 刘汝佳 | 竞赛算法(紫书) |
| 《数据结构与算法分析》 | Weiss | C/C++/Java 多版本 |
数学与密码学
| 书名 | 作者 | 说明 |
|---|---|---|
| 《具体数学》 | Knuth 等 | 计算机数学基础 |
| 《离散数学及其应用》 | Rosen | 离散数学经典教材 |
| 《线性代数应该这样学》 | Axler | 抽象线性代数 |
| 《概率论与数理统计》 | 陈希孺 | 概率统计 |
| 《数论概论》 | Silverman | 数论入门 |
| 《密码学原理与实践》 | Stinson | 密码学教材 |
| 《应用密码学》 | Schneier | 密码学百科全书 |
8.2 在线教程与课程
公开课与 MOOC
| 资源 | 说明 |
|---|---|
| MIT OpenCourseWare | MIT 免费课程(6.006 算法、6.828 OS 等) |
| CS50 | 哈佛计算机科学入门课 |
| Coursera | 斯坦福、密歇根等名校课程 |
| edX | MIT/哈佛/伯克利在线课程 |
| Stanford Online | 斯坦福在线课程 |
| B站学习区 | 大量中文字幕翻译课程 |
交互式学习
| 资源 | 说明 |
|---|---|
| Rustlings | Rust 交互式练习 |
| Rust By Practice | Rust 实战练习 |
| LeetCode | 算法刷题平台 |
| Exercism | 多语言编程练习 |
| Codecademy | 交互式编程学习 |
| freeCodeCamp | 免费全栈开发课程 |
| Khan Academy | 数学与计算机科学免费课程 |
8.3 算法与竞赛平台
| 平台 | 说明 |
|---|---|
| LeetCode | 最流行的算法面试刷题平台 |
| 力扣 | LeetCode 中文站 |
| Codeforces | 竞技编程竞赛平台 |
| AtCoder | 日本竞赛平台,题目质量高 |
| 洛谷 | 国内最大算法竞赛社区 |
| 牛客网 | 面试笔试 + 竞赛 |
| Project Euler | 数学+编程挑战(600+ 题) |
| HackerRank | 企业招聘+算法练习 |
| SPOJ | 经典在线评测系统 |
| UVa Online Judge | 紫书配套题目 |
8.4 开发者文档与手册
| 资源 | 说明 |
|---|---|
| Rust 官方文档 | 标准库、Book、Reference |
| Rust std 文档 | 标准库 API 文档 |
| Rust by Example | 示例驱动学习 |
| Cargo Book | Cargo 包管理器手册 |
| Rust Cookbook | Rust 编程示例集 |
| MDN Web Docs | Web 开发权威文档 |
| DevDocs | 聚合多个 API 文档 |
| cheatsheets | 各类速查表 |
| OverAPI | 编程语言速查表集合 |
8.5 开发者社区与资讯
| 社区 | 说明 |
|---|---|
| GitHub | 全球最大代码托管与协作平台 |
| Stack Overflow | 程序员问答社区 |
| Reddit r/rust | Rust 社区讨论 |
| Reddit r/programming | 编程综合讨论 |
| Hacker News | 技术新闻与讨论 |
| Reddit r/cpp | C++ 社区 |
| users.rust-lang.org | Rust 官方论坛 |
| V2EX | 国内开发者社区 |
| 掘金 | 中文技术社区 |
| 博客园 | 中文技术博客 |
| InfoQ | 技术资讯与深度文章 |
| This Week in Rust | Rust 每周资讯 |
8.6 视频教程
| 资源 | 说明 |
|---|---|
| 3Blue1Brown 官网 | 数学可视化讲解 |
| 3Blue1Brown B站 | 中文字幕版 |
| 微积分的本质 | 微积分可视化系列 |
| 线性代数的本质 | 线性代数可视化系列 |
| MIT 6.006 算法导论 | Erik Demaine 教授主讲 |
| Crash Course Computer Science | 计算机科学速成 40 集 |
| Jon Gjengset YouTube | Rust 深度直播 |
| Let’s Get Rusty | Rust 教程频道 |
8.7 技术博客与资讯
| 资源 | 说明 |
|---|---|
| Martin Fowler 博客 | 软件架构与重构大师 |
| Joel on Software | Stack Overflow 创始人博客 |
| Paul Graham 文集 | YC 创始人,创业与编程 |
| The Pragmatic Engineer | 工程实践深度文章 |
| Lobsters | 高质量技术链接聚合 |
| Daily.dev | 开发者个性化技术资讯 |
| 阮一峰的网络日志 | 科技爱好者周刊 |
| 酷壳 CoolShell | 陈皓的技术博客 |
8.8 开源与协作平台
| 平台 | 说明 |
|---|---|
| GitHub | 全球最大代码托管平台 |
| GitLab | DevOps 一体化平台 |
| Gitee | 国内代码托管平台 |
| Bitbucket | Atlassian 代码托管 |
| Codeberg | 非营利开源协作平台 |
| crates.io | Rust 包注册中心 |
| docs.rs | Rust crate 自动文档 |
| lib.rs | Rust crate 发现与推荐 |
8.9 交互式工具
| 工具 | 说明 |
|---|---|
| matrix_calculator | 矩阵计算器 |
| Polypad | 数学画布 |
| Rust Playground | 在线运行 Rust 代码 |
| Compiler Explorer | 查看编译后的汇编代码 |
| Python Tutor | 代码可视化执行(支持多语言) |
| [Wolfram | Alpha](https://www.wolframalpha.com/) |
8.10 数据库
| 资源 | 说明 |
|---|---|
| SQLite | 嵌入式数据库 |
| SpatiaLite | 地理空间数据支持 |
| SQLCipher | 加密的 SQLite 数据库 |
| PostgreSQL | 功能强大的开源关系数据库 |
| Redis | 内存键值数据库 |
| DuckDB | 嵌入式分析型数据库 |
九、Rust Playground 运行原理
# 将 markdown 中的代码块发送到 Rust Playground API
curl -X POST https://play.rust-lang.org/evaluate.json \
-H "Content-Type: application/json" \
-d @rust_code.json
Rust Playground 预置了下载量排名前 100 的 crates、Rust Cookbook 中的 crates,以及它们的所有依赖项。你可以直接使用它们,无需任何额外配置。
十、经典语录
- “万物皆数” —— 毕达哥拉斯
- “条条大路通罗马” —— 从当前位置到达目的地存在多种路径
- “量变引起质变” —— 持续积累终将导致突破
- “科学技术是第一生产力”
- “科学技术是一把双刃剑,既可以造福人类,也可以伤害人类,关键是掌握在谁的手中,用它来干什么”
十一、人机交互方式
| 方式 | 说明 |
|---|---|
| GUI | 图形用户界面,用户友好 |
| CLI | 命令行界面,高效精确 |
| 代码 | 人类使用代码编写程序与机器交互 |
成千上万的科学家实现 0→1 的发现,数以千万的工程师创造、集成大量的工具,数以亿计的普通人利用工具。
一个伟大的工具,能够深入和广泛应用在各行各业,一个重要的前提是成本足够低、效率足够高。