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

Uyen Tran
Uyen Tran
December 08, 2020
18
Share this post to:
Tags:
0 Comments
Inline Feedbacks
View all comments
Các bài viết liên quan
Ngôn ngữ Python và 15 sự thật bạn có thể chưa biết

Ngôn ngữ Python và 15 sự thật bạn có thể chưa biết

Dùng ngôn ngữ Python hàng ngày, nhưng bạn có biết rằng Python vốn là một dự án sở thích dịp Giáng Sinh? Không chỉ có một nguồn gốc thú vị, còn có rất nhiều sự thật khác về ngôn ngữ này làm cho bạn hứng thú đấy. Hãy khám phá 15 sự thật đó ngay […]
Top các thư viện Python sử dụng cho lập trình trí tuệ nhân tạo

Top các thư viện Python sử dụng cho lập trình trí tuệ nhân tạo

Các thư viện phổ biến được dùng cho lập trình trí tuệ nhân tạo là gì? Một trong những lý do Python trở thành ngôn ngữ lý tưởng nhất cho việc lập trình AI là hệ sinh thái thư viện mà nó cung cấp. Các thuật toán và công cụ AI có thể được thực […]
Lý do nên chọn lập trình trình trí tuệ nhân tạo (AI) bằng Python

Lý do nên chọn lập trình trình trí tuệ nhân tạo (AI) bằng Python

Hiện nay, trong thế giới lập trình, Python đang dẫn đầu trong cuộc đua tìm ra ngôn ngữ tốt nhất cho AI và mạng nơ-ron. Trong bài viết này, hãy cùng tìm hiểu tại sao lập trình trí tuệ nhân tạo bằng Python lại là một lựa chọn lý tưởng đến vậy. Mục lụcNhững thế […]
Bắt đầu học ngôn ngữ lập trình Python qua các dự án

Bắt đầu học ngôn ngữ lập trình Python qua các dự án

Học ngôn ngữ lập trình Python là luôn nằm trong top những điều mọi người nên làm trong những năm gần đây. Python được sử dụng rộng rãi trong nhiều lĩnh vực hot như Khoa học Dữ liệu, phát triển web, kỹ thuật phần mềm, phát triển trò chơi, tự động hóa… Sẽ rất khó […]
Python dùng để làm gì? Top 5 ngành cần Python

Python dùng để làm gì? Top 5 ngành cần Python

Python không còn là cái tên xa lạ với các bạn yêu công nghệ. Với Python, bạn có thể thử ứng dụng lập trình vào cuộc sống. Hay đơn giản là có thiên hướng trở thành lập trình viên. Nhưng Python dùng để làm gì? Và Python đóng vai trò gì trong cuộc sống chúng […]
Học Python ở đâu? – 5 Website miễn phí tốt nhất

Học Python ở đâu? – 5 Website miễn phí tốt nhất

Python đang trở thành nguồn động lực lớn cho nhiều người học lập trình. Với kiến thức từ Python, bạn có thể xây dựng, phát triển website, viết các ứng dụng web sử dụng Django,… Nhưng học Python ở đâu sẽ giúp bạn có thể “thành thục” Python nhanh nhất? Nếu bạn đang có mong […]