OLHub

Máy thực thi lệnh thế nào

Dựng mô hình 'máy chạy từng dòng và giữ trạng thái' — thứ mọi module sau dựa lên. Chương trình là một dãy lệnh máy làm đúng từng chữ; biến là ô nhớ có tên và dấu bằng là phép gán chứ không phải phép so sánh; ô nhớ còn có kiểu, nên cộng chuỗi với số thì nổ; rồi bảng trace để tự chạy chương trình bằng tay và biết sau mỗi dòng biến bằng mấy. Không cài đặt gì, không chạy code. Quy ước xuyên khoá: mỗi mini challenge mở đầu bằng một câu bình thường-hoá việc làm sai — framing chống bỏ cuộc phải rải đều, không dồn vào M4.

7 bài · ~71 phútMiễn phí

Nội dung

Danh sách bài học

  1. 01

    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.

    ~8 phút
  2. 02

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

    Máy không đoán ý bạn. Nó đọc từng dòng theo thứ tự và làm đúng chữ bạn viết, kể cả khi chữ đó rõ ràng không phải điều bạn muốn.

    ~9 phút
  3. 03

    Biến, phép gán, và kiểu — dấu bằng không phải 'bằng nhau'

    x = x + 1 vô lý trong toán nhưng hợp lệ ở đây: dấu bằng không so sánh mà chép giá trị vào một ô nhớ có tên, sau khi vế phải đã tính xong.

    ~13 phút
  4. 04

    Chuỗi và số — vì sao cộng hai kiểu lại nổ

    Ô nhớ không chỉ giữ một giá trị, nó còn giữ một kiểu. Cộng chuỗi với số là chỗ người mới vấp sớm hơn ta tưởng — và là traceback đầu tiên bạn đọc trong khoá này.

    ~9 phút
  5. 05

    Bảng trace — chạy chương trình bằng tay

    Công cụ xương sống của khoá: cái bảng để bạn đóng vai cỗ máy, đi từng dòng và ghi lại mọi biến. Trace được thì viết được, không thì đoán mò.

    ~14 phút
  6. 06

    Mini challenge — hoán đổi hai biến

    Ba dòng gán, hai biến, một câu hỏi: chạy xong thì mỗi biến bằng mấy? Phép thử thật cho mô hình ô nhớ bạn vừa dựng ở hai bài trước.

    ~10 phút
  7. 07

    Tổng kết module — bạn đã có cỗ máy trong đầu

    Nhìn lại bốn thứ vừa dựng: máy làm đúng từng chữ, biến là ô nhớ có tên, ô nhớ có kiểu, và bảng trace để tự chạy chương trình. Tự chấm trước khi đi tiếp.

    ~8 phút