工具介绍
Project Based Learning
A list of programming tutorials in which aspiring software developers learn how to build an application from scratch. These tutorials are divided into different primary programming languages. Tutorials may involve multiple technologies and languages.
To get started, simply fork this repo. Please refer to CONTRIBUTING.md for contribution guidelines.
Table of Contents:
- C#
- C/C++
- Clojure
- Dart
- Elixir
- Erlang
- F#
- Go
- Haskell
- HTML/CSS
- Java
- JavaScript
- Kotlin
- Lua
- OCaml
- PHP
- Python
- R
- Ruby
- Rust
- Scala
- Swift
- Additional resources
C/C++:
- Build an Interpreter (Chapter 14 on is written in C)
- Memory Allocators 101 - Write a simple memory allocator
- Write a Shell in C
- Write a FUSE Filesystem
- Build Your Own Text Editor
- Build Your Own Lisp
- How to Program an NES Game in C
- Write an OS from scratch
- How to create an OS from scratch
- Building a CHIP-8 Emulator
- Beginning Game Programming with C++ and SDL
- Implementing a Key-Value Store
- Tiny 3D graphics projects
- Tiny Renderer or how OpenGL works: software rendering in 500 lines of code
- Understandable RayTracing in 256 lines of bare C++
- KABOOM! in 180 lines of bare C++
- 486 lines of C++: old-school FPS in a weekend
- Writing a minimal x86-64 JIT compiler in C++
- Part 1
- Part 2
- Build a Live Code-reloader Library for C++
- Write a hash table in C
- Let's Build a Simple Database
- Let's Write a Kernel
- Write a Bootloader in C
- Linux Container in 500 Lines of Code
- Write Your Own Virtual Machine
- Learning KVM - Implement Your Own Linux Kernel
- Build Your Own Redis with C/C++
- Write a C compiler
- Part 1: Integers, Lexing and Code Generation
- Part 2: Unary Operators
- Part 3: Binary Operators
- Part 4: Even More Binary Operators
- Part 5: Local Variables
- Part 6: Conditionals
- Part 7: Compound Statements
- Part 8: Loops
- Part 9: Functions
- Part 10: Global Variables
- Implementing a Language with LLVM
- Meta Crush Saga: a C++17 compile-time game
- High-Performance Matrix Multiplication
- Space Invaders from Scratch
- Part 1
- Part 2
- Part 3
- Part 4
- Part 5
- Tetris Tutorial in C++ Platform Independent
- Writing a Linux Debugger
- Part 1: Setup
- Part 2: Breakpoints
- Part 3: Registers and memory
- Part 4: Elves and dwarves
- Part 5: Source and signals
- Part 6: Source-level stepping
- Part 7: Source-level breakpoints
- Part 8: Stack unwinding
- Part 9: Handling variables
- Part 10: Advanced topics
- Let's write a compiler
- Part 1: Introduction, selecting a language, and doing some planning
- Part 2: A lexer
- Part 3: A parser
- Part 4: Testing
- Part 5: A code generator
- Part 6: Input and output
- Part 7: Arrays
- Part 8: Strings, forward references, and conclusion
Network programming
- Let's Code a TCP/IP Stack
- Part 1: Ethernet & ARP
- Part 2: IPv4 & ICMPv4
- Part 3: TCP Basics & Handshake
- Part 4: TCP Data Flow & Socket API
- Part 5: TCP Retransmission
- Programming concurrent servers
- Part 1 - Introduction
- Part 2 - Threads
- Part 3 - Event-driven
- Part 4 - libuv
- Part 5 - Redis case study
- Part 6 - Callbacks, Promises and async/await
- MQTT Broker from scratch
- Part 1 - The protocol
- Part 2 - Networking
- Part 3 - Server
- Part 4 - Data structures
- Part 5 - Topic abstraction
- Part 6 - Handlers
- Bonus - Multithreading
- Networking from Scratch
OpenGL:
- Creating 2D Breakout game clone in C++ with OpenGL
- Breakout
- Setting up
- Rendering Sprites
- Levels
- Collisions
- Ball
- Collision detection
- Collision resolution
- Particles
- Postprocessing
- Powerups
- Audio
- Render text
- Final thoughts
- Handmade Hero
- How to Make Minecraft in C++/OpenGL (video)
C#:
- Learn C# By Building a Simple RPG Game
- Create a Rogue-like game in C#
- Create a Blank App with C# and Xamarin (work in progress)
- Build iOS Photo Library App with Xamarin and Visual Studio
- Building the CoreWiki This is a Wiki-style content management system that has been completely written in C# with ASP.NET Core and Razor Pages. You can find the source code here.
Clojure:
- Build a Twitter Bot with Clojure
- Building a Spell-Checker
- Building a JIRA integration with Clojure & Atlassian Connect
- Prototyping with Clojure
- Tetris in ClojureScript
Dart:
Flutter:
- Amazon Clone with Admin Panel
- Food Delivery App
- Google Docs Clone
- Instagram C