Hãy thử tưởng tượng bạn muốn sắp xếp một danh sách đọc: cuốn nào đã đọc xong, cuốn nào chưa bắt đầu, làm sao lưu lại tiến độ để lần sau tiếp tục dùng?
Khi chỉ xử lý một cuốn sách, vài dòng mã dường như đã đủ. Thêm mười cuốn, bạn cần lưu nhiều bản ghi; muốn lọc ra các mục chưa đọc, bạn cần nêu rõ quy tắc đánh giá; và đến khi tắt chương trình mới nhận ra những thay đổi vừa rồi chưa được lưu.
Một nhu cầu rất nhỏ như vậy đã đưa vài vấn đề cốt lõi của lập trình đến trước mắt. AI001 "Nhập môn lập trình Python" của EvoClass sắp xếp mười tiết học quanh những năng lực nền tảng này, từ cú pháp và luồng điều khiển, tiến dần tới danh sách, hàm, từ điển, mô-đun và đọc ghi tệp.
Chương trình biết bước tiếp theo phải làm gì bằng cách nào
Khi nhìn một danh sách, con người thường tự nhiên quyết định nên xử lý mục nào trước. Chương trình thì cần điều kiện và trình tự rõ ràng.
Trong Lesson 2: Luồng điều khiển và logic, khóa học đi từ thực thi tuần tự sang câu lệnh điều kiện, biểu thức logic và lựa chọn nhiều nhánh, đồng thời nhấn mạnh khối mã được xác định bằng thụt lề.
Quay lại danh sách đọc, trước tiên có thể chỉ đặt một câu hỏi: trạng thái của một bản ghi có phải là "chưa đọc" hay không? Dựa trên câu trả lời để quyết định giữ lại hay bỏ qua, rồi áp dụng cùng quy tắc đó cho các bản ghi khác.
Điều đáng luyện ở giai đoạn này là biến một yêu cầu mơ hồ thành một phán đoán rõ ràng. Chẳng hạn "tìm ra những mục hữu ích" vẫn còn quá rộng, còn "giữ lại những mục có trạng thái là chưa đọc" đã có thể chuyển thành một quy tắc kiểm tra được.
Khi dữ liệu nhiều lên, hãy nghĩ trước cách sắp đặt
Khi số mục không còn chỉ là một, cách tổ chức dữ liệu bắt đầu ảnh hưởng đến cách viết chương trình.
Lesson 3: Sử dụng danh sách bàn về tập hợp có thứ tự, chỉ số, cắt lát, cũng như thêm và xóa phần tử. Một nhóm tên sách có thể đặt vào danh sách, rồi dùng vòng lặp để xử lý từng mục.
Nhưng một cuốn sách còn có thể gồm tác giả, trạng thái đọc và ngày ghi chép. Lúc này, nếu chỉ dựa vào vị trí để nhớ "mục thứ hai là gì", các lần sửa đổi sau đó sẽ trở nên nặng nề hơn. Lesson 8: Sử dụng từ điển giới thiệu khóa và giá trị, giúp các trường dữ liệu có tên gọi rõ ràng.
Đặt một từ điển cho mỗi mục trong danh sách là một cách tổ chức có thể thử trong bài tập này. Đây chỉ là gợi ý học tập, mục đích là để cảm nhận rằng: việc chọn cấu trúc dữ liệu khiến một số thao tác trở nên trực tiếp hơn, và cũng ảnh hưởng đến cách người khác hiểu đoạn chương trình này.
Làm cùng một việc nhiều lần, giảm bớt sao chép bằng cách nào
Nếu khi hiển thị trên màn hình, xuất danh sách và thống kê số lượng, bạn đều sao chép lại quy tắc lọc, thì khi đổi điều kiện bạn sẽ phải kiểm tra nhiều nơi cùng lúc.
Lesson 5: Dùng hàm để tái sử dụng mã xoay quanh định nghĩa hàm, tham số, lời gọi và giá trị trả về, bàn về cách tổ chức một thao tác liên quan thành đơn vị có thể dùng lại.
Thao tác lọc trong danh sách đọc có thể trở thành một bài luyện tập: nhận vào một nhóm bản ghi, trả về kết quả phù hợp điều kiện. Nơi gọi hàm chịu trách nhiệm hiển thị hoặc lưu lại, còn bản thân việc lọc giữ trách nhiệm rõ ràng.
Một khi tên hàm, đầu vào và đầu ra đã rõ, việc kiểm tra cũng cụ thể hơn. Khi không có bản ghi nào thì trả về gì? Khi mọi cuốn sách đều đã đọc xong thì sẽ thế nào? Những câu hỏi biên như vậy thường giúp ta hiểu chương trình tốt hơn là việc một đoạn mã chạy trót lọt một lần.
Sau khi tắt chương trình, kết quả được giữ lại thế nào
Dữ liệu lưu trong biến khi chương trình đang chạy sẽ không tự động trở thành bản ghi còn tồn tại ở lần mở chương trình tiếp theo.
Lesson 9: Nhập xuất tệp đưa việc học ra ngoài chương trình: đọc và ghi văn bản, quản lý tài nguyên tệp, và tiếp xúc với các định dạng dữ liệu phổ biến như CSV, JSON.
Danh sách đọc có thể tiếp tục được hoàn thiện theo hướng này: trước tiên đọc vào từ tệp, sau đó xử lý bản ghi, cuối cùng ghi ra những kết quả cần giữ lại. Khi ghi còn phải phân biệt ghi đè và ghi thêm, để lần chạy sau không làm thay đổi dữ liệu vốn muốn giữ.
Danh sách này là một ý tưởng dạy học nhằm kết nối các kiến thức, không phải một dự án hoàn chỉnh mà khóa học đã cung cấp, cũng không phải một bài thử nghiệm phần mềm đã hoàn tất trong bài viết này. Giá trị của nó nằm ở chỗ khiến mỗi khái niệm mới đều đáp lại một nhu cầu cụ thể, thay vì coi các điểm ngữ pháp như một danh sách tách rời nhau.
Trong trang khóa học AI001, bạn có thể học dần từ nền tảng, hoặc mang theo nhiệm vụ nhỏ của riêng mình để quay lại chương tương ứng. Đến cuối cùng, vài dòng mã chạy được kia có thể trở thành một công cụ mà bạn hiểu được, sửa được và lần sau vẫn tiếp tục dùng được.
Bài viết này được biên soạn dựa trên mục lục và tài liệu khóa học hiện tại của EvoClass, các liên kết bài học trỏ tới tài liệu tiếng Anh. Danh sách đọc là gợi ý học tập; bài viết không thực hiện thí nghiệm khóa học hay cam kết rằng hoàn thành khóa học là có thể bàn giao phần mềm sản xuất. Điều kiện truy cập đầy đủ và sử dụng các tính năng lập trình theo hướng dẫn hiển thị trên trang.