编程教程
一页学会一门编程语言、一个设计模式或一个算法。每篇先直接回答问题,再给出能运行的代码、常见错误和官方参考资料。
编程语言
- 阅读约 7 分钟Python语法、类型、流程控制、函数、集合、错误与文件,一页讲完
- 阅读约 8 分钟JavaScript变量、类型、函数、数组、对象、Promise 与 async/await
- 阅读约 8 分钟TypeScript类型、接口、联合类型、类型收窄、泛型与错误处理一页讲完
- 阅读约 9 分钟Java类型、类、record、集合、异常与模式匹配一页讲完
- 阅读约 9 分钟C类型、函数、数组、字符串、指针、malloc/free 与错误处理
- 阅读约 10 分钟C++类型、类、STL 容器、lambda、RAII、智能指针与异常
- 阅读约 9 分钟C#类型、类、record、集合、LINQ、async/await 与异常
- 阅读约 9 分钟Go类型、切片、map、结构体、接口、goroutine、channel 与错误
- 阅读约 9 分钟Rust所有权、借用、结构体、枚举、match、集合与 Result 一页讲完
- 阅读约 8 分钟PHP变量、数组、函数、类、枚举、异常与 JSON 接口一页讲完
- 阅读约 7 分钟Ruby类型、方法、数组、哈希、块、类、模块与异常
- 阅读约 9 分钟Swift类型、可选值、闭包、集合、结构体、枚举、协议与错误
- 阅读约 10 分钟Kotlin空安全、控制流、函数、数据类与协程一页讲完
- 阅读约 9 分钟Dart空安全、函数、集合、类与 async/await,面向 Flutter
- 阅读约 9 分钟ScalaScala 3 语法、模式匹配、集合、case class 与 Option
- 阅读约 8 分钟R向量、数据框、函数、统计与绘图一页讲完
- 阅读约 10 分钟SQLSELECT、JOIN、GROUP BY、CTE、事务,及三种数据库差异
- 阅读约 9 分钟Bash脚本、变量、引号、循环、函数、管道与 set -euo pipefail
- 阅读约 10 分钟PowerShellCmdlet、对象管道、变量、函数、哈希表与 try/catch
- 阅读约 9 分钟Lua变量、表、函数、元表与 pcall 一页讲完
- 阅读约 10 分钟Perl标量、数组、哈希、子程序、正则表达式与错误处理
- 阅读约 10 分钟Haskell纯函数、类型、模式匹配、列表、Maybe 与 IO
- 阅读约 9 分钟Elixir模式匹配、管道、Enum、进程与 {:ok, value} 错误处理
- 阅读约 9 分钟Erlang模式匹配、递归、进程、OTP 与 let-it-crash 错误处理
- 阅读约 8 分钟Clojure语法、不可变集合、函数、宏、atom 与错误处理
- 阅读约 8 分钟F#类型、记录、联合、模式匹配、管道与 Result 一页讲完
- 阅读约 8 分钟OCaml类型、记录、变体、模式匹配、模块与错误处理
- 阅读约 8 分钟Julia类型、数组、广播、函数、多重派发与错误处理
- 阅读约 8 分钟Zig类型、切片、可选值、错误联合、comptime、defer 与分配器
- 阅读约 9 分钟Fortran现代语法、类型、循环、过程、模块、数组与 iostat
- 阅读约 9 分钟COBOL四大部、PIC 数据、IF/EVALUATE、PERFORM 循环、表与文件
- 阅读约 11 分钟Assembly (x86-64)x86-64 NASM 寄存器、指令、循环、内存、系统调用与 AT&T 语法
- 阅读约 9 分钟Visual Basic .NETVB.NET 语法、类型、循环、函数、集合、类、LINQ 与 VBA
- 阅读约 9 分钟Objective-C消息、类、属性、Foundation 集合、block、ARC、NSError
- 阅读约 8 分钟MATLAB矩阵、索引、循环、函数、结构体、元胞、绘图与 Octave
设计模式
- 阅读约 9 分钟设计模式设计模式是什么、GoF 23 种模式分类及如何选择
- 阅读约 8 分钟SOLID 原则SOLID 五大设计原则,各附 TypeScript 前后对比示例
- 阅读约 6 分钟单例模式保证只有一个实例:TypeScript 示例、异步变体与替代方案
- 阅读约 6 分钟工厂方法模式让子类决定创建哪种对象:TypeScript 示例与适用场景
- 阅读约 6 分钟抽象工厂模式无需指定具体类,即可创建一族相关对象
- 阅读约 6 分钟建造者模式用流式 API 分步构建复杂对象,并介绍 Director 角色
- 阅读约 6 分钟原型模式通过克隆实例创建对象:TypeScript clone()、深浅拷贝
- 阅读约 6 分钟适配器模式让不兼容的接口协同工作:TypeScript 示例、对象与类适配器
- 阅读约 5 分钟桥接模式分离抽象与实现,使两者可独立变化
- 阅读约 6 分钟组合模式统一对待单个对象与对象树:TypeScript 文件系统示例
- 阅读约 6 分钟装饰器模式运行时通过包装为对象添加行为:类与函数装饰器
- 阅读约 5 分钟外观模式为复杂子系统提供统一入口:TypeScript 结账示例
- 阅读约 5 分钟享元模式共享内部状态以节省内存,附 TypeScript 示例
- 阅读约 6 分钟代理模式用缓存、懒加载、保护和远程代理控制对象访问
- 阅读约 6 分钟责任链模式沿处理者链传递请求直到被处理,含中间件形式
- 阅读约 6 分钟命令模式把请求变成对象,用于排队、记录、撤销与重做
- 阅读约 5 分钟解释器模式用类建模小型语言,在 TypeScript 中求值表达式树
- 阅读约 6 分钟迭代器模式不暴露内部存储地遍历集合,含 Symbol.iterator 与生成器
- 阅读约 5 分钟中介者模式通过一个中心对象协调组件,取代直接引用
- 阅读约 6 分钟备忘录模式不暴露内部细节地保存与恢复状态,用于撤销与检查点
- 阅读约 6 分钟观察者模式主体变化时自动通知订阅者,附带类型的 TypeScript 代码
- 阅读约 6 分钟状态模式用状态类代替 switch,让对象行为随状态改变
- 阅读约 5 分钟策略模式运行时替换可互换的算法,用 TypeScript 函数或类实现
- 阅读约 6 分钟模板方法模式在基类固定算法步骤,由子类填充细节
- 阅读约 7 分钟访问者模式通过双分派为类层次添加操作,及联合类型替代方案
数据结构
- 阅读约 7 分钟链表单向与双向链表:插入、删除、反转、环检测与复杂度
- 阅读约 6 分钟栈和队列用 Python 讲 LIFO 栈与 FIFO 队列:括号匹配、BFS 与复杂度
- 阅读约 7 分钟哈希表哈希函数、桶、冲突、负载因子与扩容,附 Python 代码
- 阅读约 6 分钟二叉搜索树BST 有序规则、搜索、插入与删除的 Python 实现、平衡与复杂度
- 阅读约 5 分钟二叉树遍历前序、中序、后序与层序,递归与迭代的 Python 代码
- 阅读约 7 分钟二叉堆堆性质、上浮下沉、建堆、优先队列与 Python heapq
- 阅读约 6 分钟Trie(前缀树)前缀树的插入、搜索、前缀判断与自动补全,附复杂度
- 阅读约 6 分钟并查集不相交集合并查:find、union、路径压缩与按秩合并,附 Python
- 阅读约 7 分钟LRU 缓存用哈希表加双向链表实现最近最少使用缓存,含 OrderedDict
算法
- 阅读约 6 分钟大 O 表示法时间与空间复杂度、常见类别及如何从代码中读出
- 阅读约 6 分钟递归基准情形、调用栈、记忆化与 Python 递归深度限制
- 阅读约 6 分钟二分查找二分查找如何折半有序区间:Python 代码、bisect、变体与陷阱
- 阅读约 7 分钟双指针与滑动窗口对撞指针、快慢指针与滑动窗口,附 Python 代码和过程追踪
- 阅读约 5 分钟冒泡排序冒泡排序如何交换相邻元素:逐趟追踪、Python 代码与复杂度
- 阅读约 5 分钟选择排序选择排序如何挑出最小值:分步追踪、Python 代码与稳定性
- 阅读约 6 分钟插入排序插入排序如何移位归位:追踪、Python 代码、稳定性与最佳情形
- 阅读约 6 分钟归并排序分治归并排序:追踪、Python 代码、合并步骤、稳定性与复杂度
- 阅读约 7 分钟快速排序基准、Lomuto 分区追踪、Python 代码、最坏情形与快速选择
- 阅读约 7 分钟堆排序大根堆、下沉、分步追踪、Python 代码、heapq 与复杂度
- 阅读约 6 分钟计数排序小整数键的线性时间计数排序:追踪、稳定的 Python 代码与复杂度
- 阅读约 6 分钟基数排序LSD 与 MSD 基数排序:逐位追踪、Python 代码、稳定性与复杂度
- 阅读约 6 分钟广度优先搜索(BFS)用队列实现 BFS:示例追踪、Python 代码、最短路径与 O(V + E)
- 阅读约 6 分钟深度优先搜索(DFS)递归与迭代 DFS:示例追踪、环检测与 O(V + E) 复杂度
- 阅读约 6 分钟Dijkstra 算法用优先队列求最短路径:示例追踪、Python heapq 代码与复杂度
- 阅读约 6 分钟Bellman-Ford 算法含负权边的最短路径、负环检测与 Python 代码
- 阅读约 6 分钟Floyd-Warshall 算法全源最短路径:矩阵示例追踪、Python 代码、路径还原与 O(V³)
- 阅读约 6 分钟A* 搜索f = g + h 启发式寻路:可采纳启发函数、网格示例与 Python 代码
- 阅读约 6 分钟拓扑排序按依赖排序任务:Kahn 算法、DFS、graphlib 与环检测
- 阅读约 6 分钟最小生成树Kruskal 与 Prim 算法:示例追踪、Python 代码、并查集与堆
- 阅读约 7 分钟动态规划记忆化与制表法对比,零钱兑换与 LCS 追踪、Python 代码与复杂度
- 阅读约 6 分钟贪心算法每步选局部最优:区间调度追踪、Python 代码与反例
- 阅读约 6 分钟回溯算法选择、探索、撤销:N 皇后追踪、子集、排列与 Python 剪枝
- 阅读约 6 分钟KMP 字符串匹配前缀函数、搜索追踪、Python 代码与 O(n + m)
- 阅读约 7 分钟位运算位运算符、单比特技巧、统计位数与位掩码,附 Python 示例
语言教程从安装工具、打印 Hello, world 开始,讲到函数、集合、错误处理,最后写一个完整的小程序。设计模式页讲清每个 GoF 模式要解决的问题,给出 TypeScript 示例,并说明什么时候不该用。数据结构与算法页逐步演示一个例子,给出 Python 代码,并写明时间和空间复杂度。
示例代码短小,照抄即可运行;每页都链接到核对过的语言文档、标准或原始出处。
常见问题
第一门编程语言学什么好?
大多数初学者选 Python 或 JavaScript:语法简单、社区庞大、到处都能运行。做网页选 JavaScript,做数据分析、自动化和通用编程选 Python。
跟着教程学需要安装什么吗?
每篇语言教程开头都会讲怎样安装官方工具并运行第一个程序。设计模式和算法页使用 TypeScript 和 Python,可以在本机或任意在线运行环境里跑。
这些教程免费吗?
免费。所有教程无需注册即可阅读,示例代码也可以用在你自己的项目里。
数据结构和算法有什么区别?
数据结构是存放数据的方式,比如数组、哈希表、树;算法是解决问题的一系列步骤,比如排序、求最短路径。算法快不快,往往取决于它用的数据结构。