Để chinh phục Python, bất cứ ai cũng phải bỏ túi những quyển sách học Python kinh điển để làm bảo bối của mình. Trong số đó, “Learn Python the Hard Way” được coi là một trong những đầu sách phổ biến nhất qua nhiều năm.
Dù phổ biến là vậy, song “Learn Python the Hard Way” vẫn nhận được nhiều tranh cãi từ người đọc. Nếu vẫn đang băn khoăn không có biết có nên lựa chọn cuốn sách này hay không, bạn có thể tham khảo những đánh giá trong bài viết này. Trong đó, chúng ta sẽ cùng tìm hiểu về tác giả, cấu trúc cùng những điểm tốt và những điểm gây trái chiều của cuốn sách.
(Bài viết chỉ mang tính tham khảo, vậy nên nếu có những suy nghĩ khác biệt, bạn hãy cho chúng mình biết thêm ở dưới comment nhé!).
1. Về tác giả
Zed A. Shaw là một lập trình viên chuyên nghiệp và dày dặn kinh nghiệm. Anh nổi tiếng với những ứng dụng Ruby (nổi bật nhất là web server Mongrel), các bài viết về công nghệ và những dự án giáo dục (trong đó có các khoá học “Learn Code The Hard Way”). Tuy vậy, đó chưa phải tất cả những gì làm nên sự nổi tiếng của Zed. Anh còn được biết đến với tư cách là một nhà phê bình thẳng thắn về một số công nghệ và nhiều khía cạnh khác của văn hóa lập trình.
Ví dụ nổi bật nhất là sự đánh giá của Zed đối với Python 3. Trong bài đăng trên blog vào năm 2016 của anh ấy, có một tiêu đề mang tên “The Case Against Python 3 (For Now”. Ở bài viết này, Zed đã vạch ra những vấn đề được cho là một số sai sót nghiêm trọng mà Python 3 mắc 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).
Chính góc nhìn về Python 3 này của Zed đã được phản ánh trong cuốn “Learn Python the Hard Way”. Nó cũng là một trong những yếu tố dẫn đến các tranh luận trái chiều với quyển sách. Trong những phần dưới đây, chúng ta sẽ cùng tìm hiểu xem liệu 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 dạy về Python và những mindset về lập trình nói chung. Lộ trình học một ngôn ngữ lập trình mới được đưa ra khá rõ ràng: Hiểu ưu, nhược điểm của ngôn ngữ đó và cách ứng dụng vào từng trường hợp → Học các cú pháp → Đi sâu vào các cách hoạt động phức tạp của nó trong thực tế. Tuy vậy, cái khó và quan trọng hơn cả là làm sao để người học có tư duy giải quyết vấn đề tốt. Zed đã cố gắng làm điều đó ở trong cuốn sách này.
2.2 Cấu trúc các chương:
Mở đầu, cuốn sách sẽ dạy bạn cách cài đặt Python (cho cả Windows và Mac). Bạn sẽ thiết lập được một môi trường hoàn chỉnh để đảm bảo mọi thứ hoạt động tốt. Khi đã sẵn sàng, giờ là lúc để bạn tìm hiểu các kiến thức cụ thể về Python:
- Chương 1-14: Lệnh print, chuỗi (strings) và biến (variables).
- Chương 15-17: Cách làm việc với files: đọc, viết, copy.
- Chương 18-21: Giới thiệu các hàm.
- Chương 22: Chương này gợi ý người đọc xem lại kiến thức của các chương trước và liệt kê ra tất cả các ký hiệu họ dùng. Sau đó, họ sẽ dành ra 2 ngày tiếp theo để kiểm tra lại kiến thức của mình về các ký hiệu trên (VD: ‘, %, , =, v.v).
- Chương 23-25: Thực hành chuyên sâu về nội dung của các chương trước.
- Chương 26: Bài kiểm tra khả năng debug của người đọc. Zed đưa ra các dòng code Python có lỗi và yêu cầu người đọc sửa nó.
- 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 các vòng lặp.
- Chương 37: Ôn tập về các ký hiệu và cung cấp một cheat sheet nhỏ về các từ khoá, kiểu dữ liệu, chuỗi thoát (string escape sequences) 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 Zed lựa chọn để dạy kiến thức khá đặc biệt: Thông qua “Learn Python the Hard Way”, người đọc được kỳ vọng tìm hiểu rất nhiều thông tin một cách tự lập. Tác giả sẽ chỉ vạch ra một định hướng chung, còn người đọc sẽ cần chủ động đào sâu kiến thức đó bằng những nguồn tài liệu xung quanh.
Thực tế, không có một tài liệu nào cung cấp sẵn tất cả những kiến thức bạn cần. Muốn tìm lời giải đáp cho một câu hỏi nào đó, bạn cần biết cách tự tìm kiếm, chọn lọc và kết hợp nhiều nguồn thông tin khác nhau. Bạn có thể tìm đến bất kỳ cách nào, từ đọc tài liệu viết, xem các video hướng dẫn, hỏi những người xung quanh,…Miễn sao bạn tìm được giải pháp cuối cùng cho chính mình! Đây cũng chính là một tư duy mà bất kỳ lập trình viên giỏi nào cần có được.
3.2 Kiến thức bổ sung về Command Line
Nhận thấy “lập trình” không chỉ liên quan tới mỗi việc “viết code”, Zed đã bổ sung một chương phụ với tiêu đề “Command Line Crash Course”. Đây là chương cung cấp những kiến thức tổng quan và ngắn gọn về thế giới của những chiếc bảng điều khiển (consoles) và thiết bị đầu cuối (terminals).
Có một số lập trình viên cho rằng những kiến thức về giao diện dòng lệnh (Command Line Interface hay CLI) không thực sự quan trọng. Tuy vậy, CLI thực chất là một kỹ năng rất hữu ích cho lập trình viên. Bạn có thể có thêm nhiều kinh nghiệm để áp dụng vào lập trình khi làm 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 của console như iperf hoặc htop… Mặc dù đây không phải là một khóa học toàn diện, nhưng nó cung cấp cho người đọc hiểu biết vững chắc về cách hoạt động của CLI và điểm khác biệt của chúng với giao diện đồ hoạ người dùng (Graphical User Interface hay GUI).
Các bài học bao gồm:
- Làm việc với đường dẫn (paths), thư mục (folders/directories) (thông qua mkdir)
- Điều hướng xung quanh hệ thống tệp (VD: ls, cd, pushd/popd)
- Làm việc với tệp (VD: touch, cp, mv)
Cuối cùng, Zed cung cấp thêm một số cheat sheets cho cả Unix Bash và Powershell.
3.3 Chuyên mục “Common Student Questions” (Những câu hỏi thường gặp)
Nhận thấy rất nhiều người đọc sẽ có thể mắc lỗi, Zed đã bổ sung một chuyên mục ”Common Student Questions” (Các câu hỏi thường gặp) ở mỗi chương. Đúng như tên gọi của nó, chuyên mục này sẽ giải thích một số vấn đề người học hay gặp nhất, giống như Stack Overflow ở dạng sách vậy. Dưới đây là một số ví dụ:
- Q: Tại sao tôi lại nhận được thông báo: “SyntaxError: invalid syntax” mỗi khi tôi chạy Pydoc?
A: Bạn đang 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? 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 hoàn toàn miễn phí!
Dù là sách từ nước ngoài nhưng bạn chẳng cần phải lặn lội tìm kiếm đâu xa hay e ngại rằng giá của cuốn sách quá đắt. Phiên bản ebook của “Learn Python the Hard Way” có sẵn ở khắp mọi nơi và được tiếp cận hoàn toàn miễn phí! Got It gửi bạn link ebook của cuốn sách này tại đây.
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 xảy ra vào năm 2014 khi Zed cho ra mắt “Learn Python (2) The Hard Way”. Ở “Exercise 0: The Setup”, anh đã viết:
Tạm dịch: “Tôi nhắc lại, đừng sử dụng Python 3. Python 3 không được sử dụng nhiều, và nếu bạn học Python 2, bạn có thể dễ dàng học Python 3 khi cần. Nếu bạn học Python 3 thì bạn vẫn phải học Python 2 để hoàn thành mọi việc. Chỉ cần học Python 2 và phớt lờ những ý kiến cho rằng Python 3 là tương lai.”
Như có đề cập từ trước, là một tác giả và một lập trình viên, Zed vẫn luôn có những chỉ trích về Python 3 và dự đoán rằng nó sẽ không thể thành công. Ý kiến này có thể phù hợp với một bài đăng trên blog cá nhân, tuy vậy anh lại đang gợi ý cho hàng nghìn lập trình viên sử dụng một công nghệ cũ hơn dù biết rằng những hỗ trợ cho Python 2 sẽ kết thúc vào năm 2020.
Luận điểm này khiến cho nhiều lập trình viên không thực sự thoả mãn, bởi họ cho rằng tác giả cũng nên thừa nhận vì sao ngày càng có nhiều người chuyển sang Python 3. Dưới đây là một khảo sát của JetBrains (đội ngũ đứng đằng sau PyCharm, một trong những IDEs phổ biến nhất), cho thấy rõ Python 3 đang là một xu hướng đi lên:
Cuối cùng, Zed cũng đã quyết định cập nhật quyển sách lên phiên bản với 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 cáo người đọc về việc sao chép các đoạn code. Thay vào đó, họ được khuyến khích nhập các dòng code một cách thủ công để ghi nhớ những trúc Python tốt hơn.
Chính Zed cũng đã gọi đây là một quá trình ghi nhớ nhàm chán và câu hỏi được đặt ra là: Những cú pháp Python có thực sự khó nhớ đến vậy? Thực chất, lập trình viên không nhất thiết phải nhớ từng chi tiết nhỏ mà chỉ cần ghi nhớ các nguồn họ có thể tra cứu ra một chi tiết nào đó. Cách tiếp cận qua hướng nhập liệu thủ công của Zed có thể phù hợp với một số người, nhưng chưa chắc đã 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à 100% hoàn hảo. Những hướng tiếp cận của Zed trong “Learn Python the Hard Way” sẽ trở nên phù hợp với tuỳ người, và bạn cũng có thể là một trong số đó. Dẫu sao, đây vẫn là một cuốn sách học Python kinh điển đáng để thử với mọi lập trình viên suốt nhiều năm nay. Nếu bạn đã đọc sách và có bất kỳ đánh giá nào khác về cuốn sách này, hãy chia sẻ nó với mọi người ở dưới phần bình luận nhé!
Got It Vietnam – Tham khảo: Tác giả Denis Kryukov, theo friend.com.vn
- Share CrocoBlock key trọn đời Download Crocoblock Free
- Cung cấp tài khoản nghe nhạc đỉnh cao Tidal Hifi – chất lượng âm thanh Master cho anh em mê nhạc.
- Cách nhảy dây giúp "THU NHỎ" bắp chân – Aolikes Việt Nam
- Ý Nghĩa Số 66 Có Ý Nghĩa Gì ? Nằm Mơ Thấy Con Gì Đánh 66 Trúng Chắc
- Cách gọi video nhóm trên Skype bằng điện thoại – Fptshop.com.vn
- Thời trang công chúa đặc biệt – Tro choi vui mien phi – friend.com.vn
- The Room: Old Sins Games