https://github.com/XiaomingX/build-your-own-xxx
Learn programming by building popular technologies from scratch. This repository guides you through creating systems like web servers, databases, and interpreters, enhancing your coding skills with practical, hands-on projects.
https://github.com/XiaomingX/build-your-own-xxx
awesome free programming tutorial-code tutorials
Last synced: 5 months ago
JSON representation
Learn programming by building popular technologies from scratch. This repository guides you through creating systems like web servers, databases, and interpreters, enhancing your coding skills with practical, hands-on projects.
- Host: GitHub
- URL: https://github.com/XiaomingX/build-your-own-xxx
- Owner: XiaomingX
- License: apache-2.0
- Created: 2024-11-11T02:39:15.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-11-24T02:12:08.000Z (about 1 year ago)
- Last Synced: 2025-05-12T11:41:04.074Z (7 months ago)
- Topics: awesome, free, programming, tutorial-code, tutorials
- Language: Markdown
- Homepage: https://twitter.com/seclink
- Size: 48.8 KB
- Stars: 126
- Watchers: 2
- Forks: 10
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- indie-hacker-tools-plus - 构建你自己的X
README
## 构建你自己的 XXX
这个项目库汇集了一系列详细的教程,逐步教你如何从头构建我们喜爱的各类技术。
> *我无法创造的东西,我就无法理解 —— 理查德·费曼*
这是一个学习的好方式。
## 常用资源清单
🌍 [跨境出海技术栈](https://github.com/XiaomingX/indie-hacker-tools-plus)
🤖 [AI搞钱原则手册](https://github.com/XiaomingX/ai-money-maker-handbook)
🛠️ [构建你自己的X](https://github.com/XiaomingX/build-your-own-xxx)
📋 [1000个中国独立开发者项目](https://github.com/XiaomingX/1000-chinese-independent-developer-plus)
## 本文目录
- [构建你自己的 XXX](#构建你自己的-xxx)
- [教程示例](#教程示例)
- [构建自己的 `3D 渲染器`](#构建自己的-3d-渲染器)
- [构建自己的 `增强现实`](#构建自己的-增强现实)
- [构建自己的 `BitTorrent 客户端`](#构建自己的-bittorrent-客户端)
- [构建自己的 `区块链 / 加密货币`](#构建自己的-区块链--加密货币)
- [构建自己的 `机器人 (Bot)`](#构建自己的-机器人-bot)
- [构建自己的 `命令行工具`](#构建自己的-命令行工具)
- [构建自己的 `数据库`](#构建自己的-数据库)
- [构建自己的 `Docker`](#构建自己的-docker)
- [构建自己的 `模拟器 / 虚拟机`](#构建自己的-模拟器--虚拟机)
- [构建自己的 `前端框架/库`](#构建自己的-前端框架库)
- [构建自己的 `游戏`](#构建自己的-游戏)
- [构建自己的 `Git`](#构建自己的-git)
- [构建你自己的 `网络栈`](#构建你自己的-网络栈)
- [构建你自己的 `神经网络`](#构建你自己的-神经网络)
- [构建你自己的 `操作系统`](#构建你自己的-操作系统)
- [构建你自己的 `物理引擎`](#构建你自己的-物理引擎)
- [构建自己的 `编程语言`](#构建自己的-编程语言)
- [构建自己的 `正则表达式引擎`](#构建自己的-正则表达式引擎)
- [构建自己的 `搜索引擎`](#构建自己的-搜索引擎)
- [构建自己的 `Shell`](#构建自己的-shell)
- [构建自己的 `模板引擎`](#构建自己的-模板引擎)
- [构建自己的 `文本编辑器`](#构建自己的-文本编辑器)
- [构建自己的 `视觉识别系统`](#构建自己的-视觉识别系统)
- [构建自己的 `体素引擎`](#构建自己的-体素引擎)
- [构建自己的 `网页浏览器`](#构建自己的-网页浏览器)
- [构建自己的 `Web 服务器`](#构建自己的-web-服务器)
- [未分类](#未分类)
- [贡献方式](#贡献方式)
## 教程示例
#### 构建自己的 `3D 渲染器`
* [**C++**:_光线追踪入门:创建3D图像的简单方法_](https://www.scratchapixel.com/lessons/3d-basic-rendering/introduction-to-ray-tracing/how-does-it-work)
* [**C++**:_OpenGL工作原理:500行代码实现软件渲染_](https://github.com/ssloy/tinyrenderer/wiki)
* [**C++**:_Wolfenstein 3D的射线投射引擎_](http://lodev.org/cgtutor/raycasting.html)
* [**C++**:_基于物理的渲染:理论与实现_](http://www.pbr-book.org/)
* [**C++**:_周末学习光线追踪_](https://raytracing.github.io/books/RayTracingInOneWeekend.html)
* [**C++**:_光栅化:一个实用实现_](https://www.scratchapixel.com/lessons/3d-basic-rendering/rasterization-practical-implementation/overview-rasterization-algorithm)
* [**C# / TypeScript / JavaScript**:_从零开始编写3D软件引擎_](https://www.davrous.com/2013/06/13/tutorial-series-learning-how-to-write-a-3d-soft-engine-from-scratch-in-c-typescript-or-javascript/)
* [**Java / JavaScript**:_构建你自己的3D渲染器_](https://avik-das.github.io/build-your-own-raytracer/)
* [**Java**:_如何使用纯Java创建简单的3D渲染引擎_](http://blog.rogach.org/2015/08/how-to-create-your-own-simple-3d-render.html)
* [**JavaScript / Pseudocode**:_从头开始学习计算机图形学_](http://www.gabrielgambetta.com/computer-graphics-from-scratch/introduction.html)
* [**Python**:_3D建模器_](http://aosabook.org/en/500L/a-3d-modeller.html)
#### 构建自己的 `增强现实`
* [**C#**:_增强现实应用教程(适合初学者,使用Vuforia和Unity 3D)_](https://www.youtube.com/watch?v=uXNjNcqW4kY) [视频]
* [**C#**:_Unity ARCore教程_](https://www.youtube.com/playlist?list=PLKIKuXdn4ZMjuUAtdQfK1vwTZPQn_rgSv) [视频]
* [**C#**:_Unity中实现AR门户教程_](https://www.youtube.com/playlist?list=PLPCqNOwwN794Gz5fzUSi1p4OqLU0HTmvn) [视频]
* [**C#**:_在Unity ARCore中创建增强现实龙_](https://www.youtube.com/watch?v=qTSDPkPyPqs) [视频]
* [**C#**:_ARKit教程:进入“颠倒世界”_](https://www.youtube.com/watch?v=Z5AmqMuNi08) [视频]
* [**Python**:_使用Python和OpenCV实现增强现实_](https://bitesofcode.wordpress.com/2017/09/12/augmented-reality-with-python-and-opencv-part-1/)
#### 构建自己的 `BitTorrent 客户端`
* [**C#**:_从头开始编写BitTorrent客户端_](https://www.seanjoflynn.com/research/bittorrent.html)
* [**Go**:_从头构建BitTorrent客户端_](https://blog.jse.li/posts/torrent/)
* [**Nim**:_编写Bencode解析器_](https://xmonader.github.io/nimdays/day02_bencode.html)
* [**Node.js**:_编写自己的BitTorrent客户端_](https://allenkim67.github.io/programming/2016/05/04/how-to-make-your-own-bittorrent-client.html)
* [**Python**:_Python 3.5实现BitTorrent客户端_](http://markuseliasson.se/article/bittorrent-in-python/)
#### 构建自己的 `区块链 / 加密货币`
* [**ATS**:_函数式区块链_](https://beta.observablehq.com/@galletti94/functional-blockchain)
* [**C#**:_用C#编程区块链_](https://programmingblockchain.gitbooks.io/programmingblockchain/)
* [**Crystal**:_使用Crystal编写自己的区块链和PoW算法_](https://medium.com/@bradford_hamilton/write-your-own-blockchain-and-pow-algorithm-using-crystal-d53d5d9d0c52)
* [**Go**:_在Go中构建区块链_](https://jeiwan.net/posts/building-blockchain-in-go-part-1/)
* [**Go**:_用不到200行代码在Go中实现区块链_](https://medium.com/@mycoralhealth/code-your-own-blockchain-in-less-than-200-lines-of-go-e296282bcffc)
* [**Java**:_用Java构建你的第一个区块链_](https://medium.com/programmers-blockchain/create-simple-blockchain-java-tutorial-from-scratch-6eeed3cb03fa)
* [**JavaScript**:_用JavaScript构建加密货币,代码少于1500行_](https://github.com/conradoqg/naivecoin)
* [**JavaScript**:_用JavaScript构建自己的区块链_](https://github.com/nambrot/blockchain-in-js)
* [**JavaScript**:_学习并构建JavaScript区块链_](https://medium.com/digital-alchemy-holdings/learn-build-a-javascript-blockchain-part-1-ca61c285821e)
* [**JavaScript**:_用JavaScript创建区块链_](https://github.com/SavjeeTutorials/SavjeeCoin)
* [**JavaScript**:_如何推出自己的生产级加密货币_](https://hackernoon.com/how-to-launch-your-own-production-ready-cryptocurrency-ab97cb773371)
* [**JavaScript**:_用Node.js编写区块链_](https://www.smashingmagazine.com/2020/02/cryptocurrency-blockchain-node-js/)
* [**Kotlin**:_在Kotlin中实现加密货币_](https://medium.com/@vasilyf/lets-implement-a-cryptocurrency-in-kotlin-part-1-blockchain-8704069f8580)
* [**Python**:_通过构建学习区块链_](https://hackernoon.com/learn-blockchains-by-building-one-117428612f46)
* [**Python**:_用Python构建你自己的区块链教程_](http://ecomunsing.com/build-your-own-blockchain)
* [**Python**:_Python中区块链的实用入门_](http://adilmoujahid.com/posts/2018/03/intro-blockchain-bitcoin-python/)
* [**Python**:_构建最小的区块链_](https://medium.com/crypto-currently/lets-build-the-tiniest-blockchain-e70965a248b)
* [**Ruby**:_逐步编程区块链_](https://github.com/yukimotopress/programming-blockchains-step-by-step)
* [**Scala**:_如何构建一个简单的基于Actor的区块链_](https://medium.freecodecamp.org/how-to-build-a-simple-actor-based-blockchain-aac1e996c177)
* [**TypeScript**:_Naivecoin教程:构建加密货币_](https://lhartikk.github.io/)
* [**TypeScript**:_NaivecoinStake教程:基于权益证明的加密货币构建_](https://naivecoinstake.learn.uno/)
* [**Rust**:_用Rust和Substrate构建区块链_](https://hackernoon.com/building-a-blockchain-in-rust-and-substrate-a-step-by-step-guide-for-developers-kc223ybp)
#### 构建自己的 `机器人 (Bot)`
* [**Haskell**:_自己动手编写IRC机器人_](https://wiki.haskell.org/Roll_your_own_IRC_bot)
* [**Node.js**:_用API.ai在Node.js中创建Facebook Messenger AI机器人_](https://tutorials.botsfloor.com/creating-a-simple-facebook-messenger-ai-bot-with-api-ai-in-node-js-50ae2fa5c80d)
* [**Node.js**:_制作一个响应式的Telegram机器人_](https://www.sohamkamani.com/blog/2016/09/21/making-a-telegram-bot/)
* [**Node.js**:_创建Discord机器人_](https://discordjs.guide/)
* [**Node.js**:_构建一个GitHub应用程序 - gifbot_](https://blog.scottlogic.com/2017/05/22/gifbot-github-integration.html)
* [**Node.js**:_用Web Speech API和Node.js构建简单AI聊天机器人_](https://www.smashingmagazine.com/2017/08/ai-chatbot-web-speech-api-node-js/)
* [**Python**:_如何用Python构建Slack机器人_](https://www.fullstackpython.com/blog/build-first-slack-bot-python.html)
* [**Python**:_用Slack Events API和Django快速构建Slack机器人_](https://medium.com/freehunch/how-to-build-a-slack-bot-with-python-using-slack-events-api-django-under-20-minute-code-included-269c3a9bf64e)
* [**Python**:_创建Reddit机器人_](http://pythonforengineers.com/build-a-reddit-bot-part-1/)
* [**Python**:_如何制作Reddit机器人_](https://www.youtube.com/watch?v=krTUf7BpTc0) [视频]
* [**Python**:_如何用Python创建Telegram机器人_](https://www.freecodecamp.org/news/how-to-create-a-telegram-bot-using-python/)
* [**Python**:_用Tweepy在Python中创建Twitter机器人_](https://medium.freecodecamp.org/creating-a-twitter-bot-in-python-with-tweepy-ac524157a607)
* [**Python**:_用Python和PRAW创建Reddit机器人_](https://www.youtube.com/playlist?list=PLIFBTFgFpoJ9vmYYlfxRFV6U_XhG-4fpP) [视频]
* [**R**:_用R编写加密货币交易机器人_](https://towardsdatascience.com/build-a-cryptocurrency-trading-bot-with-r-1445c429e1b1)
* [**Rust**:_在Rust中为星际争霸编写一个机器人_](https://habr.com/en/post/436254/)
#### 构建自己的 `命令行工具`
* [**Go**:_用Go语言可视化你的本地Git贡献_](https://flaviocopes.com/go-git-contributions/)
* [**Go**:_用Go构建命令行应用:lolcat_](https://flaviocopes.com/go-tutorial-lolcat/)
* [**Go**:_用Go构建命令行应用:cowsay_](https://flaviocopes.com/go-tutorial-cowsay/)
* [**Go**:_Go命令行教程:fortune clone_](https://flaviocopes.com/go-tutorial-fortune/)
* [**Nim**:_用Nim编写一个管理dotfiles的替代工具_](https://xmonader.github.io/nimdays/day06_nistow.html)
* [**Node.js**:_用JavaScript创建一个CLI工具_](https://citw.dev/tutorial/create-your-own-cli-tool)
* [**Rust**:_在Rust中编写命令行应用_](https://rust-cli.github.io/book/index.html)
* [**Rust**:_用Rust编写一个命令行工具_](https://mattgathu.dev/2017/08/29/writing-cli-app-rust.html)
#### 构建自己的 `数据库`
* [**C**:_从头开始构建简单数据库_](https://cstack.github.io/db_tutorial/)
* [**C++**:_从零构建自己的Redis_](https://build-your-own.org/redis)
* [**C#**:_构建你自己的数据库_](https://www.codeproject.com/Articles/1029838/Build-Your-Own-Database)
* [**Clojure**:_受考古学启发的数据库_](http://aosabook.org/en/500L/an-archaeology-inspired-database.html)
* [**Crystal**:_为什么你应该自己构建NoSQL数据库_](https://medium.com/@marceloboeira/why-you-should-build-your-own-nosql-database-9bbba42039f5)
* [**Go**:_从头开始构建数据库:持久化、索引、并发_](https://build-your-own.org/database/)
* [**Go**:_从零构建自己的Redis_](https://www.build-redis-from-scratch.dev/)
* [**JavaScript**:_Dagoba:内存图数据库_](http://aosabook.org/en/500L/dagoba-an-in-memory-graph-database.html)
* [**Python**:_DBDB:狗床数据库_](http://aosabook.org/en/500L/dbdb-dog-bed-database.html)
* [**Python**:_用Python编写自己的小型Redis_](http://charlesleifer.com/blog/building-a-simple-redis-server-with-python/)
* [**Ruby**:_在Ruby中构建快速持久的键值存储_](https://dineshgowda.com/posts/build-your-own-persistent-kv-store/)
* [**Rust**:_构建你自己的Redis客户端和服务器_](https://tokio.rs/tokio/tutorial/setup)
#### 构建自己的 `Docker`
* [**C**:_500行代码实现Linux容器_](https://blog.lizzie.io/linux-containers-in-500-loc.html)
* [**Go**:_用不到100行Go代码构建容器_](https://www.infoq.com/articles/build-a-container-golang)
* [**Go**:_从零开始构建Go容器_](https://www.youtube.com/watch?v=8fi7uSYlOdc) [视频]
* [**Python**:_Linux容器研讨会:从零重建Docker_](https://github.com/Fewbytes/rubber-docker)
* [**Python**:_完全用Python编写的Docker模拟_](https://github.com/tonybaloney/mocker)
* [**Shell**:_100行bash实现Docker_](https://github.com/p8952/bocker)
#### 构建自己的 `模拟器 / 虚拟机`
* [**C**:_自己实现字节码解释器_](https://medium.com/bumble-tech/home-grown-bytecode-interpreters-51e12d59b25c)
* [**C**:_用C语言编写虚拟机_](http://web.archive.org/web/20200121100942/https://blog.felixangell.com/virtual-machine-in-c/)
* [**C**:_自己编写虚拟机_](https://justinmeiners.github.io/lc3-vm/)
* [**C**:_Game Boy模拟器Cinoop_](https://cturt.github.io/cinoop.html)
* [**C++**:_如何编写一个CHIP-8解释器_](http://www.multigesture.net/articles/how-to-write-an-emulator-chip-8-interpreter/)
* [**C++**:_CHIP-8解释器模拟教程_](http://www.codeslinger.co.uk/pages/projects/chip8.html)
* [**C++**:_GameBoy模拟教程_](http://www.codeslinger.co.uk/pages/projects/gameboy.html)
* [**C++**:_主机系统模拟器教程_](http://www.codeslinger.co.uk/pages/projects/mastersystem/memory.html)
* [**C++**:_从零开始编写NES模拟器_](https://www.youtube.com/playlist?list=PLrOv9FMX8xJHqMvSGB_9G9nZZ_4IgteYf) [视频]
* [**Common Lisp**:_用Common Lisp编写CHIP-8_](http://stevelosh.com/blog/2016/12/chip8-cpu/)
* [**JavaScript**:_JavaScript实现GameBoy模拟器_](http://imrannazar.com/GameBoy-Emulation-in-JavaScript)
* [**Python**:_模拟基础:编写CHIP-8模拟器/解释器_](http://omokute.blogspot.com.br/2012/06/emulation-basics-write-your-own-chip-8.html)
* [**Rust**:_0dmg:通过构建Game Boy模拟器学习Rust_](https://jeremybanks.github.io/0dmg/)
#### 构建自己的 `前端框架/库`
* [**JavaScript**:_什么是JSX(构建一个JSX渲染器)_](https://jasonformat.com/wtf-is-jsx/)
* [**JavaScript**:_DIY指南:构建你自己的React_](https://github.com/hexacta/didact)
* [**JavaScript**:_从头构建React_](https://www.youtube.com/watch?v=_MAD4Oly9yg) [视频]
* [**JavaScript**:_Gooact:用160行JavaScript实现React_](https://medium.com/@sweetpalma/gooact-react-in-160-lines-of-javascript-44e0742ad60f)
* [**JavaScript**:_了解React的Reconciler包原理,通过自己构建一个轻量级React DOM_](https://hackernoon.com/learn-you-some-custom-react-renderers-aed7164a4199)
* [**JavaScript**:_自己构建Redux_](https://zapier.com/engineering/how-to-build-redux/)
* [**JavaScript**:_让我们编写Redux!_](https://www.jamasoftware.com/blog/lets-write-redux/)
* [**JavaScript**:_从头实现Redux中的Store_](https://egghead.io/lessons/react-redux-implementing-store-from-scratch) [视频]
* [**JavaScript**:_用200行JavaScript实现简化版AngularJS_](https://blog.mgechev.com/2015/03/09/build-learn-your-own-light-lightweight-angularjs/)
* [**JavaScript**:_自己实现AngularJS_](http://teropa.info/blog/2013/11/03/make-your-own-angular-part-1-scopes-and-digest.html)
* [**JavaScript**:_如何自己编写一个虚拟DOM_](https://medium.com/@deathmood/how-to-write-your-own-virtual-dom-ee74acc13060)
* [**JavaScript**:_从头开始构建一个前端框架,包含组件(模板、状态管理、虚拟DOM)_](https://mfrachet.github.io/create-frontend-framework/)
* [**JavaScript**:_自己构建React_](https://pomb.us/build-your-own-react/)
* [**JavaScript**:_构建一个自定义的React渲染器_](https://youtu.be/CGpMlWVcHok) [视频]
#### 构建自己的 `游戏`
* [**C**:_Handmade Hero项目_](https://handmadehero.org/)
* [**C**:_如何用C语言编写NES游戏_](https://nesdoug.com/)
* [**C**:_用C语言编写象棋引擎_](https://www.youtube.com/playlist?list=PLZ1QII7yudbc-Ky058TEaOstZHVbT-2hg) [视频]
* [**C**:_让我们制作《危险戴夫》_](https://www.youtube.com/playlist?list=PLSkJey49cOgTSj465v2KbLZ7LMn10bCF9) [视频]
* [**C++**:_从头构建打砖块游戏_](https://learnopengl.com/In-Practice/2D-Game/Breakout)
* [**Java**:_使用Java编写一个2D游戏引擎(适合初学者)_](https://www.youtube.com/watch?v=025QFeZfeyM) [视频]
* [**Python**:_用PyGame开发游戏_](https://pythonprogramming.net/pygame-python-3-part-1-intro/)
* [**JavaScript**:_用Phaser构建2D打砖块游戏_](https://developer.mozilla.org/en-US/docs/Games/Tutorials/2D_breakout_game_Phaser)
* [**Rust**:_Rust游戏编程冒险:一个简单的2D游戏_](https://a5huynh.github.io/posts/2018/adventures-in-rust/)
* [**Ruby**:_用Ruby开发游戏_](https://leanpub.com/developing-games-with-ruby/read)
#### 构建自己的 `Git`
* [**Haskell**:_用Haskell从零开始实现“git clone”_](http://stefan.saasen.me/articles/git-clone-in-haskell-from-the-bottom-up/)
* [**JavaScript**:_Gitlet_](http://gitlet.maryrosecook.com/docs/gitlet.html)
* [**Python**:_实现一个简单的Git客户端,可以创建仓库、提交和推送到GitHub_](https://benhoyt.com/writings/pygit/)
* [**Ruby**:_用Ruby重建Git_](https://robots.thoughtbot.com/rebuilding-git-in-ruby)
## 构建你自己的 `网络栈`
* [**C**:_Beej的网络编程指南_](http://beej.us/guide/bgnet/)
* [**C**:_让我们编写一个TCP/IP栈_](http://www.saminiir.com/lets-code-tcp-ip-stack-1-ethernet-arp/)
* [**C / Python**:_从零构建自己的VPN/虚拟交换机_](https://github.com/peiyuanix/build-your-own-zerotier)
* [**Ruby**:_如何在Ruby中构建网络栈_](https://medium.com/geckoboard-under-the-hood/how-to-build-a-network-stack-in-ruby-f73aeb1b661b)
## 构建你自己的 `神经网络`
* [**C#**:_神经网络OCR识别_](https://www.codeproject.com/Articles/11285/Neural-Network-OCR)
* [**F#**:_在F#中构建神经网络_](https://towardsdatascience.com/building-neural-networks-in-f-part-1-a2832ae972e6)
* [**Go**:_用Golang构建多层感知机_](https://made2591.github.io/posts/neuralnetwork)
* [**Go**:_如何用Go构建简单的人工神经网络_](https://sausheong.github.io/posts/how-to-build-a-simple-artificial-neural-network-with-go/)
* [**JavaScript**:_JavaScript神经网络教程_](https://hackernoon.com/neural-networks-from-scratch-for-javascript-linguists-part1-the-perceptron-632a4d1fbad2)
* [**Python**:_用11行Python代码实现神经网络_](https://iamtrask.github.io/2015/07/12/basic-python-network/)
* [**Python**:_从零构建神经网络_](https://victorzhou.com/blog/intro-to-neural-networks/)
* [**Python**:_使用卷积网络分类交通标志_](https://navoshta.com/traffic-signs-classification/)
* [**Python**:_使用LSTM神经网络生成音乐_](https://towardsdatascience.com/how-to-generate-music-using-a-lstm-neural-network-in-keras-68786834d4c5)
## 构建你自己的 `操作系统`
* [**Assembly**:_编写Tiny x86引导程序_](http://joebergeron.io/posts/post_two.html)
* [**Assembly**:_树莓派操作系统开发教程_](http://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/os/index.html)
* [**C**:_构建简单计算机的软件和硬件栈_](https://www.youtube.com/watch?v=ZjwvMcP3Nf0&list=PLU94OURih-CiP4WxKSMt3UcwMSDM3aTtX) [视频]
* [**C**:_从零开始开发操作系统_](https://tuhdo.github.io/os01/)
* [**C++**:_编写自己的操作系统_](https://www.youtube.com/playlist?list=PLHh55M_Kq4OApWScZyPl5HhgsTJS9MZ6M) [视频]
* [**Rust**:_在Rust中编写操作系统_](https://os.phil-opp.com/)
## 构建你自己的 `物理引擎`
* [**C**:_视频游戏物理教程_](https://www.toptal.com/game/video-game-physics-part-i-an-introduction-to-rigid-body-dynamics)
* [**C++**:_自定义物理引擎教程_](https://gamedevelopment.tutsplus.com/series/how-to-create-a-custom-physics-engine--gamedev-12715)
* [**JavaScript**:_物理引擎的工作原理_](http://buildnewgames.com/gamephysics/)
* [**JavaScript**:_使用空间分割进行宽相位碰撞检测_](http://buildnewgames.com/broad-phase-collision-detection/)
* [**JavaScript**:_构建简单的2D物理引擎用于JavaScript游戏_](https://developer.ibm.com/tutorials/wa-build2dphysicsengine/?mhsrc=ibmsearch_a&mhq=2dphysic)
#### 构建自己的 `编程语言`
* [**(任意语言)**:_mal - 制作一个 Lisp_](https://github.com/kanaka/mal#mal---make-a-lisp)
* [**汇编**:_Jonesforth_](https://github.com/nornagon/jonesforth/blob/master/jonesforth.S)
* [**C**:_新手的第一个垃圾收集器_](http://journal.stuffwithstuff.com/2013/12/08/babys-first-garbage-collector/)
* [**C**:_构建你自己的Lisp:通过学习C构建一个编程语言,代码少于1000行_](http://www.buildyourownlisp.com/)
* [**C**:_在C中编写一个简单的垃圾收集器_](http://maplant.com/gc.html)
* [**C**:_自己写一个解释器,它能解释自身_](https://github.com/lotabout/write-a-C-interpreter)
* [**C**:_Jack Crenshaw的"C & x86编译器构建教程"_](https://github.com/lotabout/Let-s-build-a-compiler)
* [**C**:_从零开始构建编译器之旅_](https://github.com/DoctorWkt/acwj)
* [**C++**:_使用Flex编写自己的玩具编译器_](https://gnuu.org/2009/09/18/writing-your-own-toy-compiler/)
* [**C++**:_如何创建一个编译器_](https://www.youtube.com/watch?v=eF9qWbuQLuw) [视频]
* [**C++**:_Kaleidoscope:使用LLVM实现一种语言_](https://llvm.org/docs/tutorial/MyFirstLanguageFrontend/index.html)
* [**F#**:_理解解析器组合子_](https://fsharpforfunandprofit.com/posts/understanding-parser-combinators/)
* [**Elixir**:_通过自己编写一个编译器来解密编译器原理_](https://www.youtube.com/watch?v=zMJYoYwOCd4) [视频]
* [**Go**:_超级迷你编译器_](https://github.com/hazbo/the-super-tiny-compiler)
* [**Go**:_Go语言中的词法扫描_](https://www.youtube.com/watch?v=HxaD_trXwRE) [视频]
* [**Haskell**:_让我们构建一个编译器_](https://g-ford.github.io/cradle/)
* [**Haskell**:_写一个Haskell语言解释器_](http://dev.stephendiehl.com/fun/)
* [**Haskell**:_48小时内写一个Scheme解释器_](https://en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours)
* [**Haskell**:_写一个Scheme语言_](https://www.wespiser.com/writings/wyas/home.html)
* [**Java**:_Crafting interpreters:编程语言构建手册_](http://www.craftinginterpreters.com/)
* [**Java**:_创建JVM语言_](http://jakubdziworski.github.io/categories.html#Enkel-ref)
* [**JavaScript**:_超级迷你编译器_](https://github.com/jamiebuilds/the-super-tiny-compiler)
* [**JavaScript**:_超级迷你解释器_](https://github.com/keyanzhang/the-super-tiny-interpreter)
* [**JavaScript**:_小型Lisp解释器_](https://maryrosecook.com/blog/post/little-lisp-interpreter)
* [**JavaScript**:_在JavaScript中实现一个编程语言_](http://lisperator.net/pltut/)
* [**JavaScript**:_让我们写一个Lisp_](https://idiocy.org/lets-go-write-a-lisp/part-1.html)
* [**OCaml**:_编写一个C编译器_](https://norasandler.com/2017/11/29/Write-a-Compiler.html)
* [**OCaml**:_编写一个Lisp系列_](https://bernsteinbear.com/blog/lisp/)
* [**Pascal**:_让我们构建一个编译器_](https://compilers.iecc.com/crenshaw/)
* [**Python**:_用Python写一个Python解释器_](http://aosabook.org/en/500L/a-python-interpreter-written-in-python.html)
* [**Python**:_lisp.py:制作你自己的Lisp解释器_](http://khamidou.com/compilers/lisp.py/)
* [**Python**:_如何在Python中编写一个Lisp解释器_](http://norvig.com/lispy.html)
* [**Python**:_让我们构建一个简单的解释器_](https://ruslanspivak.com/lsbasi-part1/)
* [**Python**:_制作你自己的简单解释型编程语言_](https://www.youtube.com/watch?v=dj9CBS3ikGA&list=PLZQftyCk7_SdoVexSmwy_tBgs7P0b97yD&index=1) [视频]
* [**Python**:_从源代码到机器代码:从头构建编译器_](https://build-your-own.org/compiler/)
* [**Racket**:_优雅的Racket:如何用Racket构建自己的编程语言_](https://beautifulracket.com/)
* [**Ruby**:_从零开始的编译器_](https://www.destroyallsoftware.com/screencasts/catalog/a-compiler-from-scratch)
* [**Ruby**:_从零开始在Ruby中编写Markdown编译器_](https://blog.beezwax.net/2017/07/07/writing-a-markdown-compiler/)
* [**Rust**:_所以你想要构建一个语言虚拟机_](https://blog.subnetzero.io/post/building-language-vm-part-00/)
* [**Rust**:_用Rust学习解析器组合子_](https://bodil.lol/parser-combinators/)
* [**Swift**:_从零构建一个LISP,用Swift_](https://www.uraimo.com/2017/02/05/building-a-lisp-from-scratch-with-swift/)
* [**TypeScript**:_构建你自己的WebAssembly编译器_](https://blog.scottlogic.com/2019/05/17/webassembly-compiler.html)
#### 构建自己的 `正则表达式引擎`
* [**C**:_正则表达式匹配器_](https://www.cs.princeton.edu/courses/archive/spr09/cos333/beautiful.html)
* [**C**:_正则表达式匹配可以简单且快速_](https://swtch.com/~rsc/regexp/regexp1.html)
* [**Go**:_如何从头编写一个正则表达式引擎_](https://rhaeguard.github.io/posts/regex)
* [**JavaScript**:_不到40行代码实现一个正则表达式引擎_](https://nickdrane.com/build-your-own-regex/)
* [**JavaScript**:_在函数式JavaScript中实现正则表达式_](http://dpk.io/dregs/toydregs)
* [**JavaScript**:_实现一个正则表达式引擎_](https://deniskyashif.com/2019/02/17/implementing-a-regular-expression-engine/)
* [**Perl**:_正则表达式的工作原理_](https://perl.plover.com/Regex/article.html)
* [**Python**:_构建你自己的正则表达式引擎:回溯、NFA、DFA_](https://build-your-own.org/b2a/r0_intro)
* [**Scala**:_去掉魔法:正则表达式_](https://rcoh.svbtle.com/no-magic-regular-expressions)
#### 构建自己的 `搜索引擎`
* [**CSS**:_用CSS实现搜索引擎_](https://stories.algolia.com/a-search-engine-in-css-b5ec4e902e97)
* [**Python**:_使用Redis和redis-py构建搜索引擎_](http://www.dr-josiah.com/2010/07/building-search-engine-using-redis-and.html)
* [**Python**:_在Python中构建向量空间索引引擎_](https://boyter.org/2010/08/build-vector-space-search-engine-python/)
* [**Python**:_基于Python的搜索引擎构建_](https://www.youtube.com/watch?v=cY7pE7vX6MU) [视频]
* [**Python**:_让文本搜索从反馈中学习_](https://medium.com/filament-ai/making-text-search-learn-from-feedback-4fe210fd87b0)
* [**Python**:_使用TF-IDF在文本中查找重要词汇_](https://stevenloria.com/tf-idf/)
#### 构建自己的 `Shell`
* [**C**:_教程 - 用C写一个Shell_](https://brennan.io/2015/01/16/write-a-shell-in-c/)
* [**C**:_让我们来构建一个Shell!_](https://github.com/kamalmarhubi/shell-workshop)
* [**C**:_编写一个UNIX Shell_](https://indradhanush.github.io/blog/writing-a-unix-shell-part-1/)
* [**C**:_构建你自己的Shell_](https://github.com/tokenrove/build-your-own-shell)
* [**C**:用C写一个Shell](https://danishpraka.sh/posts/write-a-shell/)
* [**Go**:_用Go编写一个简单的Shell_](https://sj14.gitlab.io/post/2018-07-01-go-unix-shell/)
* [**Rust**:_用Rust构建你自己的Shell_](https://www.joshmcguigan.com/blog/build-your-own-shell-rust/)
#### 构建自己的 `模板引擎`
* [**JavaScript**:_20行代码实现JavaScript模板引擎_](http://krasimirtsonev.com/blog/article/Javascript-template-engine-in-just-20-line)
* [**JavaScript**:_理解JavaScript微型模板引擎_](https://medium.com/wdstack/understanding-javascript-micro-templating-f37a37b3b40e)
* [**Python**:_方法:在Python中构建一个简单模板引擎_](http://alexmic.net/building-a-template-engine/)
* [**Python**:_一个模板引擎_](http://aosabook.org/en/500L/a-template-engine.html)
* [**Ruby**:_用不到30行代码编写模板引擎_](http://bits.citrusbyte.com/how-to-write-a-template-library/)
#### 构建自己的 `文本编辑器`
* [**C**:_构建你自己的文本编辑器_](https://viewsourcecode.org/snaptoken/kilo/)
* [**C++**:_设计一个简单的文本编辑器_](http://www.fltk.org/doc-1.1/editor.html)
* [**Python**:_Python教程:制作自己的文本编辑器_](https://www.youtube.com/watch?v=xqDonHEYPgA) [视频]
* [**Python**:_创建一个简单的Python文本编辑器_](http://www.instructables.com/id/Create-a-Simple-Python-Text-Editor/)
* [**Ruby**:_使用Rails构建一个协作式文本编辑器_](https://blog.aha.io/text-editor/)
* [**Rust**:_Hecto:用Rust构建你自己的文本编辑器_](https://www.flenker.blog/hecto/)
#### 构建自己的 `视觉识别系统`
* [**Python**:_使用机器学习开发车牌识别系统_](https://medium.com/devcenter/developing-a-license-plate-recognition-system-with-machine-learning-in-python-787833569ccd)
* [**Python**:_用深度学习在Tensorflow中构建人脸识别管道_](https://hackernoon.com/building-a-facial-recognition-pipeline-with-deep-learning-in-tensorflow-66e7645015b8)
#### 构建自己的 `体素引擎`
* [**C++**:_让我们一起来制作一个体素引擎_](https://sites.google.com/site/letsmakeavoxelengine/home)
* [**Java**:_Java体素引擎教程_](https://www.youtube.com/watch?v=QZ4Vk2PkPZk&list=PL80Zqpd23vJfyWQi-8FKDbeO_ZQamLKJL) [视频]
#### 构建自己的 `网页浏览器`
* [**Rust**:_让我们一起来构建一个浏览器引擎_](https://limpet.net/mbrubeck/2014/08/08/toy-layout-engine-1.html)
* [**Python**:_浏览器工程_](https://browser.engineering)
#### 构建自己的 `Web 服务器`
* [**C#**:_从零开始编写Web服务器_](https://www.codeproject.com/Articles/859108/Writing-a-Web-Server-from-Scratch)
* [**Node.js**:_用JavaScript从头构建一个Web服务器_](https://build-your-own.org/webserver/)
* [**Node.js**:_使用NodeJS流构建Web服务器_](https://www.codementor.io/@ziad-saab/let-s-code-a-web-server-from-scratch-with-nodejs-streams-h4uc9utji)
* [**Node.js**:_构建简易版Express框架_](https://github.com/antoaravinth/lets-build-express)
* [**PHP**:_用纯PHP编写一个Web服务器_](http://station.clancats.com/writing-a-webserver-in-pure-php/)
* [**Python**:_简单的Web服务器_](http://aosabook.org/en/500L/a-simple-web-server.html)
* [**Python**:_让我们构建一个Web服务器_](https://ruslanspivak.com/lsbaws-part1/)
* [**Python**:_从零构建基本HTTP服务器_](http://joaoventura.net/blog/2017/python-webserver/)
* [**Python**:_使用Python & Flask实现RESTful Web API_](http://blog.luisrei.com/articles/flaskrest.html)
* [**Ruby**:_从头构建一个简单的WebSocket服务器_](http://blog.honeybadger.io/building-a-simple-websockets-server-from-scratch-in-ruby/)
#### 未分类
* [**(任意)**:_从NAND到Tetris:构建现代计算机基础_](http://nand2tetris.org/)
* [**Alloy**:_同源策略解析_](http://aosabook.org/en/500L/the-same-origin-policy.html)
* [**C**:_如何用不到1000行代码写视频播放器_](http://dranger.com/ffmpeg/ffmpeg.html)
* [**C**:_学习在C语言中编写哈希表_](https://github.com/jamesroutley/write-a-hash-table)
* [**C**:_终端模拟器的基本原理_](https://www.uninformativ.de/blog/postings/2018-02-24/0/POSTING-en.html)
* [**C**:_编写系统调用_](https://brennan.io/2016/11/14/kernel-dev-ep3/)
* [**C**:_Sol - 从头开始实现MQTT代理_](https://codepr.github.io/posts/sol-mqtt-broker)
* [**C++**:_打造仅需200美元的VR头显_](https://github.com/relativty/Relativ)
* [**C++**:_理解X窗口管理器的工作原理并自行编写_](https://seasonofcode.com/posts/how-x-window-managers-work-and-how-to-write-one-part-i.html)
* [**C++**:_编写Linux调试器_](https://blog.tartanllama.xyz/writing-a-linux-debugger-setup/)
* [**C++**:_64k intro是如何制作的_](http://www.lofibucket.com/articles/64k_intro.html)
* [**C++**:_构建自己的游戏引擎_](https://www.youtube.com/playlist?list=PLlrATfBNZ98dC-V-N3m0Go4deliWHPFwT)
* [**C#**:_C#网络开发:构建TCP聊天服务器、游戏及UDP乒乓等_](https://16bpp.net/tutorials/csharp-networking)
* [**C#**:_从零实现3D骨骼动画加载与渲染_](https://www.seanjoflynn.com/research/skeletal-animation.html)
* [**Clojure**:_构建拼写检查器_](https://bernhardwenzel.com/articles/clojure-spellchecker/)
* [**Go**:_用Golang实现100行终端模拟器_](https://ishuah.com/2021/03/10/build-a-terminal-emulator-in-100-lines-of-go/)
* [**Go**:_实现简单的负载均衡器_](https://kasvith.me/posts/lets-create-a-simple-lb-go/)
* [**Go**:_从零开始实现视频编码_](https://github.com/kevmo314/codec-from-scratch)
* [**Java**:_构建安卓Reddit应用_](https://www.youtube.com/playlist?list=PLgCYzUzKIBE9HUJU-upNvl3TRVAo9W47y) [视频]
* [**JavaScript**:_构建自己的模块打包器 - Minipack_](https://github.com/ronami/minipack)
* [**JavaScript**:_通过实现Promise从零学习Promise_](https://levelup.gitconnected.com/understand-javascript-promises-by-building-a-promise-from-scratch-84c0fd855720)
* [**JavaScript**:_从零实现JavaScript的call、apply和bind方法_](https://blog.usejournal.com/implement-your-own-call-apply-and-bind-method-in-javascript-42cc85dba1b)
* [**JavaScript**:_JavaScript算法与数据结构_](https://github.com/trekhleb/javascript-algorithms)
* [**JavaScript**:_使用React Native构建打车应用_](https://pusher.com/tutorials/ride-hailing-react-native)
* [**JavaScript**:_在10分钟内创建你的AdBlock_](https://levelup.gitconnected.com/building-your-own-adblocker-in-literally-10-minutes-1eec093b04cd)
* [**Kotlin**:_构建自己的缓存系统_](https://github.com/kezhenxu94/cache-lite)
* [**Lua**:_从零构建内容分发网络(CDN)以了解其工作原理_](https://github.com/leandromoreira/cdn-up-and-running)
* [**Nim**:_编写Redis协议解析器_](https://xmonader.github.io/nimdays/day12_resp.html)
* [**Node.js**:_用40行代码构建静态网站生成器_](https://www.webdevdrops.com/en/build-static-site-generator-nodejs-8969ebe34b22/)
* [**PHP**:_从头编写MVC框架_](https://chaitya62.github.io/2018/04/29/Writing-your-own-MVC-from-Scratch-in-PHP.html)
* [**Python**:_构建深度学习库_](https://www.youtube.com/watch?v=o64FV-ez6Gw) [视频]
* [**Python**:_5分钟内实现移动文档扫描器_](https://www.pyimagesearch.com/2014/09/01/build-kick-ass-mobile-document-scanner-just-5-minutes/)
* [**Python**:_实现简单生成对抗网络(GAN)_](https://blog.paperspace.com/implementing-gans-in-tensorflow/)
* [**Ruby**:_构建现实世界的计步器应用_](http://aosabook.org/en/500L/a-pedometer-in-the-real-world.html)
* [**Rust**:_在Rust中构建DNS服务器_](https://github.com/EmilHernvall/dnsguide/blob/master/README.md)
* [**TypeScript**:_简易包管理器:了解npm或Yarn的工作原理_](https://github.com/g-plane/tiny-package-manager)
这些教程覆盖了各类编程语言和框架,让你在不同技术领域中都能找到动手实践的机会,帮助你深入理解每个系统的工作原理。
## 贡献方式
* 欢迎提交内容!只需发送一个PR(Pull Request),或[创建一个issue](https://github.com/XiaomingX/build-your-own-xxx/issues/new)。
* 帮助我们审核[待处理的提交](https://github.com/XiaomingX/build-your-own-xxx/issues),可以通过评论或“点赞”支持。