Package 4 · Debug & Verify (Gỡ lỗi và kiểm chứng)
Thuộc Curriculum Computer Science. Package chiếm nhiều thời gian nhất của nghề, và không có chương nào trong sách.
Tôi tìm ra được vì sao chương trình chạy sai, một cách có hệ thống, thay vì sửa mò.
Lỗi không phải dấu hiệu learner kém, nó là trạng thái mặc định của nghề. Kỹ năng thật nằm ở tốc độ thu hẹp vùng nghi ngờ, và ở chỗ phân biệt chạy được với đúng.
| Module | 4 |
| Unit | 12 |
| Mastery level | 4 tới 12 |
| Lớp (VN) | 4 tới 12 |
| Key concept chính | Evidence (Bằng chứng) · Systems (Hệ thống) |
Người mới coi lỗi là dấu hiệu mình kém. Người làm nghề coi lỗi là trạng thái mặc định, và kỹ năng thật nằm ở tốc độ thu hẹp vùng nghi ngờ.
Module trong package
| Module | Nội dung | Unit |
|---|---|---|
| 4.1 · Read the error (Đọc thông báo lỗi) | Máy đang nói cho ta biết, chỉ là bằng ngôn ngữ lạ | 3 |
| 4.2 · Narrow it down (Thu hẹp vùng nghi ngờ) | Tìm lỗi có hệ thống, không sửa mò | 3 |
| 4.3 · Test it properly (Kiểm thử đúng cách) | Ca kiểm thử, biên, và ca xấu | 3 |
| 4.4 · Show that it is correct (Chứng minh nó đúng) | Từ chạy được tới đúng trong mọi trường hợp | 3 |
Toàn bộ unit
| Unit | Mastery level (B21) | Lớp (VN) | Key concept |
|---|---|---|---|
| 4.1.1 Errors are normal (Lỗi là chuyện bình thường) | 4-8 | 4-9 | Development |
| 4.1.2 What the message says (Thông báo lỗi đang nói gì) | 5-10 | 6-11 | Communication |
| 4.1.3 Syntax, runtime, logic (Ba loại lỗi khác nhau) | 7-12 | 8-12 | Systems |
| 4.2.1 Where does it stop working (Nó hỏng từ chỗ nào) | 6-11 | 7-12 | Evidence |
| 4.2.2 Cut the problem in half (Chia đôi vùng nghi ngờ) | 8-12 | 9-12 | Systems · Patterns |
| 4.2.3 Change one thing at a time (Mỗi lần sửa một chỗ) | 7-12 | 8-12 | Evidence |
| 4.3.1 Try it with real cases (Thử với dữ liệu thật) | 6-11 | 7-12 | Evidence |
| 4.3.2 Test the edges (Kiểm tra trường hợp biên) | 8-12 | 9-12 | Evidence |
| 4.3.3 Write tests before code (Viết ca kiểm thử trước) | 10-12 | 11-12 | Development |
| 4.4.1 It ran is not it is right (Chạy được không phải là đúng) | 7-12 | 8-12 | Evidence |
| 4.4.2 Reason about correctness (Lập luận về tính đúng đắn) | 10-12 | 11-12 | Systems |
| 4.4.3 Explain your bug to someone (Giải thích lỗi cho người khác) | 6-12 | 7-12 | Communication |
Chỗ hay bị bỏ qua
Unit 4.4.1 là ranh giới quan trọng nhất của package. Chương trình chạy xong không báo lỗi và in ra một con số, điều đó không nói gì về việc con số đó có đúng không. Learner quen với trang chấm tự động thường lẫn hai chuyện này, vì với các em chạy được và được chấp nhận là một.
Unit 4.4.3 trông kỳ quặc nhưng có căn cứ vững: giải thích lỗi thành lời cho người khác nghe khiến learner tự tìm ra lỗi ngay giữa chừng, thường xuyên tới mức ngành đặt tên riêng cho hiện tượng này. Nó hiệu quả vì buộc learner nói ra các giả định ngầm mà mình chưa từng kiểm.
Unit 4.2.2 là chỗ tư duy chia để trị ở Package 2 quay lại làm công cụ. Thay vì đọc lại toàn bộ chương trình, learner cắt đôi và hỏi lỗi nằm nửa nào, rồi lặp lại. Mười lần cắt đôi thu hẹp một nghìn dòng xuống còn một.