Hướng dẫn lập trình
Học một ngôn ngữ lập trình, một mẫu thiết kế hay một thuật toán trong một trang. Mỗi bài trả lời câu hỏi trước, rồi đưa mã chạy được, các lỗi thường gặp và tài liệu tham khảo chính thức.
Ngôn ngữ lập trình
- 6 phút đọcPythonCú pháp, kiểu dữ liệu, luồng điều khiển, hàm, collection, lỗi và tệp trong một trang
- 6 phút đọcJavaScriptBiến, kiểu, hàm, mảng, đối tượng, promise và async/await trong một trang
- 7 phút đọcTypeScriptKiểu, interface, union, thu hẹp kiểu, generic và xử lý lỗi trong một trang
- 8 phút đọcJavaKiểu, lớp, record, collection, ngoại lệ và pattern matching trong một trang
- 8 phút đọcCKiểu, hàm, mảng, chuỗi, con trỏ, malloc/free và xử lý lỗi trong một trang
- 8 phút đọcC++Kiểu, lớp, container STL, lambda, RAII, con trỏ thông minh và ngoại lệ trong một trang
- 7 phút đọcC#Kiểu, lớp, record, collection, LINQ, async/await và ngoại lệ trong một trang
- 7 phút đọcGoKiểu, slice, map, struct, interface, goroutine, channel và lỗi trong một trang
- 8 phút đọcRustOwnership, borrowing, struct, enum, match, collection và Result trong một trang
- 7 phút đọcPHPBiến, mảng, hàm, lớp, enum, ngoại lệ và một endpoint JSON trong một trang
- 7 phút đọcRubyKiểu, phương thức, mảng, hash, block, lớp, module và ngoại lệ trong một trang
- 8 phút đọcSwiftKiểu, optional, closure, collection, struct, enum, protocol và lỗi trong một trang
- 8 phút đọcKotlinNull safety, luồng điều khiển, hàm, data class và coroutine trong một trang
- 8 phút đọcDartNull safety, hàm, collection, lớp và async/await cho Flutter
- 8 phút đọcScalaCú pháp Scala 3, pattern matching, collection, case class và Option trong một trang
- 7 phút đọcRVector, data frame, hàm, thống kê và biểu đồ trong R, gói gọn trong một trang
- 9 phút đọcSQLSELECT, JOIN, GROUP BY, CTE, giao dịch và so sánh PostgreSQL, MySQL, SQLite
- 8 phút đọcBashShell script, biến, trích dẫn, vòng lặp, hàm, pipe và set -euo pipefail
- 8 phút đọcPowerShellCmdlet, pipeline đối tượng, biến, hàm, hashtable và try/catch
- 8 phút đọcLuaBiến, table, hàm, metatable và pcall trong Lua, gói gọn trong một trang
- 9 phút đọcPerlScalar, mảng, hash, subroutine, biểu thức chính quy và lỗi trong Perl
- 9 phút đọcHaskellHàm thuần, kiểu, pattern matching, danh sách, Maybe và IO trong Haskell
- 8 phút đọcElixirPattern matching, pipe, Enum, tiến trình và xử lý lỗi {:ok, value}
- 8 phút đọcErlangPattern matching, đệ quy, tiến trình, OTP và xử lý lỗi kiểu let-it-crash
- 7 phút đọcClojureCú pháp, collection bất biến, hàm, macro, atom và lỗi trong một trang
- 7 phút đọcF#Kiểu, record, union, pattern matching, pipeline và Result trong một trang
- 7 phút đọcOCamlKiểu, record, variant, pattern matching, module và lỗi trong một trang
- 7 phút đọcJuliaKiểu, mảng, broadcasting, hàm, multiple dispatch và lỗi trong một trang
- 8 phút đọcZigKiểu, slice, optional, error union, comptime, defer và allocator trong một trang
- 8 phút đọcFortranCú pháp hiện đại, kiểu, vòng lặp, thủ tục, module, mảng và iostat trong một trang
- 8 phút đọcCOBOLDivision, dữ liệu PIC, IF/EVALUATE, vòng lặp PERFORM, bảng, tệp và lỗi
- 10 phút đọcAssembly (x86-64)Thanh ghi, lệnh, vòng lặp, bộ nhớ, syscall, lời gọi hàm x86-64 NASM và cú pháp AT&T
- 8 phút đọcVisual Basic .NETCú pháp VB.NET, kiểu, vòng lặp, hàm, collection, lớp, LINQ và VBA trong một trang
- 7 phút đọcObjective-CMessage, lớp, property, collection Foundation, block, ARC và NSError trong một trang
- 8 phút đọcMATLABMa trận, chỉ mục, vòng lặp, hàm, struct, cell, lỗi, biểu đồ và Octave trong một trang
Mẫu thiết kế
- 9 phút đọcMẫu thiết kếMẫu thiết kế là gì, 23 mẫu GoF theo nhóm và cách chọn mẫu phù hợp
- 8 phút đọcNguyên lý SOLIDNăm nguyên lý thiết kế SOLID, mỗi nguyên lý có ví dụ TypeScript trước và sau
- 7 phút đọcMẫu SingletonChỉ một thể hiện: ví dụ TypeScript, biến thể bất đồng bộ, cạm bẫy và lựa chọn thay thế
- 6 phút đọcMẫu Factory MethodĐể lớp con quyết định tạo đối tượng nào: ví dụ TypeScript và khi nào nên dùng
- 6 phút đọcMẫu Abstract FactoryTạo họ đối tượng liên quan mà không cần nêu tên lớp cụ thể
- 6 phút đọcMẫu BuilderDựng đối tượng phức tạp từng bước với API fluent, kèm vai trò Director
- 6 phút đọcMẫu PrototypeTạo đối tượng bằng cách nhân bản: clone() trong TypeScript, sao chép sâu và nông
- 5 phút đọcMẫu AdapterĐể giao diện không tương thích phối hợp được: ví dụ TypeScript, adapter đối tượng/lớp
- 5 phút đọcMẫu BridgeTách phần trừu tượng khỏi phần triển khai để hai bên thay đổi độc lập
- 6 phút đọcMẫu CompositeXử lý đối tượng đơn và cây đối tượng như nhau: ví dụ hệ thống tệp bằng TypeScript
- 6 phút đọcMẫu DecoratorThêm hành vi cho đối tượng lúc chạy bằng cách bọc nó: decorator lớp và hàm
- 6 phút đọcMẫu FacadeCho hệ thống con phức tạp một cổng vào đơn giản: ví dụ thanh toán bằng TypeScript
- 6 phút đọcMẫu FlyweightChia sẻ trạng thái nội tại giữa nhiều đối tượng để tiết kiệm bộ nhớ, kèm ví dụ TypeScript
- 6 phút đọcMẫu ProxyKiểm soát truy cập đối tượng bằng proxy bộ nhớ đệm, lười, bảo vệ và từ xa
- 6 phút đọcMẫu Chain of ResponsibilityChuyển yêu cầu qua các bộ xử lý đến khi có bộ xử lý đảm nhận, kèm dạng middleware
- 6 phút đọcMẫu CommandBiến yêu cầu thành đối tượng để xếp hàng, ghi log, hoàn tác và làm lại trong TypeScript
- 6 phút đọcMẫu InterpreterMô hình hóa một ngôn ngữ nhỏ bằng các lớp và tính giá trị cây biểu thức trong TypeScript
- 6 phút đọcMẫu IteratorDuyệt collection mà không lộ cách lưu trữ, với Symbol.iterator và generator
- 6 phút đọcMẫu MediatorĐiều phối các thành phần qua một đối tượng trung tâm thay vì tham chiếu trực tiếp
- 6 phút đọcMẫu MementoLưu và khôi phục trạng thái đối tượng mà không lộ nội bộ, dùng cho hoàn tác và điểm lưu
- 6 phút đọcMẫu ObserverTự động thông báo cho người đăng ký khi đối tượng thay đổi, với mã TypeScript có kiểu
- 7 phút đọcMẫu StateĐổi hành vi của đối tượng theo trạng thái bằng các lớp trạng thái thay cho switch
- 6 phút đọcMẫu StrategyHoán đổi thuật toán lúc chạy, dùng hàm hoặc lớp trong TypeScript
- 6 phút đọcMẫu Template MethodCố định các bước thuật toán ở lớp cơ sở và để lớp con điền chi tiết
- 7 phút đọcMẫu VisitorThêm thao tác cho hệ phân cấp lớp bằng double dispatch, kèm cách dùng union type
Cấu trúc dữ liệu
- 7 phút đọcDanh sách liên kếtDanh sách liên kết đơn và đôi: chèn, xóa, đảo ngược, phát hiện chu trình và độ phức tạp
- 6 phút đọcNgăn xếp và hàng đợiNgăn xếp LIFO và hàng đợi FIFO trong Python: list, deque, khớp ngoặc, BFS và độ phức tạp
- 7 phút đọcBảng bămHàm băm, bucket, va chạm, hệ số tải và đổi kích thước, kèm mã Python
- 7 phút đọcCây tìm kiếm nhị phânQuy tắc thứ tự BST, tìm, chèn, xóa trong Python, cân bằng và độ phức tạp
- 6 phút đọcDuyệt cây nhị phânPreorder, inorder, postorder và level order, mã Python đệ quy và lặp
- 7 phút đọcHeap nhị phânTính chất heap, sift up/down, heapify, hàng đợi ưu tiên và heapq của Python
- 6 phút đọcTrie (cây tiền tố)Cây tiền tố: chèn, tìm, kiểm tra tiền tố và gợi ý tự động trong Python, kèm độ phức tạp
- 7 phút đọcUnion-find (DSU)Tập hợp rời nhau: find, union, nén đường đi, hợp theo hạng và kích thước trong Python
- 7 phút đọcBộ nhớ đệm LRUCache dùng gần đây nhất với hash map và danh sách liên kết đôi, OrderedDict, lru_cache
Thuật toán
- 7 phút đọcKý hiệu Big OĐộ phức tạp thời gian và không gian, các lớp thường gặp và cách đọc từ mã
- 6 phút đọcĐệ quyTrường hợp cơ sở, ngăn xếp lời gọi, ghi nhớ kết quả và giới hạn đệ quy trong Python
- 7 phút đọcTìm kiếm nhị phânCách tìm kiếm nhị phân chia đôi dãy đã sắp xếp, mã Python, bisect, biến thể và cạm bẫy
- 7 phút đọcHai con trỏ và cửa sổ trượtMẫu hai đầu, nhanh-chậm và cửa sổ trượt, kèm mã Python và bảng chạy thử
- 6 phút đọcSắp xếp nổi bọtCách bubble sort hoán đổi phần tử kề nhau, bảng chạy từng lượt, mã Python và độ phức tạp
- 6 phút đọcSắp xếp chọnCách selection sort chọn phần tử nhỏ nhất, bảng chạy từng bước, mã Python và tính ổn định
- 6 phút đọcSắp xếp chènInsertion sort dịch phần tử vào đúng chỗ: bảng chạy, Python, ổn định, trường hợp tốt nhất
- 6 phút đọcSắp xếp trộnMerge sort chia để trị: bảng chạy, mã Python, bước trộn, tính ổn định và độ phức tạp
- 7 phút đọcSắp xếp nhanhPivot, phân hoạch Lomuto có bảng chạy, Python, trường hợp xấu nhất, ổn định, quickselect
- 7 phút đọcSắp xếp vun đốngMax-heap, sift-down, bảng chạy từng bước, mã Python, heapq và độ phức tạp
- 7 phút đọcSắp xếp đếmCounting sort tuyến tính cho khóa nguyên nhỏ: bảng chạy, Python ổn định, độ phức tạp
- 7 phút đọcSắp xếp cơ sốRadix sort LSD và MSD: bảng chạy từng chữ số, mã Python, tính ổn định và độ phức tạp
- 7 phút đọcTìm kiếm theo chiều rộng (BFS)BFS với hàng đợi: ví dụ có bảng chạy, mã Python, đường đi ngắn nhất và chi phí O(V + E)
- 7 phút đọcTìm kiếm theo chiều sâu (DFS)DFS đệ quy và lặp trong Python, ví dụ, phát hiện chu trình và chi phí O(V + E)
- 6 phút đọcThuật toán DijkstraĐường đi ngắn nhất với hàng đợi ưu tiên: ví dụ, mã Python heapq và độ phức tạp
- 6 phút đọcThuật toán Bellman-FordĐường đi ngắn nhất với trọng số âm, phát hiện chu trình âm và mã Python
- 6 phút đọcThuật toán Floyd-WarshallĐường đi ngắn nhất mọi cặp: ví dụ ma trận, mã Python, dựng lại đường đi và O(V³)
- 7 phút đọcTìm kiếm A*Tìm đường heuristic với f = g + h: heuristic chấp nhận được, ví dụ lưới, mã Python
- 7 phút đọcSắp xếp tô-pôSắp xếp việc theo phụ thuộc: thuật toán Kahn, DFS, graphlib và phát hiện chu trình
- 6 phút đọcCây khung nhỏ nhấtThuật toán Kruskal và Prim: ví dụ có bảng chạy, mã Python, union-find và heap
- 7 phút đọcQuy hoạch độngGhi nhớ và lập bảng, đổi tiền và LCS có bảng chạy, mã Python và độ phức tạp
- 7 phút đọcThuật toán tham lamChọn lựa cục bộ tốt nhất ở mỗi bước: xếp lịch khoảng có bảng chạy, mã Python, phản ví dụ
- 7 phút đọcQuay luiChọn, khám phá, bỏ chọn: N-Queens có bảng chạy, tập con, hoán vị và cắt tỉa trong Python
- 6 phút đọcTìm chuỗi KMPKnuth-Morris-Pratt: hàm tiền tố, tìm kiếm có bảng chạy, mã Python và chi phí O(n + m)
- 7 phút đọcThao tác bitToán tử bitwise, mẹo thao tác từng bit, đếm bit và bitmask kèm ví dụ Python
Bài về ngôn ngữ bắt đầu từ cài công cụ và in Hello, world, rồi tới hàm, tập hợp, xử lý lỗi và một chương trình nhỏ hoàn chỉnh. Bài về mẫu thiết kế giải thích vấn đề mà mỗi mẫu Gang of Four giải quyết, với ví dụ TypeScript và khi nào không nên dùng. Bài về cấu trúc dữ liệu và thuật toán đi qua một ví dụ từng bước, đưa mã Python và nêu độ phức tạp thời gian và bộ nhớ.
Mã ví dụ ngắn, chạy được nguyên văn, và mỗi trang đều liên kết tới tài liệu ngôn ngữ, tiêu chuẩn hoặc nguồn gốc đã dùng để kiểm tra.
Câu hỏi thường gặp
Nên học ngôn ngữ lập trình nào đầu tiên?
Với đa số người mới, Python hoặc JavaScript: cú pháp đơn giản, cộng đồng lớn và chạy ở mọi nơi. Chọn JavaScript để làm web, Python cho dữ liệu, tự động hóa và lập trình nói chung.
Cần cài gì để làm theo hướng dẫn?
Mỗi bài về ngôn ngữ đều bắt đầu bằng cách cài công cụ chính thức và chạy chương trình đầu tiên. Bài về mẫu thiết kế và thuật toán dùng TypeScript và Python, chạy được trên máy hoặc trong bất kỳ môi trường chạy trực tuyến nào.
Các hướng dẫn này có miễn phí không?
Có. Mọi bài đều đọc miễn phí, không cần tài khoản, và mã ví dụ có thể dùng lại trong dự án của bạn.
Cấu trúc dữ liệu và thuật toán khác nhau thế nào?
Cấu trúc dữ liệu là cách lưu dữ liệu, như mảng, bảng băm hay cây. Thuật toán là chuỗi bước giải một bài toán, như sắp xếp hay tìm đường đi ngắn nhất, và tốc độ của nó thường phụ thuộc vào cấu trúc dữ liệu được dùng.