Nhập môn Tư duy Lập trình/Tổng quan module — máy thực thi lệnh thế nào
1/7
Bài 1 / 7~8 phútMáy thực thi lệnh thế nàoMiễn phí lượt xem

Tổng quan module — máy thực thi lệnh thế nào

Module dựng thứ mọi module sau dựa lên: mô hình một cỗ máy chạy từng dòng và giữ trạng thái. Không cài đặt gì, không chạy code.

TL;DR: Module này dựng đúng một thứ: mô hình cách máy chạy chương trình, cùng công cụ để bạn tự kiểm tra mô hình đó bằng tay. Năm bài đi từ máy thi hành đúng từng dòng, tới phép gán ghi đè ô nhớ, tới kiểu dữ liệu làm phép cộng nổ, tới bảng trace tự chạy một đoạn tám dòng, và kết ở một mini challenge hoán đổi hai biến, chỗ mô hình bị sai trực giác nhất. Không cài đặt gì, không chạy code; bạn chỉ cần giấy bút.

1. Khoá này dành cho ai

Khoá nhap-mon-lap-trinh dành cho người CHƯA từng viết một dòng code nào: vừa hết cấp 3, chuyển ngành, hoặc tự học từ số 0. Nếu bạn đã viết được một vòng lặp for hoặc while, và tự tin nói đúng nó in ra gì trước khi chạy thử, khoá này quá chậm cho bạn, cứ bỏ qua và học thẳng vào Java Foundations hoặc Thuật toán Căn bản. Đây là một bộ lọc thành thật, không phải lời xin lỗi: khoá dạy cách nghĩ, không dạy cú pháp một ngôn ngữ, nên tốc độ chậm hơn hẳn một khoá học code thông thường.

Khoá không cài đặt gì, không chạy code. Bạn đọc, tự tính bằng tay, rồi đối chiếu với output thật đã in sẵn trong bài. Ký pháp dùng là Python tối giản, chỉ để có chỗ viết ví dụ cụ thể, không phải để dạy Python.

2. Bốn nút thắt của cả khoá

Suốt khoá, bạn sẽ va vào đúng bốn nút thắt lặp lại ở mọi module, không riêng module này:

  1. Notional machine: một mô hình đúng trong đầu về cách máy chạy chương trình, nó làm gì, theo thứ tự nào, giữ trạng thái ở đâu. Thiếu cái này thì mọi giải thích khác chỉ là học vẹt.
  2. Tracing: tự chạy một chương trình bằng tay, không cần máy tính, biết chính xác giá trị mọi biến sau từng dòng.
  3. Phân rã: bóc một đề bài viết bằng tiếng Việt thành các bước máy làm được.
  4. Debug: khi code sai, xếp lỗi vào đúng loại và thu hẹp nguyên nhân bằng giả thuyết, thay vì sửa bừa.

Module này xử lý đúng hai cái đầu: notional machine và tracing. Phân rã và debug đợi ở các module sau (sắp có).

Bản đồ năm bài của module chia hai làn: làn Notional machine gồm bài 01, 02, 03 nối tiếp bằng mũi tên, làn Tracing gồm bài 04, 05 nối tiếp bằng mũi tên, nối từ làn trên xuống làn dưới; hai ô mờ ở góc phải ghi Phân rã và Debug là hai nút thắt còn lại đợi ở module sau

3. Năm bài trong module này

  • Bài 1: Chương trình là dãy lệnh. Bạn giải thích được vì sao máy làm đúng từng chữ bạn viết, theo đúng thứ tự, không suy diễn ý định.
  • Bài 2: Biến và phép gán. Bạn đọc được dòng x = x + 1 mà không khựng lại, vì hiểu đúng ba bước máy làm khi gán giá trị vào một ô nhớ.
  • Bài 3: Chuỗi và số. Bạn đoán đúng kết quả khi cộng chuỗi với số, và đọc được dòng cuối của traceback đầu tiên trong khoá.
  • Bài 4: Bảng trace. Bạn tự trace một đoạn tám dòng lệnh bằng tay, điền đúng giá trị mọi biến sau từng dòng.
  • Bài 5: Mini challenge: hoán đổi hai biến. Bạn dùng bảng trace để dự đoán một kết quả ngược trực giác, vì sao hoán đổi hai biến không đơn giản như bạn tưởng.

Bài cuối module — Tổng kết — gom cả năm bài thành một trang cheat sheet để bạn tự chấm trước khi qua module tiếp theo (sắp có).

4. Học xong module này bạn làm được gì

  • Explain vì sao máy thi hành đúng từng chữ theo thứ tự từng dòng và không suy diễn ý định của người viết.
  • Explain phép gán bằng mô hình ô nhớ có tên: vế phải được tính xong trước, giá trị được chép vào ô, và mỗi ô chỉ giữ một giá trị tại một thời điểm.
  • Predict kết quả khi cộng chuỗi với số, và đọc dòng cuối traceback để biết hai kiểu vừa va nhau là gì.
  • Trace một đoạn tám dòng tuần tự bằng bảng trace, điền đúng giá trị mọi biến sau từng dòng — kể cả khi một phép gán ghi đè làm mất dữ liệu.

5. Cách học module này hiệu quả

  • Có giấy bút cạnh máy. Mọi ô "Thử đoán" trong năm bài chỉ có tác dụng nếu bạn thật sự viết ra giấy — đoán trong đầu không rèn được kỹ năng trace.
  • Đọc đúng thứ tự 01 tới 05, đừng nhảy cóc. Bài sau dùng lại nguyên khối mô hình của bài trước: bài 4 cần bài 2, bài 5 cần bài 4.
  • Không cần cài Python, không cần chạy thử gì cả. Output in trong bài là output thật, chép nguyên văn — kể cả traceback.

Bắt đầu: Bài 1 — Chương trình là dãy lệnh.

Bài này đáng gửi cho bạn học cùng?

Copy link đã gắn nguồn — dán group, chat, hoặc LinkedIn.

Bài này có giúp bạn hiểu bản chất không?

Hỏi đáp về bài này

Chưa có câu hỏi

Đặt câu hỏi

Có gì chưa rõ trong bài? Đặt câu hỏi đầu tiên — câu trả lời từ cộng đồng giúp bạn (và người sau).

Đặt câu hỏi đầu tiên

Bài tiếp theo

Chương trình là một dãy lệnh — máy làm đúng từng chữ