Để nắm vững Python, chúng ta cần có trong tay những quyển sách học python kinh điển để trở thành những chuyên gia trong lĩnh vực này. Trong số đó, "Learn Python the Hard Way" được xem là một trong những đầu sách phổ biến nhất trong nhiều năm qua.
Dù đã trở nên rất phổ biến, nhưng "Learn Python the Hard Way" vẫn gây tranh cãi giữa các độc giả. Nếu bạn đang phân vân không biết có nên chọn cuốn sách này hay không, hãy tham khảo đánh giá dưới đây. Trong bài viết này, chúng ta sẽ cùng tìm hiểu về tác giả, cấu trúc của cuốn sách cũng như những điểm mạnh và những ý kiến trái chiều về nó.
1. Về tác giả
Zed A. Shaw là một lập trình viên chuyên nghiệp và giàu kinh nghiệm. Anh được biết đến với các ứng dụng Ruby nổi tiếng như web server Mongrel, các bài viết về công nghệ và các dự án giáo dục như "Learn Code The Hard Way". Tuy nhiên, đây chỉ là một phần nhỏ trong sự nổi tiếng của Zed. Anh còn được biết đến như một nhà phê bình thẳng thắn về nhiều khía cạnh của văn hóa lập trình.
Một ví dụ điển hình là góc nhìn của Zed về Python 3. Trên blog cá nhân vào năm 2016, anh đã viết một bài đăng mang tên "The Case Against Python 3 (For Now)". Trong bài viết này, Zed đã đề cập những vấn đề mà Python 3 gặp phải. Anh đã thẳng thắn chia sẻ rằng: "There is a high probability that Python 3 is such a failure it will kill Python." (Có khả năng cao rằng Python 3 là một thất bại, nó sẽ giết chết Python).
Điều này đã được phản ánh trong cuốn "Learn Python the Hard Way". Đó cũng là một trong những yếu tố dẫn đến tranh luận với cuốn sách này. Dưới đây, chúng ta sẽ tìm hiểu xem hướng tiếp cận của Zed có hợp lý hay không.
2. Cấu trúc của "Learn Python the Hard Way"
2.1 Giới thiệu chung:
"Learn Python the Hard Way" là cuốn sách giảng dạy về Python và tư duy lập trình nói chung. Cuốn sách đề ra một lộ trình rõ ràng cho việc học một ngôn ngữ lập trình mới: Hiểu ưu điểm và nhược điểm của ngôn ngữ đó và cách áp dụng vào từng trường hợp cụ thể -> Học các cú pháp -> Thực hiện các khía cạnh phức tạp của ngôn ngữ trong thực tế. Tuy nhiên, điều khó khăn và quan trọng hơn cả là cách thức giúp người học có tư duy giải quyết vấn đề tốt. Zed đã cố gắng đạt được điều này trong cuốn sách.
2.2 Cấu trúc các chương:
Cuốn sách bắt đầu bằng việc hướng dẫn cài đặt Python (cho cả Windows và Mac). Điều này giúp bạn thiết lập một môi trường hoàn chỉnh để đảm bảo mọi thứ hoạt động một cách trơn tru. Sau khi đã sẵn sàng, bạn sẽ học về các khái niệm cụ thể của Python:
- Chương 1-14: Lệnh print, chuỗi (strings) và biến (variables).
- Chương 15-17: Làm việc với files: đọc, viết, sao chép.
- Chương 18-21: Giới thiệu các hàm.
- Chương 22: Đây là chương gợi ý người đọc xem lại kiến thức đã học và liệt kê tất cả các ký hiệu đã sử dụng. Sau đó, người đọc sẽ dành thời gian để kiểm tra lại kiến thức của mình về các ký hiệu này (VD: ‘, %, =, v.v.).
- Chương 23-25: Thực hành chi tiết về nội dung các chương trước.
- Chương 26: Bài kiểm tra khả năng sửa lỗi của người đọc. Zed đưa ra các đoạn mã Python có lỗi và yêu cầu người đọc sửa chúng.
- Chương 27-31: Giới thiệu về kiểu dữ liệu Boolean và câu lệnh "if".
- Chương 32-36: Phân tích vòng lặp.
- Chương 37: Ôn tập các ký hiệu và cung cấp một bảng ghi chú nhỏ về các từ khóa, kiểu dữ liệu, chuỗi thoát và các toán tử.
- Chương 38-39: Lists và từ điển.
- Chương 40-49: Lập trình hướng đối tượng (Object-Oriented Programming).
- Chương 50-52: Giới thiệu ngắn gọn về phát triển web với Flask.
3. Điều gì làm nên điểm mạnh của "Learn Python the Hard Way"?
3.1 Hướng tiếp cận khuyến khích khả năng tự học
Cách mà Zed lựa chọn để truyền đạt kiến thức là khá đặc biệt: Thông qua "Learn Python the Hard Way", người đọc được khuyến khích tìm hiểu rất nhiều thông tin một cách độc lập. Tác giả chỉ định hướng chung, trong khi người đọc cần tự tìm hiểu sâu hơn thông qua các nguồn tài liệu khác.
Thực tế, không có tài liệu nào cung cấp đủ kiến thức. Để tìm lời giải đáp cho một câu hỏi , bạn cần biết cách tìm kiếm, lựa chọn và kết hợp nhiều nguồn thông tin khác nhau. Có thể bạn đọc sách, xem video hướng dẫn, hỏi những người xung quanh,...Miễn là bạn tìm được giải pháp cuối cùng cho chính mình! Điều này là rất quan trọng đối với một lập trình viên.
3.2 Kiến thức bổ sung về Command Line
Zed đã bổ sung một chương phụ với tiêu đề "Command Line Crash Course". Đây là chương giúp bạn hiểu cơ bản về command line và terminal.
Có lập trình viên cho rằng kiến thức về command line không quan trọng. Tuy nhiên, command line thực chất là một kỹ năng hữu ích cho lập trình viên. Bạn có thể áp dụng kiến thức này vào công việc với Git, quản lý môi trường ảo thông qua pipenv, quản lý hiệu suất hệ thống thông qua các tiện ích như iperf hoặc htop... Mặc dù không phải là một khóa học toàn diện, nhưng nó cung cấp cho bạn kiến thức vững chắc về cách hoạt động của command line và sự khác biệt với giao diện đồ hoạ người dùng.
3.3 Chuyên mục "Common Student Questions" (Câu hỏi thường gặp)
Zed đã thêm một chuyên mục "Common Student Questions" (Câu hỏi thường gặp) ở mỗi chương. Chuyên mục này giải thích một số vấn đề mà người học thường gặp, giống như Stack Overflow nhưng trong sách. Đây là một số ví dụ:
-
Q: Tại sao tôi nhận thông báo "SyntaxError: invalid syntax" mỗi khi chạy Pydoc? A: Bạn không chạy Pydoc từ command line; có thể bạn đang chạy nó bên trong Python 3.6. Hãy thoát khỏi Python 3.6 trước.
-
Q: Tại sao for i trong range(1, 3) chỉ được lặp lại 2 lần thay vì 3 lần? A: Hàm range() chỉ chạy các số từ đầu đến cuối và bỏ qua số cuối. Vì vậy, trong trường hợp này, nó dừng lại ở số 2 chứ không phải 3. Đây được coi là cách phổ biến nhất để chạy vòng lặp này.
3.4 "Learn Python the Hard Way" có thể được tiếp cận miễn phí!
Dù là sách từ nước ngoài, bạn không cần phải lặn lội tìm kiếm hay lo lắng về giá của cuốn sách này. Phiên bản ebook của "Learn Python the Hard Way" có sẵn trực tuyến hoàn toàn miễn phí!
4. Những ý kiến trái chiều về "Learn Python the Hard Way"
4.1 Tranh luận về Python 2 và Python 3
Tranh luận bắt đầu từ khi Zed phát hành "Learn Python (2) The Hard Way" vào năm 2014. Trong chương mở đầu, anh viết:
“… About 90% of the Python you will encounter in the world right now is Python 2.7, so this book is no different.”
Tuy nhiên, các lập trình viên cho rằng Python 3 đã tiến bộ hơn Python 2 và có nhiều tính năng mới và cải tiến. Vấn đề này đã khiến cho nhiều người không hài lòng với quyết định của Zed.
Cuối cùng, Zed đã quyết định cập nhật cuốn sách lên phiên bản Python 3 vào năm 2017.
4.2 Yêu cầu nhập liệu thủ công
Trong cuốn sách, Zed cảnh báo người đọc không nên sao chép mã nguồn mà thay vào đó nên nhập mã một cách thủ công để nhớ lâu hơn.
Tuy nhiên, một số lập trình viên cho rằng việc nhớ cú pháp Python không khó như Zed nghĩ. Thực tế là lập trình viên không cần nhớ từng chi tiết nhỏ mà chỉ cần biết làm thế nào để tra cứu thông tin cần thiết. Phương pháp nhập liệu thủ công của Zed có thể phù hợp với một số người, nhưng không hiệu quả với một lập trình viên mới học Python.
Kết luận
Trong thực tế, không có tài liệu nào là hoàn hảo 100%. Cách tiếp cận của Zed trong "Learn Python the Hard Way" sẽ phù hợp với mỗi người và cuốn sách này xứng đáng để thử đối với mọi lập trình viên trong nhiều năm qua. Nếu bạn đã đọc cuốn sách và có bất kỳ đánh giá nào khác, hãy chia sẻ với mọi người dưới phần bình luận!
Hình ảnh: "Learn Python the Hard Way"
Tham khảo: Got It Vietnam - Tác giả Denis Kryukov, theo soshace.com