Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/XiaomingX/build-your-own-xxx
Master programming by recreating your favorite technologies from scratch.
https://github.com/XiaomingX/build-your-own-xxx
awesome free programming tutorial-code tutorials
Last synced: about 2 months ago
JSON representation
Master programming by recreating your favorite technologies from scratch.
- Host: GitHub
- URL: https://github.com/XiaomingX/build-your-own-xxx
- Owner: XiaomingX
- License: apache-2.0
- Created: 2024-11-11T02:39:15.000Z (2 months ago)
- Default Branch: main
- Last Pushed: 2024-11-11T02:59:11.000Z (2 months ago)
- Last Synced: 2024-11-18T06:17:55.083Z (about 2 months ago)
- Topics: awesome, free, programming, tutorial-code, tutorials
- Language: Markdown
- Homepage: https://twitter.com/seclink
- Size: 19.5 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- indie-hacker-tools-plus - 构建你自己的X
- 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),可以通过评论或“点赞”支持。