Think Python ฉบับพิมพ์ครั้งที่ 3
(allendowney.github.io)- หนังสือ Python สำหรับผู้เริ่มต้น สำหรับคนที่เพิ่งเริ่มเรียนเขียนโปรแกรมหรือเคยเรียนมาก่อนแต่พบความยากลำบาก โดยสามารถสั่งซื้อฉบับพิมพ์ครั้งที่ 3 ทั้งแบบเล่มและอีบุ๊กได้
- หนังสือทั้งเล่มอยู่ในรูปแบบ Jupyter โน้ตบุ๊ก ทำให้อ่านเนื้อหา รันโค้ด และทำแบบฝึกหัดได้อย่างต่อเนื่องในเวิร์กโฟลว์เดียว
- โน้ตบุ๊กของแต่ละบทสามารถรันบน Colab ได้ทันที จึงเริ่มเรียนได้ง่ายโดยไม่ต้องติดตั้งอะไรเพิ่มเติม
- ฉบับพิมพ์ครั้งที่ 3 ปรับปรุงเนื้อหา จัดลำดับบางบทใหม่ และเพิ่มแบบฝึกหัด เพื่อจัดระเบียบลำดับการเรียนรู้ใหม่
- ข้อเสนอแนะการใช้ ChatGPT และ Colab AI ท้ายบททำหน้าที่เป็นเครื่องมือเสริมเพื่อขอคำอธิบายเพิ่มเติมและความช่วยเหลือกับแบบฝึกหัดเมื่อเรียนติดขัด
หนังสือ Python สำหรับผู้เริ่มต้น
- Think Python เป็นหนังสือแนะนำ Python สำหรับผู้ที่เพิ่งเริ่มต้นเขียนโปรแกรม หรือผู้ที่เคยลองมาก่อนแต่พบว่ามันยาก
- ฉบับพิมพ์ครั้งที่ 3 แบบเล่มและอีบุ๊กสามารถสั่งซื้อได้ที่ Bookshop.org และ Amazon
- หน้าหนังสือของ Green Tea Press ดูได้ที่ Think Python 3rd Edition
- ฉบับพิมพ์ครั้งที่ 3 จัดทั้งเล่มให้อยู่ในรูปแบบ Jupyter โน้ตบุ๊ก โดยรวมข้อความ โค้ดที่รันได้ และแบบฝึกหัดไว้ในที่เดียว
- โน้ตบุ๊กรันบน Colab ได้ จึงลดภาระเรื่องการติดตั้ง
- เนื้อหาหลักได้รับการปรับปรุงค่อนข้างมาก และมีการจัดลำดับบางบทใหม่
- มีแบบฝึกหัดมากขึ้น
- ท้ายแต่ละบทมีเนื้อหาเกี่ยวกับการใช้ ChatGPT และ Colab AI เพื่อช่วยการเรียนและการทำแบบฝึกหัด
โน้ตบุ๊ก Colab และสื่อสำหรับใช้สอน
-
โน้ตบุ๊กแยกตามบท
- มีโน้ตบุ๊กครบทั้ง 19 บท
- บทที่ 1: Programming as a way of thinking — รันบน Colab
- บทที่ 2: Variables and Statements — รันบน Colab
- บทที่ 3: Functions — รันบน Colab
- บทที่ 4: Functions and Interfaces — รันบน Colab
- บทที่ 5: Conditionals and Recursion — รันบน Colab
- บทที่ 6: Return Values — รันบน Colab
- บทที่ 7: Iteration and Search — รันบน Colab
- บทที่ 8: Strings and Regular Expressions — รันบน Colab
- บทที่ 9: Lists — รันบน Colab
- บทที่ 10: Dictionaries — รันบน Colab
- บทที่ 11: Tuples — รันบน Colab
- บทที่ 12: Text Analysis and Generation — รันบน Colab
- บทที่ 13: Files and Databases — รันบน Colab
- บทที่ 14: Classes and Functions — รันบน Colab
- บทที่ 15: Classes and Methods — รันบน Colab
- บทที่ 16: Classes and Objects — รันบน Colab
- บทที่ 17: Inheritance — รันบน Colab
- บทที่ 18: Python Extras — รันบน Colab
- บทที่ 19: Final Thoughts — รันบน Colab
-
สื่อสำหรับผู้สอน
- โน้ตบุ๊กที่มีเฉลยสามารถดาวน์โหลดได้จาก รีโพซิทอรี GitHub ThinkPythonSolutions
- แบบทดสอบประจำบทและแบบทดสอบสรุปทั้งเล่มมีให้ตามคำขอ
- วิธีใช้ Jupyter ในชั้นเรียนอย่างมีประสิทธิภาพ อ่านได้จากหนังสือออนไลน์ Teaching and Learning with Jupyter
- การสอนแบบใช้โน้ตบุ๊กสามารถใช้วิธี live coding ที่ผู้สอนเขียนโค้ดและให้นักเรียนทำตามในโน้ตบุ๊กของตัวเอง
- สื่อฝึกอบรมครูสำหรับการสอนเขียนโปรแกรมดูได้ที่ Instructor Training ของ The Carpentries
- โน้ตบุ๊กเปล่า ที่คงข้อความต้นฉบับไว้แต่ตัดโค้ดออกเกือบทั้งหมด เหมาะสำหรับการฝึกทำตามแบบเติมช่องว่าง และรวบรวมไว้ที่ blank notebooks
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ดีใจมากที่ได้เห็นข่าวนี้ ตอนที่เผยแพร่ Practical Deep Learning for Coders ด้วย Jupyter Notebook ผมเคยคุยกับ Allen ว่าน่าจะทำหนังสือของเขาบางเล่มด้วยวิธีเดียวกัน
ตอนนี้มันกำลังเกิดขึ้นจริงแล้ว และที่ดียิ่งกว่านั้นคือยังเพิ่มเครื่องมือเจ๋ง ๆ อย่าง turtle ที่ทำงานบน Jupyter ซึ่งแสดงกราฟิกแบบอินไลน์ในโน้ตบุ๊กได้ด้วย
ผมคิดว่าพอออกมาแล้ว มีโอกาสสูงที่จะกลายเป็น วิธีที่ดีที่สุดในการเรียนการเขียนโปรแกรมด้วย Python
จำได้ว่าเมื่อก่อนเคยโชว์ proof of concept ที่แปลงบางส่วนของหนังสือเล่มนี้ฉบับพิมพ์ครั้งที่ 2 ไปเป็น nbdev notebook: https://github.com/fastai/nbdev_cards/blob/master/01_deck.ip...
โน้ตบุ๊กนั้นถูกเรนเดอร์เป็น HTML นี้: https://fastai.github.io/nbdev_cards/deck.html
เวลาจะเรียนภาษาใหม่ด้วยอะไรอย่าง AdventOfCode งานแรกของผมมักเป็นการสร้าง Jupyter image สำหรับภาษานั้นเสมอ
Think Python ฉบับพิมพ์ครั้งที่ 2 เปลี่ยนทิศทางชีวิตผม ผมเคยลงเรียน Java วิชาหนึ่งแล้วเกลียดมันมากจนเลิกคิดจะเขียนโปรแกรม แต่หลายปีต่อมา ตอนทำงานเป็นวิศวกรเครือข่าย มีปัญหาหนึ่งที่ดูเหมือนจะแก้ด้วยสคริปต์ได้ ผมเลยหยิบ Think Python มาอ่าน แล้วก็หลงรักทั้ง Python และการเขียนโปรแกรมเอง
ผมกำลังคิดจะเปลี่ยนทิศทางชีวิตไปทางบทบาท ชุมชน/เมกเกอร์/ครู และมีไอเดียฟรีแลนซ์/ธุรกิจขนาดเล็กสำหรับงานสอน แต่ต้องการสื่อที่เป็น “หลักสูตรแบบหลวม ๆ”
ระหว่างทำงานเป็นนักพัฒนาเว็บมืออาชีพ ผมไม่เคยจำเป็นต้องใช้ Python เลย ตอนนี้จึงกำลังเรียนอยู่ ผมเคยใช้ภาษาที่เน้นเว็บมาแทบทั้งหมด รวมถึง Perl และ Ruby
Python ดูเป็นภาษาที่เหมาะสำหรับสอนแนวคิดทั่วไป และถ้ามีหนังสือใช้อ้างอิงก็น่าจะช่วยได้
ช่วงนั้นภาษาหลักของทีมถูกกำหนดให้เป็น Java และหลังจากได้เห็นข้อดีของ static typing แล้ว ผมก็กลับไปไม่ได้อีก
หลังจากนั้น Python ก็พัฒนาขึ้นมากด้วยการรองรับ type แบบเลือกใช้ได้และ IDE ที่ช่วยบังคับใช้ แต่ตอนนี้ผมเอนเอียงไปทางภาษาที่มี static type อย่างเต็มตัวแล้ว
เวลาสร้าง utility script ผมยังชอบ Python ที่ขัดเกลากว่าใช้แค่ bash มาก แต่ถ้าเลือกภาษาเพื่อทำแอปพลิเคชันที่สมบูรณ์ได้ ผมจะชอบ Java/Scala ฯลฯ มากกว่า Rust ก็ยอดเยี่ยม แต่ learning curve ชันเกินไปสำหรับคนทั่วไปส่วนใหญ่
ผมยังไม่เคยลองใช้ optional typing ของ Python ที่เครื่องมืออย่าง PyCharm รองรับเอง จึงเป็นไปได้ว่าเครื่องมือช่วยให้ประสบการณ์ใกล้เคียงกับภาษาที่มี static type แล้ว ถ้าใครเคยเปิดใช้การบังคับ type ของ Python ใน IntelliJ Community Edition ก็อยากฟังประสบการณ์
ผมชอบ Think Python และแนะนำให้ผู้เรียนหลายคนมาตลอด หนังสือสำหรับโปรแกรมเมอร์หน้าใหม่ต้องคำนึงถึงหลายปัจจัย และเล่มนี้บาลานซ์ได้ดีมาก
Allen Downey ยังมีหนังสือแนวทางคล้ายกันอีกหลายเล่ม: https://greenteapress.com/wp/
บางเล่มผมมองว่าไปไกลเกินไปนิดในแง่ลดความเคร่งครัดลง แต่โดยรวมหนังสือที่ผมได้ดูมาก็ค่อนข้างดี
ครั้งหนึ่งผมเคยนั่งโต๊ะเดียวกับ Allen ในงานประชุม พอบอกเขาว่าผมแนะนำหรือซื้อหนังสือของเขาให้คนอื่นบ่อยแค่ไหน เขาดูเหมือนคิดว่าผมคุยโม้
ขอเปลี่ยนประเด็นนิดหน่อย แต่ถ้ามีประสบการณ์ภาคปฏิบัติอยู่แล้วและกำลังสะสมเพิ่มระหว่างทำงาน มีสื่อคุณภาพใกล้เคียงกันสำหรับ นักพัฒนา Python ระดับกลาง/สูง ไหม?
ผมรู้สึกเหมือนมีส่วนใหญ่ ๆ ของภาษาหรือ standard library ที่ผมยังไม่รู้อยู่เสมอ
https://docs.python.org/3/tutorial/index.html
https://docs.python.org/3/library/index.html
ทุกครั้งที่มีเวอร์ชันใหม่ ผมจะอ่านเอกสาร What’s New
นอกจากนั้น ผมชอบอ่าน ซอร์สโค้ด ของ standard library และแพ็กเกจ third-party ยอดนิยม คำแนะนำนี้ใช้ได้โดยทั่วไปไม่ใช่แค่กับ Python แต่ยังรวมถึงตอนเรียนภาษาใหม่หรือกลับมาทบทวนภาษาหนึ่งอีกครั้งด้วย
และแค่อ่าน implementation Advent of Code ประจำปีของ Norvig ก็มักได้ insight เกี่ยวกับการเขียน โค้ด Python ที่สง่างามและกระชับ
ผู้เขียนมักเขียนบล็อกเกี่ยวกับโปรเจกต์ Python ล่าสุด โดยส่วนใหญ่เป็นงานด้าน การวิเคราะห์ข้อมูลแบบเบย์เซียน ไว้ที่ https://www.allendowney.com/blog/ ซึ่งผมอ่านแล้วค่อนข้างสนุก
มีหนังสืออะไรบ้างสำหรับการเขียนโปรแกรม Python ระดับกลางถึงขั้นสูง? ผมรู้ Python และการเขียนโปรแกรมทั่วไปอยู่แล้ว แต่อยากพัฒนา ทักษะ Python ให้ดียิ่งขึ้น
ตอนนี้รู้จักแค่ Fluent Python ที่กำลังอ่านอยู่ กับ CPython Internals
ตัวอย่างเช่น Effective Pandas 2 แสดงรูปแบบที่พบบ่อยในการจัดการ ข้อมูลแบบตาราง ระหว่างนั้นก็ใช้ comprehension, lambda, unpacking ฯลฯ และยังแสดงวิธี refactor ด้วย pytest รวมถึงการใช้ visualization เพื่อทำความเข้าใจข้อมูลด้วย
อนึ่ง ผมเป็นผู้เขียนเอง
Fluent Pythonก็เพียงพอแล้ว ฟีเจอร์ภาษาที่เหลืออ่าน คู่มืออ้างอิงอย่างเป็นทางการ ก็จะเข้าใจได้ที่ https://www.redblobgames.com/ ก็มีบทความเฉียบ ๆ อยู่มาก
เป็นหนังสือที่ไม่ค่อยเป็นที่รู้จัก แต่สำรวจ สไตล์การเขียนโปรแกรมหลายแบบ ในการแก้ปัญหาเดียวกันภายใต้ข้อจำกัดที่แตกต่างกัน
เมื่อมีความชำนาญระดับหนึ่ง คือพ้นระดับผู้ปฏิบัติงานพื้นฐานไปแล้ว สิ่งที่เหลือก็มีแค่ การอ่านและเขียนโค้ด เท่านั้น
บทความที่เกี่ยวข้อง:
Think Python 2e - https://news.ycombinator.com/item?id=35421096 - เมษายน 2023, ความคิดเห็น 30 รายการ
Think Python: How to Think Like a Computer Scientist - https://news.ycombinator.com/item?id=1586000 - สิงหาคม 2010, ความคิดเห็น 9 รายการ
โชคดีจริง ๆ ผมเพิ่งเริ่มเมนเทอร์ Python และผมเป็นแฟนตัวยงของ Downey เขาเป็น นักการศึกษาที่ยอดเยี่ยมและบุคคลแบบเรอเนซองส์ จริง ๆ
ผมจะคอยติดตามหนังสือเล่มนี้แน่นอน
ตอนที่ผมเริ่มเรียนเขียนโปรแกรม หนังสือเล่มนี้ก็เปลี่ยนชีวิตผมเหมือนกัน ไม่ใช่ในแง่เปลี่ยนอาชีพเท่าไร แต่เป็นวิธีที่หนังสือเขียนขึ้น และแนวคิดบางอย่างที่ทำให้คนมือใหม่สุด ๆ อย่างผมเข้าใจขึ้นมาอย่างฉับพลัน
ตอนนี้มาเห็นฉบับพิมพ์ครั้งที่ 3 หลังจาก 10–15 ปี ก็รู้สึกคิดถึงมาก และหนังสือเล่มนี้แนะนำเท่าไรก็ไม่เกินไป
ใน Think Java ฉบับก่อน ผมชอบข้อความนี้เป็นพิเศษ: https://files.catbox.moe/v1vgdc.jpg
อีกส่วนที่ยอดเยี่ยมก็คือส่วนนี้: