Cộng đồng lập trình đang tham gia vào một cuộc thảo luận sôi nổi về một trong những tutorial ngôn ngữ lập trình phổ biến nhất trực tuyến. Build Your Own Lisp hứa hẹn sẽ dạy cả lập trình C và triển khai ngôn ngữ chỉ trong 1000 dòng code, nhưng các lập trình viên có kinh nghiệm đang nêu ra những lo ngại nghiêm trọng về giá trị giáo dục của nó.
Tutorial Chứa Các Thực Hành Lập Trình C Kém
Các nhà phê bình cho rằng tutorial này dạy những thói quen lập trình C xấu có thể gây hại cho người học về lâu dài. Mối quan tâm chính tập trung vào chất lượng code và các thực hành tốt nhất. Một số lập trình viên lo lắng rằng những người mới bắt đầu theo dõi hướng dẫn này có thể học được những pattern lập trình không thể mở rộng ra ngoài các dự án đồ chơi.
Một lời phê bình đặc biệt sắc sảo đến từ một phân tích chi tiết làm nổi bật những vấn đề cơ bản với cách tiếp cận của tutorial. Lời phê bình này phổ biến đến mức các lập trình viên đã tạo ra những tài nguyên chuyên dụng để giải thích tại sao tutorial cụ thể này có thể không phải là lựa chọn tốt nhất cho những người học nghiêm túc.
Thiếu Các Khái Niệm Lisp Cốt Lõi
Một điểm tranh luận chính khác liên quan đến những gì thực sự tạo nên một ngôn ngữ lập trình Lisp. Một số thành viên cộng đồng lưu ý rằng tutorial bỏ qua các khái niệm Lisp thiết yếu như các thao tác CAR và CDR, những thứ cơ bản để hiểu cách các ngôn ngữ Lisp truyền thống hoạt động.
Đây là NHIỀU HƠN một 'Build Your Own Lisp'. Đến mức gần như là bất cứ thứ gì khác ngoài điều đó.
Tutorial sử dụng một thư viện parser có sẵn gọi là 'mpc' thay vì dạy sinh viên cách xây dựng những thành phần cốt lõi này từ đầu. Cách tiếp cận này, tuy đơn giản hơn, có thể tước đi người học sự hiểu biết sâu sắc đến từ việc triển khai những khái niệm cơ bản này từ con số không.
Các khái niệm Lisp còn thiếu trong hướng dẫn:
- Các phép toán CAR và CDR (các phép toán danh sách cơ bản)
- Tối ưu hóa tail-call
- Continuations và CPS ( Continuation Passing Style )
- Call/CC ( Call with Current Continuation )
- Triển khai S-Expression thích hợp sử dụng danh sách liên kết
Các Lựa Chọn Thay Thế Tốt Hơn Được Khuyến Nghị
Cộng đồng đã tập hợp xung quanh một số tài nguyên thay thế cho những ai quan tâm đến việc xây dựng ngôn ngữ lập trình. MAL (Make A Lisp) được đề cập thường xuyên như một cách tiếp cận toàn diện hơn, mặc dù nó đòi hỏi nhiều nỗ lực hơn từ người học. Crafting Interpreters cũng nhận được lời khen ngợi như một tài nguyên vượt trội để hiểu về triển khai ngôn ngữ.
Đối với những ai đặc biệt quan tâm đến lập trình C, các lập trình viên đề xuất nên tìm hiểu ở nơi khác hoàn toàn. Sự đồng thuận dường như là trong khi tutorial có thể cung cấp một số giá trị giải trí, nó không đạt được tiêu chuẩn như một tài nguyên giáo dục nghiêm túc.
Tài Nguyên Học Tập Thay Thế Được Cộng Đồng Khuyến Nghị:
- MAL (Make A Lisp): Cách tiếp cận toàn diện hơn nhưng ít hướng dẫn chi tiết
- Crafting Interpreters: Được đánh giá cao về các khái niệm triển khai ngôn ngữ lập trình
- Writing a Lisp in OCaml: Hướng dẫn từng bước với nền tảng tốt hơn
- mpc Parser Library: Thư viện parser có sẵn được sử dụng trong hướng dẫn gốc
Thiếu Các Tính Năng Nâng Cao
Các lập trình viên Lisp có kinh nghiệm chỉ ra rằng tutorial dừng lại đúng khi mọi thứ trở nên thú vị. Những khái niệm quan trọng như tối ưu hóa tail-call, continuation, và call/cc (call with current continuation) hoàn toàn vắng mặt. Không có những tính năng này, ngôn ngữ kết quả vẫn là một đồ chơi thay vì thứ gì đó có ứng dụng thực tế.
Cuộc tranh luận làm nổi bật một thách thức rộng lớn hơn trong giáo dục lập trình: cân bằng giữa khả năng tiếp cận và độ chính xác kỹ thuật. Trong khi tutorial thành công trong việc làm cho triển khai ngôn ngữ có vẻ dễ tiếp cận, nó có thể làm như vậy với cái giá là dạy các kỹ thuật và khái niệm đúng đắn mà sinh viên sẽ cần cho phát triển thế giới thực.
Tham khảo: Build Your Own Lisp