Đọc Sách Gì Để Có Thể Tự Tin Lập Trình Python ?

Đọc Sách Gì Để Có Thể Tự Tin Lập Trình Python ?

Hiện nay, các phương tiện truyền thông phát triển mạnh mẽ khiến cho chúng ta có nhiều điều kiện tiếp cận với tri thức hơn thông qua truyền hình, các kênh video, các khóa học online, blog... Dù có thêm nhiều sự lựa chọn nhưng lựa chọn tiếp cận thông tin, tri thức thông qua việc đọc sách chưa bao giờ là lỗi thời.

Cũng như các nguồn tài nguyên khác, sách cũng có vô vàn loại sách, có cuốn hay, cuốn dở (tùy theo người viết và thời điểm viết nữa). Bài viết này của tôi sẽ thực hiện review một số đầu sách về ngôn ngữ lập trình Python mà tôi đã đọc trong quá trình học tập và làm việc với Python. Hy vọng với những tri kiến của mình sẽ cung cấp cho các bạn một số thông tin hữu ích trước khi quyết định đọc cuốn sách nào.

Một số lưu ý trước khi có ý định đọc sách để thu nhận thêm thông tin.

Khi cầm 1 cuốn sách tiếng Anh trên tay, thông thường người Việt có thói quen bỏ qua những trang lưu ý đầu tiên của cuốn sách (phần thông tin mà các bạn đang đọc này, các bạn cũng có thể bỏ qua - nếu muốn -). Tuy nhiên, phần thông tin này lại là phần khá thú vị được chính tác giả hoặc các "bạn" của tác giả thực hiện review, đưa ra lời khuyên, lưu ý với người đọc.

Sách về chuyên ngành lập trình, thường sẽ có các bản pdf được chia sẻ trên mạng internet, nếu có thể bạn hãy mua cuốn sách đó để được tiếp cận với các nguồn source code, nhóm thảo luận, thậm chí... "tán gẫu" với tác giả về các nội dung trong sách.
Giá sách dạng sách giấy thì khá đắt so với thu nhập bình quân của người Việt Nam (thêm phí ship từ AMZ về nữa thì...). Tuy nhiên, nếu bạn sở hữu một thiết bị đọc sách kindle thì giá sách cũng không còn quá đắt nữa, việc đọc sách trên kindle cũng khá tiện lợi. Nếu có thể, hãy mua ủng hộ tác giả nhé.

Người lập trình thường phụ thuộc và dính liền với cái máy tính, cả ngày làm việc với máy tính, khi đọc sách cũng lại mở máy tính ra để đọc ebook, khi thấy một đoạn code nào đó thì lại gật gù, gật gù và nhanh tay copy/paste vào editor/IDE để thực hiện chạy và xem kết quả. Làm cách này, các bạn có thể sẽ quên ngay những gì các bạn vừa copy/paste. Hãy tự gõ các script xuất hiện trong sách, mỗi lần gõ là một lần tự trải nghiệm.

Lưu ý cuối cùng của tôi dành cho các bạn: Đã mất công cầm cuốn sách trên tay/download về máy tính thì hãy đọc nó ít nhất một lần dù chỉ là đọc lướt qua phần sumary của cuốn sách, biết đâu một lúc nào đó bạn sẽ cần dùng đến một đoạn nào đó trong sách. Đừng tích trữ sách theo kiểu "sưu tầm" sách, có hàng trăm cuốn sách trong máy tính chưa được đọc lần nào.

1. Learn Python 3 the Hard Way

Đây là một cuốn sách rất quen thuộc với nhiều bạn khi bắt đầu học tự học lập trình Python.
Đọc tên của cuốn sách, nếu không có người giới thiệu chắc một số bạn sẽ "next" để đi tìm cuốn sách khác. Nhưng tên của cuốn sách như trên vẫn chưa đầy đủ, tên phụ của nó: A Very Simple Introduction to the Terrifyingly Beautiful World of Computers and Code --> Những hướng dẫn đơn giản để đến với thế giới của máy tính và lập trình.
Các bạn có thể tìm đọc các thông tin về cuốn sách tại AMZ: https://www.amazon.com/dp/0134692888

Phần "hard" trong cuốn sách này như trên tiêu đề được tác giả đề cập đến có lẽ là yêu cầu của tác giả với các độc giả:
- Tự gõ lại toàn bộ các source code.
- Hoàn thành tất cả các bài tập.
- Tìm kiếm giải pháp mới cho mỗi bài tập.

Cuốn sách không chia ra thành các chương mà chia thành các exercise, với tổng cộng 52 exercises. Mỗi exercise là một câu chuyện dẫn dắt người đọc để thực hiện giải quyết một bài toán nào đó bằng Python thì sẽ phải cần sử dụng những lý thuyết, function gì.
Qua mỗi exercise là người đọc sẽ nắm được một phần lý thuyết, cách sử dụng các kiểu dữ liệu, cách phân tích và giải quyết bài toán. Việc còn lại của chúng ta là hiểu và gõ lại từng đoạn code vào editor/IDE. Nếu gõ xong, "chạy" mà lỗi thì chỉ có thể là lỗi typing :)).
Sau khi làm theo như tác giả cuốn sách, một số bài tập sẽ được tác giả gợi ý thêm một số phương án khác để chúng ta tự tìm thêm solution của riêng mình.
Còn gì tốt hơn việc vừa học vừa được thực hành dưới sự dẫn dắt khá là chi tiết đúng không các bạn ? Nếu để kiên nhẫn làm hết các bài tập trong cuốn sách này, các bạn sẽ không còn là "newbie" trong lập trình Python nữa.

2. Automate the Boring Stuff with Python: Practical Programming for Total Beginners

Đây là cuốn sách thứ 2 tôi đọc về Python sau khi đã đọc xong cuốn "Learn Python 3 the Hard Way" ở trên, lý do tôi đọc cuốn sách này là vì tôi cần thêm một số kinh nghiệm về việc vận dụng Python vào giải quyết các bài toán thực tế, học cách ứng dụng các thư viện Python vào các project.
Hiện tại trên AMZ, các bạn có thể thấy ấn bản thứ 2 của cuốn sách ( 2nd Edition - November 12, 2019): https://www.amazon.com/Automate-Boring-Stuff-Python-2nd/dp/1593279922. Đây là bản tiếp nối của ấn bản thứ 1 khá thành công, thành công đến mức có cả website riêng và khóa học trên udemy dựa nội dung của cuốn sách (https://automatetheboringstuff.com/).

Tại sao cuốn sách này lại được mọi người đón nhận và ủng hộ nhiều đến như vậy? Hãy nói đến nội dung của cuốn sách.
Cuốn sách được chia làm hai phần:

Lý thuyết: Với 6 chương lý thuyết cơ bản bao gồm syntax, các giải thích case by case với từng function được sử dụng, đưa ra nhiều hình vẽ minh họa cho từng trường hợp. Phần lý thuyết này phù hợp cả với những người chưa từng học ngôn ngữ lập trình nào và coi Python như một ngôn ngữ lập trình đầu tiên. Như ví dụ để giải thích cho cấu trúc điều khiển if...elif...else...dưới đây

Ngoài ra còn có 5 chương thuộc vào phần "nâng cao" hơn một chút ví dụ như làm việc với file, folder, debug,...

Thực hành: Với 9 project với mục tiêu "automation" các tác vụ nếu làm thủ công sẽ mất nhiều thời gian. Các project này chính là điểm thu hút của cuốn sách vì các tác vụ này gắn liền với khá nhiều công việc của nhiều người.
- WEB SCRAPING: Học cách sử dụng các module cho việc crawl và xử lý dữ liệu từ các trang web: webbrowser, requests, bs4, selenium
- WORKING WITH EXCEL SPREADSHEETS: Xây dựng ứng dụng cho thực hiện thao tác các tác vụ đọc/ghi/sửa/xóa dữ liệu từ các file excel bằng thư viện openpyxl
- WORKING WITH GOOGLE SHEETS: Ngoài excel trên máy tính cá nhân, nhiều nơi đã chuyển sang dùng google sheet và việc xử lý dữ liệu từ ông kẹ google cũng không làm khó được các lập trình viên Python với thư viện EZSheets
- WORKING WITH PDF AND WORD DOCUMENTS: Xây dựng ứng dụng tạo ra file pdf bằng module PyPDF2 với nhiều kiểu format, merge file, tìm kiếm dữ liệu,...

Và các project khác nữa: Working with csv files and json data; Keeping time, scheduling tasks, and launching programs; Sending email and text messages; Manipulating images; Controlling the keyboard and mouse with gui automation

Toàn những tiêu đề project "hot" và mang lại nhiều lợi ích cho người đọc, dễ dàng có thể hiểu được tại sao cuốn sách này lại hot đến như vậy :).

3. Learning Python

Đây là một cuốn sách ra đời từ khá sớm (2013), được bán trên AMZ từ rất lâu (https://www.amazon.com/Learning-Python-5th-Mark-Lutz/dp/1449355730) chính vì vậy số lượng review tiêu cực về cuốn sách này cũng khá nhiều. Cũng có thể do nó đã hơi hơi lỗi thời. Vì khi tác giả viết cuốn sách này thì đang thịnh hành là Python 2 và Python 3.x mới có trạng thái nhen nhóm. Hoặc cũng có thể số lượng trang của cuốn sách 1650 pages làm nản lòng người đọc (sách nặng quá, khó mang đi theo bên người, khó cầm vừa nằm vừa đọc)

Với số lượng trang sách gấp 3, 4 lần những cuốn sách Python khác mà chỉ tập trung vào các kiểu dữ liệu, các syntax (ở mức độ python cơ bản) nên từng đối tượng được giới thiệu vô cùng chi tiết. Sự trau chuốt của tác giả trong mỗi dòng thông tin là điểm mạnh nhất của cuốn sách này.
Ví dụ với phần binding dữ liệu a = 3 cũng được tác giả giải mất cả trang A4, tương tự với a = 3; a = b.

Tuy nhiên theo ý kiến của tôi thì trừ khi bạn có ý định trở thành một giảng viên dạy lập trình Python hoặc thực sự muốn hiểu sâu về Python thì bạn hãy đọc cuốn sách này. Nếu chỉ muốn học Python để "code for food" thì không nên mất nhiều thời gian với 1650 trang sách này, hiện nay đã có nhiều sự lựa chọn hơn thời điểm năm 2013.

4. Python Crash Course: A Hands-On, Project-Based Introduction to Programming

Cuốn này và cuốn Automate the Boring Stuff with Python cùng của nhà xuất bản No Starch Press nên hình bìa được design có nét khá giống nhau. Các bạn có thể tìm hiểu các thông tin về cuốn sách tại AMZ: https://www.amazon.com/Python-Crash-Course-2nd-Edition/dp/1593279280

Tác giả thì khác nhau nhưng phần bố cục nội dung bên trong khá giống nhau. Đầu tiên là 11 chương lý thuyết về Python cơ bản (các kiểu dữ liệu, syntax chung,...), cuốn sách này hơn cuốn Automate the Boring Stuff with Python ở chỗ có thêm chương 11 nói về testing (unit-test & test case), một phần rất quan trọng trong phát triển phần mềm.
Cuốn sách này có phiên bản một xuất bản năm 2015-2016, phiên bản 2 mới xuất bản lại vào năm 2019 (Các bạn chú ý không lại đọc nhầm sách cũ đã out of date nhé).
Phần project thực hành thì có 3 chủ đề lớn: Pygame, data visualization, web application.
Cá nhân tôi thì chỉ tham khảo mỗi Pygame để tạo ra một trò chơi chiến đấu với người ngoài hành tinh.

Phần data visualization và web application thì có vẻ như hơi ít thông tin và thực ra tôi có thể tìm những cuốn sách khác cùng nội dung nhưng được viết một cách chuyên biệt hơn nên cũng không quan tâm lắm.

5. Python Tricks: A Buffet of Awesome Python Features

Bạn có thể tìm kiếm thông tin về món buffet này tại https://www.amazon.com/Python-Tricks-Buffet-Awesome-Features-ebook/dp/B0785Q7GSY

Cuốn sách được xuất bản từ năm 2017 chứa khoảng 4x section nói về những thứ hay ho và đang ẩn dưới dạng như những "Easter Egg" (các chức năng ít được biết đến) trong Python. Bạn sẽ lần lượt trải niệm qua các section thông qua thảo luận và các ví dụ minh họa chứng minh tính đúng đắn về tốc độ thực thi hoặc sự ngắn gọn.

Như ở trang bìa của cuốn sách, đây là một món buffet, có nghĩa là bạn có thể thoải mái chọn một chapter/section bất kỳ vì mỗi section được trình bày dưới dạng các bài thảo luận và ví dụ minh họa. Việc nhảy cóc sang một section khác không làm gián đoạn hay cản trở việc đọc hiểu của bạn.

Cuốn sách này không dành cho người mới học Python có thể đọc vì bạn sẽ choáng ngợp trước các thông tin mà cuốn sách đưa ra. Khi đã có tương đối kiến thức cơ bản về Python hoặc làm một số dự án, bạn quay lại đọc cuốn sách này và biết đâu sẽ refactor được kha khá code ở các dự án đã làm.

6. Effective Python: 90 Specific Ways to Write Better Python

Cuốn sách này chứa các bài viết độc lập nhau dưới dạng gần giống như các blog-post hoặc báo cáo khoa học (article), các bài viết được viết dựa trên các hiểu biết về Python của một pythonista, với mục đích chia sẻ kinh nghiệm xử lý các vấn đề trong Python cho đến việc khai thác các "Easter Egg".
Các chủ đề có mức độ phức tạp tăng dần, bắt đầu với khái niệm đơn giản như là biết bạn đang sử dụng phiên bản Python nào hay không và kết thúc với khái niệm phức tạp như cách xác định rò rỉ bộ nhớ.
Mỗi bài viết là sự kết hợp của sample code, thảo luận và danh sách những điều cần nhớ. Ngoài ra các bài viết còn dẫn chứng đến những cuốn sách, báo cáo khoa học khác. Bạn có thể tìm hiểu sâu hơn các vấn đề dựa vào thông tin này.

Về bố cục, cuốn sách chia ra làm 8 chương lớn:

Pythonic Thinking: Giới thiệu cách thực hiện các task vụ phổ biến trong Python, cách để tối ưu, tận dụng những lợi thế của Python.
Functions: Đưa ra các cách sử dụng function hiệu quả hơn, giảm thiểu lỗi, tăng khả năng có thể tái sử dụng.
Classes and Inheritance: Phác thảo các cách làm việc hay nhất với lập trình hướng đối tượng trong Python.
....
Metaclasses and Attributes, Concurrency and Parallelism, Built-in Modules, Collaboration, Production.

Cuốn sách này tổng hợp các tri kiến, kinh nghiệm của tác giả nên nhiều đoạn theo cá nhân tôi thì nó cũng mang tính "cảm nhận" cá nhân. Tác giả cho rằng làm như thế là đúng, là hiệu quả nhưng chưa chắc áp dụng vào công việc của chúng ta đã đúng. Tuy nhiên cũng là một góc nhìn để chúng ta hoàn thiện các skill của mình.
Các bạn có thể tìm kiếm thêm thông tin về cuốn sách tại: https://www.amazon.com/Effective-Python-Specific-Software-Development/dp/0134853989


Kết

Trên đây, tôi vừa giới thiệu với các bạn 6 cuốn sách trong số những cuốn sách mà tôi đã đọc về ngôn ngữ lập trình Python để nắm vững các kiến thức cơ bản và làm quen với việc xây dựng ứng dụng.
Chúc các bạn tự tin tìm kiếm được đúng cuốn sách phù hợp với nhu cầu hiện tại của mình. Cảm ơn các bạn đã đọc bài viết.
Hẹn gặp lại các bạn vào bài viết tiếp theo về các cuốn sách liên quan đến lập trình Web trong Python (nếu bài viết hiện tại được ủng hộ nhiều star).