该存储库是精心编写的分步指南的汇编,用于从头开始重新创建我们最喜欢的技术。
我无法创造的东西,我就不理解——理查德·费曼。
这是一个很好的学习方式。
3D渲染器
增强现实
BitTorrent 客户端
区块链/加密货币
机器人
命令行工具
数据库
码头工人
模拟器/虚拟机
前端框架/库
游戏
git
网络堆栈
神经网络
操作系统
物理引擎
编程语言
正则表达式引擎
搜索引擎
壳
模板引擎
文本编辑器
视觉识别系统
体素引擎
网页浏览器
网络服务器
未分类
3D Renderer
C++ :光线追踪简介:创建 3D 图像的简单方法
C++ : OpenGL 的工作原理:用 500 行代码进行软件渲染
C++ :德军总部 3D 的光线投射引擎
C++ :基于物理的渲染:从理论到实现
C++ :一个周末的光线追踪
C++ :光栅化:实际实现
C# / TypeScript / JavaScript :学习如何使用 C#、TypeScript 或 JavaScript 从头开始编写 3D 软引擎
Java / JavaScript :构建您自己的 3D 渲染器
Java :如何用纯 Java 创建您自己的简单 3D 渲染引擎
JavaScript / 伪代码:从头开始的计算机图形学
Python : 3D 建模器
Augmented Reality
C# :操作方法:针对初学者的 Vuforia 和 Unity 3D 增强现实应用程序教程[视频]
C# :如何使用 Unity ARCore [视频]
C# : Unity 的 AR Portal 教程[视频]
C# :如何在 Unity ARCore 中的增强现实中创建一条龙[视频]
C# :如何增强现实 AR 教程:ARKit 门户颠倒[视频]
Python :使用 Python 和 OpenCV 增强现实
BitTorrent Client
C# :用 C# 从头开始构建 BitTorrent 客户端
Go :用 Go 从头开始构建 BitTorrent 客户端
Nim :编写 Bencode 解析器
Node.js :编写您自己的 BitTorrent 客户端
Python : Python 3.5 中的 BitTorrent 客户端
Blockchain / Cryptocurrency
ATS :功能性区块链
C# :用 C# 进行区块链编程
Crystal :使用 Crystal 编写自己的区块链和 PoW 算法
Go :用 Go 构建区块链
Go :用不到 200 行 Go 代码编写您自己的区块链
Java :使用 Java 创建您的第一个区块链
JavaScript :不到 1500 行代码的加密货币实现
JavaScript :用 JavaScript 构建您自己的区块链
JavaScript :学习并构建 JavaScript 区块链
JavaScript :使用 JavaScript 创建区块链
JavaScript :如何启动您自己的生产就绪型加密货币
JavaScript :在 Node.js 中编写区块链
Kotlin :让我们在 Kotlin 中实现加密货币
Python :通过构建区块链来学习区块链
Python :构建您自己的区块链:Python 教程
Python :使用 Python 进行区块链实用介绍
Python :让我们构建最小的区块链
Ruby :逐步编程区块链(手稿书籍版)
Scala :如何构建一个简单的基于参与者的区块链
TypeScript : Naivecoin:构建加密货币的教程
TypeScript : NaivecoinStake:使用权益证明共识构建加密货币的教程
Rust :在 Rust 和 Substrate 中构建区块链
Bot
Haskell :打造你自己的 IRC 机器人
Node.js :在 Node.js 中使用 API.ai 创建简单的 Facebook Messenger AI 机器人
Node.js :如何制作响应式电报机器人
Node.js :创建一个 Discord 机器人
Node.js : gifbot - 构建 GitHub 应用程序
Node.js :使用 Web 语音 API 和 Node.js 构建简单的 AI 聊天机器人
Python :如何使用 Python 构建您的第一个 Slack 机器人
Python :如何在 20 分钟内使用 Slack Events API 和 Django 使用 Python 构建 Slack 机器人
Python :构建 Reddit 机器人
Python :如何制作 Reddit 机器人[视频]
Python :如何使用 Python 创建 Telegram 机器人
Python :使用 Tweepy 在 Python 中创建 Twitter 机器人
Python :使用 Python 和 PRAW 创建 Reddit 机器人[视频]
R :使用 R 构建加密货币交易机器人
Rust :使用 Rust、C 或任何其他语言编写的《星际争霸》机器人
Command-Line Tool
Go :使用 Go 可视化您本地的 git 贡献
Go :使用 Go 构建命令行应用程序:lolcat
Go :使用 Go 构建 cli 命令:cowsay
Go : Go CLI 教程:财富克隆
Nim :编写一个 stow 替代方案来管理点文件
Node.js :用 Javascript 创建 CLI 工具
Rust : Rust 中的命令行应用程序
Rust :用 Rust 编写命令行工具
Database
C :让我们构建一个简单的数据库
C++ :从头开始构建您自己的 Redis
C# :构建您自己的数据库
Clojure :一个受考古学启发的数据库
Crystal :为什么你应该构建自己的 NoSQL 数据库
Go :从头开始构建您自己的数据库:持久性、索引、并发性
Go :从头开始构建您自己的 Redis
JavaScript : Dagoba:内存中的图形数据库
Python : DBDB:狗床数据库
Python :用Python编写你自己的微型Redis
Ruby :在 Ruby 中构建您自己的快速、持久的 KV 存储
Rust :构建您自己的 Redis 客户端和服务器
Docker
C : 500 行代码的 Linux 容器
Go :使用不到 100 行 Go 构建您自己的容器
Go :在 Go 中从头开始构建容器[视频]
Python : Linux 容器研讨会:从头开始重建 Docker
Python : Docker 的概念验证模仿,用 100% Python 编写
Shell : Docker 在大约 100 行 bash 中实现
Emulator / Virtual Machine
C :国产字节码解释器
C : C 语言的虚拟机
C :编写自己的虚拟机
C :编写 Game Boy 模拟器,Cinoop
C++ :如何编写模拟器(CHIP-8解释器)
C++ :仿真教程(CHIP-8 解释器)
C++ :仿真教程(GameBoy 模拟器)
C++ :仿真教程(主系统仿真器)
C++ :从头开始的 NES 模拟器[视频]
Common Lisp : Common Lisp 中的 CHIP-8
JavaScript : JavaScript 中的 GameBoy 模拟
Python :仿真基础知识:编写您自己的 Chip 8 仿真器/解释器
Rust : 0dmg:通过构建部分 Game Boy 模拟器来学习 Rust
Front-end Framework / Library
JavaScript : WTF 是 JSX(让我们构建一个 JSX 渲染器)
JavaScript :构建您自己的 React 的 DIY 指南
JavaScript :从头开始构建 React [视频]
JavaScript : Gooact:用 160 行 JavaScript 进行 React
JavaScript :通过构建您自己的轻量级 React DOM 来了解 React Reconciler 包的工作原理
JavaScript :自己构建 Redux
JavaScript :让我们编写 Redux!
JavaScript : Redux:从头开始实现存储[视频]
JavaScript :用 200 行 JavaScript 构建您自己的简化 AngularJS
JavaScript :制作你自己的 AngularJS
JavaScript :如何编写自己的虚拟 DOM
JavaScript :使用组件(模板、状态、VDOM)从头开始构建前端框架
JavaScript :构建你自己的 React
JavaScript :构建自定义 React 渲染器[视频]
Game
C :手工英雄
C :如何用 C 语言编写 NES 游戏程序
C : C 语言的国际象棋引擎[视频]
C :让我们一起制作:危险的戴夫[视频]
C :学习 C 视频游戏编程[视频]
C :用 C 语言编写数独求解器[视频]
C :用 C 语言编写 Rogue/Nethack RPG [视频]
C :关于俄罗斯方块和重新实现
C++ :突破
C++ :开始游戏编程 v2.0
C++ :独立于 C++ 平台的俄罗斯方块教程,专注于初学者的游戏逻辑
C++ :用 C++ 重建 Cavestory [视频]
C++ :重建洞穴故事[视频]
C++ :从头开始的太空侵略者
C# :通过构建简单的 RPG 来学习 C#
C# :用 C# 创建 Roguelike 游戏
C# :构建 C#/WPF RPG
围棋:围棋游戏[视频]
Java :使用 Java 编写 2D 游戏引擎 - 初学者完整课程[视频]
Java :使用 LWJGL 3 进行 3D 游戏开发
JavaScript :使用 Phaser 的 2D 突破游戏
JavaScript :如何使用 Phaser 在 HTML5 中制作 Flappy Bird
JavaScript :使用 React、Redux 和 SVG 开发游戏
JavaScript :从头开始构建您自己的 8 球台球游戏[视频]
JavaScript :如何制作你的第一个 Roguelike
JavaScript :像程序员一样思考:如何仅使用 JavaScript、HTML 和 CSS 构建 Snake
Lua :字节路径
Python :使用 PyGame 开发游戏
Python :使用 Python 和 Pygame 制作游戏[pdf]
Python : Roguelike 教程修订
Ruby :使用 Ruby 开发游戏
红宝石:红宝石蛇
Rust : Rust 历险记:一款基本的 2D 游戏
Rust : Rust + tcod 中的 Roguelike 教程
Git
Haskell :在 Haskell 中自下而上重新实现“git clone”
JavaScript : Gitlet
JavaScript :构建 GIT - 学习 GIT
Python :足以创建存储库、提交并将自身推送到 GitHub 的 Git 客户端
Python :自己写一个 Git!
Python : ugit:通过自己构建 Git 来学习 Git 内部原理
Ruby :用 Ruby 重建 Git
Network Stack
C : Beej 网络编程指南
C :让我们编写一个 TCP/IP 堆栈
C / Python :构建您自己的 VPN/虚拟交换机
Ruby :如何在 Ruby 中构建网络堆栈
Neural Network
C# :神经网络 OCR
F# :在 F# 中构建神经网络
Go :使用 Golang 构建多层感知器
Go :如何使用 Go 构建简单的人工神经网络
Go :用 Go 从头开始构建神经网络
JavaScript / Java :神经网络 - 代码的本质[视频]
JavaScript : JavaScript 语言学家从头开始的神经网络(第 1 部分 - 感知器)
Python : 11行Python的神经网络
Python :从头开始实现神经网络
Python :光学字符识别(OCR)
Python :使用卷积网络进行交通标志分类
Python :在 Keras 中使用 LSTM 神经网络生成音乐
Python :卷积神经网络简介
Python :神经网络:从零到英雄
Operating System
汇编:编写微型 x86 引导加载程序
组装: Baking Pi – 操作系统开发
C :从头开始为简单计算机构建软件和硬件堆栈[视频]
C :操作系统:从0到1
C :关于操作系统开发的小书
C :打造你自己的 UNIX 克隆操作系统玩具
C :内核 101 – 让我们编写一个内核
C :内核 201 – 让我们编写一个支持键盘和屏幕的内核
C :从头开始为 ARM 构建一个最小的多任务内核
C :如何从头开始创建操作系统
C : Malloc 教程
C :破解虚拟内存
C :学习使用Linux内核和Raspberry Pi进行操作系统开发
C :傻瓜操作系统开发
C++ :编写您自己的操作系统[视频]
C++ :编写引导加载程序
Rust :用 Rust 编写操作系统
Rust :添加 RISC-V Rust 操作系统教程
(任何) :从头开始Linux
Physics Engine
C :视频游戏物理教程
C++ :游戏物理系列,作者:Allen Chou
C++ :如何创建自定义物理引擎
C++ : 3D 物理引擎教程[视频]
JavaScript :物理引擎如何工作
JavaScript :使用空间分区进行广泛阶段碰撞检测
JavaScript :为 JavaScript 游戏构建简单的 2D 物理引擎
Programming Language
(任何) : mal - 口齿不清
装配:琼斯福斯
C :宝宝的第一个垃圾收集器
C : Build Your Own Lisp:学习 C 并用 1000 行代码构建您自己的编程语言
C :用 C 语言编写一个简单的垃圾收集器
C :解释自身的 C 解释器。
C : Jack Crenshaw 的“Let's Build a Compiler”的 AC 和 x86 版本
C :解释如何从头开始构建编译器的旅程
C++ :使用 Flex 编写您自己的玩具编译器
C++ :如何创建编译器[视频]
C++ :万花筒:使用 LLVM 实现语言
F# :理解解析器组合器
Elixir :通过编写自己的代码来揭开编译器的神秘面纱[视频]
Go :超小型编译器
Go : Go 中的词法扫描[视频]
Haskell :让我们构建一个编译器
Haskell :给你写一个Haskell
Haskell :在 48 小时内给自己写一个方案
Haskell :给你写一个方案
Java :制作解释器:制作编程语言的手册
Java :创建 JVM 语言
JavaScript :超小型编译器
JavaScript :超小型解释器
JavaScript :小 Lisp 解释器
JavaScript :如何用 JavaScript 实现编程语言
JavaScript :让我们去写一个 Lisp
OCaml :编写 C 编译器
OCaml :编写 Lisp,系列
Pascal :让我们构建一个编译器
Python :用 Python 编写的 Python 解释器
Python : lisp.py:制作你自己的 Lisp 解释器
Python :如何用 Python 编写 Lisp 解释器
Python :让我们构建一个简单的解释器
Python :制作您自己的简单解释型编程语言[视频]
Python :从源代码到机器代码:从头开始构建您自己的编译器
Racket :美丽的 Racket:如何使用 Racket 制作自己的编程语言
Ruby :从头开始的编译器
Ruby :用 Ruby 从头开始 Markdown 编译器
Rust :所以你想构建一个语言虚拟机
Rust :使用 Rust 学习解析器组合器
Swift :使用 Swift 从头开始构建 LISP
TypeScript :构建您自己的 WebAssembly 编译器
Regex Engine
C :正则表达式匹配器
C :正则表达式匹配可以简单快速
Go :如何从头开始构建正则表达式引擎
JavaScript :用不到 40 行代码构建正则表达式引擎
JavaScript :如何使用导数在函数式 javascript 中实现正则表达式
JavaScript :实现正则表达式引擎
Perl :正则表达式如何工作
Python :构建您自己的正则表达式引擎:回溯、NFA、DFA
Scala :没有魔法:正则表达式
Search Engine
CSS : CSS 中的搜索引擎
Python :使用 Redis 和 redis-py 构建搜索引擎
Python :用 Python 构建向量空间索引引擎
Python :构建基于 Python 的搜索引擎[视频]
Python :让文本搜索从反馈中学习
Python :使用 TF-IDF 查找文本中的重要单词
Shell
C :教程 - 用 C 编写 Shell
C :让我们构建一个 shell!
C :编写 UNIX Shell
C :构建你自己的外壳
C :用C语言编写一个shell
Go :用 Go 编写一个简单的 shell
Rust :使用 Rust 构建您自己的 Shell
Template Engine
JavaScript :只需 20 行的 JavaScript 模板引擎
JavaScript :了解 JavaScript 微模板
Python :方法:用 Python 构建玩具模板引擎
Python :模板引擎
Ruby :如何用不到 30 行代码编写模板引擎
Text Editor
C :构建您自己的文本编辑器
C++ :设计一个简单的文本编辑器
Python : Python 教程:制作您自己的文本编辑器[视频]
Python :创建一个简单的 Python 文本编辑器!
Ruby :使用 Rails 构建协作文本编辑器
Rust : Hecto:用 Rust 构建你自己的文本编辑器
Visual Recognition System
Python :使用Python中的机器学习开发车牌识别系统
Python :在 Tensorflow 中使用深度学习构建面部识别管道
Voxel Engine
C++ :让我们制作一个体素引擎
Java : Java 体素引擎教程[视频]
Web Browser
Rust :让我们构建一个浏览器引擎
Python :浏览器工程
Web Server
C# :从头开始编写 Web 服务器
Node.js :使用 JavaScript 从头开始构建您自己的 Web 服务器
Node.js :让我们使用 NodeJS Streams 从头开始编写一个 Web 服务器
Node.js :让构建表达
PHP :用纯 PHP 编写网络服务器
Python :一个简单的 Web 服务器
Python :让我们构建一个 Web 服务器。
Python :从头开始的 Web 应用程序
Python :用 Python 从头开始构建基本的 HTTP 服务器
Python :使用 Python 和 Flask 实现 RESTful Web API
Ruby :用 Ruby 从头开始构建一个简单的 Websockets 服务器
(任意) :从 NAND 到俄罗斯方块:从第一原理构建现代计算机
合金:同源政策
C :如何用 1000 行以内编写视频播放器
C :学习如何用 C 语言编写哈希表
C :终端仿真器的基础知识
C :编写系统调用
C : Sol - 从头开始的 MQTT 代理
C++ :花费 200 美元打造你自己的 VR 耳机
C++ : X 窗口管理器如何工作以及如何编写一个
C++ :编写 Linux 调试器
C++ : 64k 简介是如何制作的
C++ :制作你自己的游戏引擎
C# : C# 网络:创建 TCP 聊天服务器、TCP 游戏、UDP Pong 等
C# :在 C# 和 GLSL 中从头开始加载和渲染 3D 骨骼动画
Clojure :构建拼写检查器
Go :用 100 行 Golang 构建一个简单的终端模拟器
Go :让我们创建一个简单的负载均衡器
Go :从头开始视频编码
Java :如何构建 Android Reddit 应用程序[视频]
JavaScript :构建您自己的模块捆绑器 - Minipack
JavaScript :通过从头开始构建 Promise 来学习 JavaScript Promise
JavaScript :从头开始实现 Promise(TDD 方式)
JavaScript :在 JavaScript 中实现您自己的 call()、apply() 和 bind() 方法
JavaScript : JavaScript 算法和数据结构
JavaScript :使用 React Native 构建打车应用程序
JavaScript :在(字面上)10 分钟内构建您自己的 AdBlocker
Kotlin :构建您自己的缓存
Lua :从头开始构建 CDN 以了解 CDN
Nim :编写 Redis 协议解析器
Nim :编写构建系统
Nim :编写 MiniTest 框架
Nim :编写 DMIDecode 解析器
Nim :编写 INI 解析器
Nim :编写链接检查器
Nim :编写 URL 缩短服务
Node.js :使用 Node.js 在 40 行内构建静态站点生成器
Node.js :在 Node.js 中从头开始构建简单的单点登录 (SSO) 服务器和解决方案。
Node.js :如何使用 Node 创建真实的 Node CLI 应用程序
Node.js :在 Node.js 中构建 DNS 服务器
PHP :用 PHP 从头开始编写自己的 MVC
PHP :创建自己的博客
PHP :没有框架的现代 PHP
PHP :用 PHP 编写 Web 搜索引擎
Python :构建深度学习库[视频]
Python :如何在短短 5 分钟内构建一个强大的移动文档扫描仪
Python :持续集成系统
Python : Python 中的推荐系统:初学者教程
Python :使用 Scikit-learn 编写短信垃圾邮件检测器
Python : Python 中的一个简单的基于内容的推荐引擎
Python :使用 Python 中的 LSTM 进行股市预测
Python :使用 Tensorflow 构建简单的生成对抗网络 (GAN)
Python :通过编码学习机器学习算法:决策树
Python : JSON解码算法
Python :使用 python 构建您自己的 Git 插件
Ruby :现实世界中的计步器
Ruby :使用 Ruby 创建 Linux 桌面应用程序
Rust :用 Rust 构建 DNS 服务器
Rust :从头开始编写可扩展的聊天服务
Rust : WebGL + Rust:基本水教程
TypeScript : Tiny Package Manager:了解 npm 或 Yarn 的工作原理
欢迎提交,只需发送 PR 或创建问题
通过留下评论和“反应”帮助我们审查待提交的内容
该存储库是许多贡献者的成果。它由 Daniel Stefanovic 发起,现在由 CodeCrafters, Inc. 维护。在法律允许的范围内,CodeCrafters, Inc. 已放弃本作品的所有版权以及相关或邻接权。