Think Python, ấn bản thứ 3
(allendowney.github.io)- Đây là sách nhập môn Python dành cho người mới học lập trình hoặc từng gặp khó khăn khi học trước đây; có thể đặt mua bản in ấn bản thứ 3 và ebook
- Toàn bộ sách ở dạng Jupyter notebook, cho phép đọc văn bản, chạy code và làm bài tập trong cùng một luồng
- Notebook của từng chương có thể chạy trực tiếp trên Colab, giúp dễ bắt đầu học mà không cần cài đặt riêng
- Ấn bản thứ 3 sắp xếp lại luồng học thông qua việc chỉnh sửa nội dung, điều chỉnh thứ tự một số chương và mở rộng bài tập
- Các gợi ý sử dụng ChatGPT và Colab AI ở cuối chương được dùng như phương tiện hỗ trợ để nhận thêm giải thích và trợ giúp bài tập tại những điểm bị vướng
Sách nhập môn Python cho người mới bắt đầu
- Think Python là sách nhập môn Python dành cho người lần đầu tiếp cận lập trình, hoặc những người từng thử học nhưng gặp khó khăn
- Bản in ấn bản thứ 3 và ebook có thể đặt mua trên Bookshop.org và Amazon
- Trang landing page của sách từ Green Tea Press có tại Think Python 3rd Edition
- Ấn bản thứ 3 tổ chức toàn bộ sách dưới dạng Jupyter notebook, xử lý văn bản, code có thể chạy và bài tập ở cùng một nơi
- Notebook có thể chạy trên Colab, giảm gánh nặng cài đặt
- Nội dung đã được chỉnh sửa đáng kể và thứ tự một số chương được sắp xếp lại
- Có thêm nhiều bài tập hơn
- Cuối mỗi chương có phần hướng dẫn cách dùng ChatGPT và Colab AI cho việc học và giải bài tập
Notebook Colab và tài liệu dùng cho lớp học
-
Notebook theo chương
- Toàn bộ notebook được cung cấp thành 19 chương
- Chương 1: Programming as a way of thinking — Chạy trên Colab
- Chương 2: Variables and Statements — Chạy trên Colab
- Chương 3: Functions — Chạy trên Colab
- Chương 4: Functions and Interfaces — Chạy trên Colab
- Chương 5: Conditionals and Recursion — Chạy trên Colab
- Chương 6: Return Values — Chạy trên Colab
- Chương 7: Iteration and Search — Chạy trên Colab
- Chương 8: Strings and Regular Expressions — Chạy trên Colab
- Chương 9: Lists — Chạy trên Colab
- Chương 10: Dictionaries — Chạy trên Colab
- Chương 11: Tuples — Chạy trên Colab
- Chương 12: Text Analysis and Generation — Chạy trên Colab
- Chương 13: Files and Databases — Chạy trên Colab
- Chương 14: Classes and Functions — Chạy trên Colab
- Chương 15: Classes and Methods — Chạy trên Colab
- Chương 16: Classes and Objects — Chạy trên Colab
- Chương 17: Inheritance — Chạy trên Colab
- Chương 18: Python Extras — Chạy trên Colab
- Chương 19: Final Thoughts — Chạy trên Colab
-
Tài liệu dành cho giáo viên
- Notebook có kèm lời giải có thể tải xuống từ kho GitHub ThinkPythonSolutions
- Các quiz theo từng chương và quiz tổng hợp cho toàn bộ sách được cung cấp theo yêu cầu
- Có thể đọc cách sử dụng Jupyter hiệu quả trong lớp học trong cuốn sách trực tuyến Teaching and Learning with Jupyter
- Trong lớp học dựa trên notebook, giảng viên có thể áp dụng phương thức live coding, trong đó giảng viên viết code và sinh viên làm theo trên notebook của mình
- Tài liệu đào tạo giáo viên cho giáo dục lập trình có tại Instructor Training của The Carpentries
- Notebook trống, giữ nguyên văn bản gốc nhưng loại bỏ phần lớn code, hữu ích cho bài tập làm theo bằng cách để người học điền vào chỗ trống, và được tổng hợp tại blank notebooks
1 bình luận
Các ý kiến trên Hacker News
Tin này thật sự rất đáng mừng. Khi xuất bản Practical Deep Learning for Coders dưới dạng Jupyter Notebook, tôi từng nói chuyện với Allen về việc làm một vài cuốn sách của ông ấy theo cách tương tự
Giờ việc đó thực sự đang được tiến hành, và còn tốt hơn nữa là họ đã thêm cả những công cụ thú vị như turtle dựa trên Jupyter, hiển thị đồ họa inline ngay trong notebook
Khi ra mắt, tôi nghĩ rất có thể đây sẽ là cách tốt nhất để học lập trình Python
Tôi nhớ trước đây mình cũng từng trình bày một bản proof of concept chuyển một phần ấn bản thứ 2 của cuốn này sang notebook nbdev: https://github.com/fastai/nbdev_cards/blob/master/01_deck.ip...
Notebook đó được render thành HTML này: https://fastai.github.io/nbdev_cards/deck.html
Khi học một ngôn ngữ mới bằng những thứ như AdventOfCode, việc đầu tiên của tôi luôn là tạo một image Jupyter cho ngôn ngữ đó
Think Python ấn bản 2 đã đổi hướng cuộc đời tôi. Tôi từng học một lớp Java và ghét đến mức bỏ lập trình, nhưng vài năm sau khi đang làm kỹ sư mạng, tôi gặp một vấn đề có vẻ có thể giải bằng script; tôi cầm Think Python lên và rồi mê luôn Python cũng như chính việc lập trình
Tôi đang cân nhắc chuyển hướng cuộc đời sang vai trò cộng đồng/maker/giáo viên, và có ý tưởng làm freelance/doanh nghiệp nhỏ về giảng dạy, nhưng cần tài liệu kiểu “giáo trình lỏng”
Trong thời gian làm lập trình viên web chuyên nghiệp, tôi chưa từng cần Python nên giờ mới đang học. Tôi đã dùng gần như mọi ngôn ngữ thiên về web, gồm cả Perl và Ruby
Python có vẻ là ngôn ngữ phù hợp để dạy các khái niệm chung, và có một cuốn sách để tham khảo chắc sẽ hữu ích
Vào khoảng thời gian đó, ngôn ngữ chính của nhóm được chốt là Java, và sau khi thấy lợi ích của kiểu tĩnh thì tôi không thể quay lại nữa
Về sau Python cũng đã tiến bộ nhiều nhờ hỗ trợ type tùy chọn và các IDE có thể bắt buộc dùng chúng, nhưng hiện giờ tôi hoàn toàn thiên về các ngôn ngữ kiểu tĩnh
Khi viết script tiện ích, tôi vẫn thích Python vì nó trau chuốt hơn nhiều so với chỉ dùng bash. Nhưng nếu được chọn ngôn ngữ cho một ứng dụng hoàn chỉnh, tôi sẽ thích Java/Scala hơn. Rust cũng tuyệt, nhưng đường cong học quá dốc với phần lớn người bình thường
Tôi chưa từng trực tiếp dùng type tùy chọn của Python với các công cụ như PyCharm, nên có khả năng nhờ công cụ mà trải nghiệm đã gần giống ngôn ngữ kiểu tĩnh. Nếu ai đã bật bắt buộc type cho Python trong IntelliJ Community Edition và dùng rồi, tôi muốn nghe trải nghiệm
Tôi thích Think Python và đã giới thiệu nó cho nhiều người học. Cuốn sách cân bằng rất tốt nhiều yếu tố mà một cuốn sách cho lập trình viên mới cần quan tâm
Allen Downey còn có nhiều cuốn khác với cách tiếp cận tương tự: https://greenteapress.com/wp/
Tôi nghĩ một số cuốn hơi đi quá xa theo hướng giảm độ chặt chẽ, nhưng nhìn chung những cuốn tôi đã xem đều khá tốt
Trước đây tôi từng ngồi cùng bàn với Allen tại một hội nghị, và khi tôi nói mình đã giới thiệu hoặc mua tặng sách của ông ấy thường xuyên đến mức nào, có vẻ ông ấy nghĩ tôi đang nói khoác
Xin lỗi vì hơi chuyển chủ đề, nhưng nếu đã có kinh nghiệm thực tế và đang tiếp tục tích lũy trong công việc, liệu có tài liệu chất lượng tương tự cho lập trình viên Python trung cấp/cao cấp không?
Tôi luôn có cảm giác còn những mảng lớn trong ngôn ngữ hoặc thư viện chuẩn mà mình chưa biết
https://docs.python.org/3/tutorial/index.html
https://docs.python.org/3/library/index.html
Mỗi khi có phiên bản mới, tôi đọc tài liệu What’s New
Ngoài ra tôi thích đọc mã nguồn của thư viện chuẩn và các gói bên thứ ba phổ biến. Lời khuyên này nhìn chung cũng áp dụng không chỉ cho Python mà cả khi học hoặc ôn lại một ngôn ngữ mới
Và chỉ riêng việc đọc các bài triển khai Advent of Code hằng năm của Norvig cũng thường cho tôi nhiều insight về cách viết mã Python thanh lịch và súc tích
Tác giả đăng blog về các dự án Python mới nhất, chủ yếu là các công việc phân tích dữ liệu Bayes, tại https://www.allendowney.com/blog/, và tôi thấy khá thú vị
Có những cuốn sách nào dành cho lập trình Python từ trung cấp đến nâng cao? Tôi đã biết Python và lập trình nói chung, nhưng muốn nâng cao thêm kỹ năng Python
Hiện tôi chỉ biết đến Fluent Python và CPython Internals, hai cuốn tôi đang đọc
Ví dụ, Effective Pandas 2 trình bày các mẫu phổ biến khi xử lý dữ liệu dạng bảng. Trong quá trình đó, sách dùng comprehension, lambda, unpacking, v.v., đồng thời cũng cho thấy cách refactor bằng pytest và cách tận dụng trực quan hóa để hiểu dữ liệu
Nhân tiện, tôi là tác giả
Fluent Pythonlà đủ rồi. Các tính năng ngôn ngữ còn lại thì đọc sổ tay tham chiếu chính thức là sẽ hiểuhttps://www.redblobgames.com/ cũng có rất nhiều bài viết cực kỳ dí dỏm
Đây là cuốn sách không quá nổi tiếng, nhưng khám phá nhiều phong cách lập trình để giải cùng một vấn đề dưới các ràng buộc khác nhau
Khi đã vượt qua một mức độ thành thạo nhất định, tức là trên mức người làm thực tế cơ bản, thì thứ còn lại chỉ là đọc và viết mã
Bài liên quan:
Think Python 2e - https://news.ycombinator.com/item?id=35421096 - tháng 4 năm 2023, 30 bình luận
Think Python: How to Think Like a Computer Scientist - https://news.ycombinator.com/item?id=1586000 - tháng 8 năm 2010, 9 bình luận
Thật may mắn. Tôi vừa bắt đầu mentoring Python, và tôi là một fan cuồng của Downey. Ông ấy thật sự là một nhà giáo dục xuất sắc và một con người kiểu Phục hưng
Tôi chắc chắn sẽ theo dõi cuốn sách này
Khi tôi mới học lập trình, cuốn sách này cũng đã thay đổi cuộc đời tôi. Không hẳn là chuyển hướng sự nghiệp, mà chủ yếu là cách cuốn sách được viết và cách một số khái niệm bỗng trở nên dễ hiểu đối với một người hoàn toàn mới như tôi
Giờ nhìn thấy ấn bản 3 sau 10~15 năm, tôi thấy rất hoài niệm, và có khuyên cuốn này bao nhiêu cũng không đủ
Trong ấn bản trước Think Java, tôi đặc biệt thích đoạn này: https://files.catbox.moe/v1vgdc.jpg
Một đoạn tuyệt vời khác là đây: