“Learn Python the Hard Way” – Review chi tiết về cuốn sách học Python kinh điển

Để 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. 

Learn Python the Hard Way

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.

Zed A. Shaw (Nguồn: Phusion Blog)

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.

Hãy rèn cho mình thói quen tự học từ sớm

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). 

Điểm mạnh của “Learn Python the Hard Way”
Nguồn: Soshace

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:

Tranh luận liên quan đến “Learn Python the Hard Way” về Python 2 và Python 3

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:

Python Developers Survey
Nguồn: jetbrains.com

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.

Nguồn: Internet

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 soshace.com

Nếu bạn quan tâm, hãy xem các vị trí đang tuyển dụng của Got It tại: bit.ly/gotit-hanoi và đọc thêm về quy trình tuyển dụng tại đây.

https://d1iv5z3ivlqga1.cloudfront.net/wp-content/uploads/2021/04/29235048/1_QAG9RXQyyMAY7i9OYo84FA.png
Got It Vietnam
December 08, 2020
Share this post to:
Tags:
4 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
trackback
Bắt đầu học ngôn ngữ lập trình Python qua các dự án - Blog | Got It AI
3 months ago

[…] Learn Python the Hard Way – một cuốn sách dạy các khái niệm Python từ cơ bản đến các chương trình chuyên sâu. […]

trackback
4 quyển sách Python tiếng Việt cho người mới bắt đầu - Blog | Got It AI
3 months ago

[…] đầu sách tiếng Anh về các kiến thức Python nâng cao. Chẳng hạn như quyển Learn Python the Hard Way – một trong những quyển sách “kim chỉ nam” mà bất kỳ coder Python nào cũng […]

trackback
Tài liệu Python: 10 cuốn sách Python cơ bản cho người mới bắt đầu
3 months ago

[…] Review chi tiết Learn Python The Hard Way […]

trackback
4 quyển sách học Python cơ bản bạn không thể bỏ qua - Blog | Got It AI
3 months ago

[…] Review chi tiết quyển Learn Python The Hard Way […]

Các bài viết liên quan
Hướng dẫn cách sử dụng Visual Studio Code căn bản

Hướng dẫn cách sử dụng Visual Studio Code căn bản

Nhanh, gọn nhẹ, đa năng và hoạt động mạnh mẽ trên đa nền tảng là những ưu điểm nổi trội của trình soạn thảo VS Code. Cách sử dụng Visual Studio Code cơ bản sẽ được hướng dẫn cụ thể trong bài viết dưới đây. Mục lụcVisual Studio Code là gì và dành cho ai?Phiên […]
Visual Studio Code là gì? Lợi thế từ việc sử dụng Visual Studio Code

Visual Studio Code là gì? Lợi thế từ việc sử dụng Visual Studio Code

Visual Studio Code là gì mà khiến cộng đồng IT Việt yêu thích đến vậy? Trình soạn thảo code này sẽ giúp bạn xây dựng ứng dụng web và cloud như thế nào? Hãy cùng Got It tìm hiểu Visual Studio Code ngay hôm nay nhé! Mục lục1. Visual Studio Code là gì?2. Phân biệt […]
Hướng dẫn cách format code Visual Studio Code với Prettier

Hướng dẫn cách format code Visual Studio Code với Prettier

Việc định dạng mã sao cho thống nhất là một thử thách khó khăn đối với đa phần lập trình viên. Prettier chính là công cụ format code của Visual Studio Code giúp bạn duy trì sự nhất quán trong toàn bộ cơ sở mã của nhóm. Cùng tìm hiểu cách dùng Prettier để format […]
Cách sử dụng phím tắt sắp xếp code trong Visual Studio Code

Cách sử dụng phím tắt sắp xếp code trong Visual Studio Code

Chỉ với một vài thao tác đơn giản với phím tắt sắp xếp code trong Visual Studio Code, bạn đã có thể tạo ra một đoạn mã đẹp mắt, ngay ngắn và dễ đọc. Cùng tìm hiểu về cách sử dụng phím tắt này và khám phá thêm một vài phím tắt hữu ích khách […]
Gợi ý tài liệu tự học các ngôn ngữ lập trình web phổ biến miễn phí

Gợi ý tài liệu tự học các ngôn ngữ lập trình web phổ biến miễn phí

Thay vì vội vàng đăng ký các chương trình học mất tiền, bạn hãy tham khảo ngay những tài liệu tự học các ngôn ngữ lập trình web phổ biến miễn phí được Got It gợi ý dưới đây. Các ngôn ngữ được nhắc đến trong bài bao gồm HTML, CSS và JavaScript – chìa […]
5 bài tập lập trình Python giúp bạn rèn luyện kỹ năng

5 bài tập lập trình Python giúp bạn rèn luyện kỹ năng

Sau khi nhận được nhiều yêu cầu từ bạn đọc về chủ đề “bài tập lập trình Python”, Got It đã sưu tầm những bài tập Python thực sự giúp các bạn đang học ngôn ngữ này, hoặc những người đang làm việc liên quan đến nó, hiểu được cách mà Python hoạt động. Bài […]