2 คะแนน โดย GN⁺ 2024-02-17 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • หนังสือ 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 และสื่อสำหรับใช้สอน

  • โน้ตบุ๊กแยกตามบท

  • สื่อสำหรับผู้สอน

    • โน้ตบุ๊กที่มีเฉลยสามารถดาวน์โหลดได้จาก รีโพซิทอรี GitHub ThinkPythonSolutions
    • แบบทดสอบประจำบทและแบบทดสอบสรุปทั้งเล่มมีให้ตามคำขอ
    • วิธีใช้ Jupyter ในชั้นเรียนอย่างมีประสิทธิภาพ อ่านได้จากหนังสือออนไลน์ Teaching and Learning with Jupyter
    • การสอนแบบใช้โน้ตบุ๊กสามารถใช้วิธี live coding ที่ผู้สอนเขียนโค้ดและให้นักเรียนทำตามในโน้ตบุ๊กของตัวเอง
    • สื่อฝึกอบรมครูสำหรับการสอนเขียนโปรแกรมดูได้ที่ Instructor Training ของ The Carpentries
    • โน้ตบุ๊กเปล่า ที่คงข้อความต้นฉบับไว้แต่ตัดโค้ดออกเกือบทั้งหมด เหมาะสำหรับการฝึกทำตามแบบเติมช่องว่าง และรวบรวมไว้ที่ blank notebooks

1 ความคิดเห็น

 
GN⁺ 2024-02-17
ความคิดเห็นจาก 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

    • ผมชอบ Think Bayes กับ Think Stats มาก แต่ตอนที่คนอื่น ๆ ต่างใช้โน้ตบุ๊กกัน มันก็รู้สึกเหมือนไม่ค่อยเข้ากันนิดหน่อย
      เวลาจะเรียนภาษาใหม่ด้วยอะไรอย่าง AdventOfCode งานแรกของผมมักเป็นการสร้าง Jupyter image สำหรับภาษานั้นเสมอ
    • โค้ดที่ซ่อนได้ แบบนี้ดูเหมาะมากสำหรับงานเอกสาร ผมหาอะไรแบบนี้มาสักพักแล้ว
  • Think Python ฉบับพิมพ์ครั้งที่ 2 เปลี่ยนทิศทางชีวิตผม ผมเคยลงเรียน Java วิชาหนึ่งแล้วเกลียดมันมากจนเลิกคิดจะเขียนโปรแกรม แต่หลายปีต่อมา ตอนทำงานเป็นวิศวกรเครือข่าย มีปัญหาหนึ่งที่ดูเหมือนจะแก้ด้วยสคริปต์ได้ ผมเลยหยิบ Think Python มาอ่าน แล้วก็หลงรักทั้ง Python และการเขียนโปรแกรมเอง

    • นี่คือสิ่งที่ผมต้องอ่านพอดีตอนนี้
      ผมกำลังคิดจะเปลี่ยนทิศทางชีวิตไปทางบทบาท ชุมชน/เมกเกอร์/ครู และมีไอเดียฟรีแลนซ์/ธุรกิจขนาดเล็กสำหรับงานสอน แต่ต้องการสื่อที่เป็น “หลักสูตรแบบหลวม ๆ”
      ระหว่างทำงานเป็นนักพัฒนาเว็บมืออาชีพ ผมไม่เคยจำเป็นต้องใช้ Python เลย ตอนนี้จึงกำลังเรียนอยู่ ผมเคยใช้ภาษาที่เน้นเว็บมาแทบทั้งหมด รวมถึง Perl และ Ruby
      Python ดูเป็นภาษาที่เหมาะสำหรับสอนแนวคิดทั่วไป และถ้ามีหนังสือใช้อ้างอิงก็น่าจะช่วยได้
    • ในมุมกลับกัน ผมเริ่มจาก bash/Perl แล้วขยับไป Python ตอนแรกก็ดีมาก แต่ dynamic typing เริ่มทำให้เกิดปัญหา
      ช่วงนั้นภาษาหลักของทีมถูกกำหนดให้เป็น 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 ก็อยากฟังประสบการณ์
    • ผมก็คล้ายกัน เคยเรียน Java, Matlab, C, Perl มานิดหน่อย แต่พออ่าน Think Python ฉบับพิมพ์ครั้งที่ 2 ถึงได้ติดจริง ๆ จากนั้นอ่านหนังสือหลายเล่มและย้ายมาเป็น สายอาชีพซอฟต์แวร์
    • ผมก็เหมือนกัน ตอนย้ายเมืองและกำลังหางาน ผมพิมพ์หนังสือเล่มนี้ออกมาแล้วเริ่มอ่านทีละบท และเพราะหนังสือเล่มนี้ผมจึงได้เป็น วิศวกรซอฟต์แวร์
    • หลังผ่านคลาส C++ คลาส Java และอื่น ๆ มาแล้วก็ยังไม่เข้าใจ การเขียนโปรแกรมเชิงวัตถุ แต่ Think Python ทำให้ผมเข้าใจมันอย่างถูกต้องเป็นครั้งแรก
  • ผมชอบ Think Python และแนะนำให้ผู้เรียนหลายคนมาตลอด หนังสือสำหรับโปรแกรมเมอร์หน้าใหม่ต้องคำนึงถึงหลายปัจจัย และเล่มนี้บาลานซ์ได้ดีมาก
    Allen Downey ยังมีหนังสือแนวทางคล้ายกันอีกหลายเล่ม: https://greenteapress.com/wp/
    บางเล่มผมมองว่าไปไกลเกินไปนิดในแง่ลดความเคร่งครัดลง แต่โดยรวมหนังสือที่ผมได้ดูมาก็ค่อนข้างดี
    ครั้งหนึ่งผมเคยนั่งโต๊ะเดียวกับ Allen ในงานประชุม พอบอกเขาว่าผมแนะนำหรือซื้อหนังสือของเขาให้คนอื่นบ่อยแค่ไหน เขาดูเหมือนคิดว่าผมคุยโม้

    • ลูกชายของเพื่อนกำลังอยู่ปีสุดท้ายในมหาวิทยาลัย และอาจจะไปเรียนที่ Olin ซึ่งผมเป็นคนแนะนำ ผมรู้จัก Olin ก็เพราะ Think Python นี่แหละ
  • ขอเปลี่ยนประเด็นนิดหน่อย แต่ถ้ามีประสบการณ์ภาคปฏิบัติอยู่แล้วและกำลังสะสมเพิ่มระหว่างทำงาน มีสื่อคุณภาพใกล้เคียงกันสำหรับ นักพัฒนา Python ระดับกลาง/สูง ไหม?
    ผมรู้สึกเหมือนมีส่วนใหญ่ ๆ ของภาษาหรือ standard library ที่ผมยังไม่รู้อยู่เสมอ

    • ผมเริ่มเรียนจากเอกสารทางการตั้งแต่ Python 1.5.2 และตอนนี้ก็ยังคิดว่าเป็นแหล่งข้อมูลที่ดี
      https://docs.python.org/3/tutorial/index.html
      https://docs.python.org/3/library/index.html
      ทุกครั้งที่มีเวอร์ชันใหม่ ผมจะอ่านเอกสาร What’s New
      นอกจากนั้น ผมชอบอ่าน ซอร์สโค้ด ของ standard library และแพ็กเกจ third-party ยอดนิยม คำแนะนำนี้ใช้ได้โดยทั่วไปไม่ใช่แค่กับ Python แต่ยังรวมถึงตอนเรียนภาษาใหม่หรือกลับมาทบทวนภาษาหนึ่งอีกครั้งด้วย
    • Effective Python ดีมาก เป็น หนังสือรูปแบบทิป ที่มีคำแนะนำพร้อม use case และตัวอย่างการประยุกต์ใช้
    • Fluent Python เป็นหนังสือที่ดีสำหรับระดับนั้น และเหมาะจะใช้เป็นหนังสืออ้างอิงระหว่างทำงานด้วย
    • ผมชอบ https://effectivepython.com/
      และแค่อ่าน implementation Advent of Code ประจำปีของ Norvig ก็มักได้ insight เกี่ยวกับการเขียน โค้ด Python ที่สง่างามและกระชับ
    • Fluent Python กับ Effective 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/ ก็มีบทความเฉียบ ๆ อยู่มาก
    • Exercises in Programming Style ฉบับพิมพ์ครั้งที่ 2 ของ Cristina Videira Lopes ก็น่าสนใจ
      เป็นหนังสือที่ไม่ค่อยเป็นที่รู้จัก แต่สำรวจ สไตล์การเขียนโปรแกรมหลายแบบ ในการแก้ปัญหาเดียวกันภายใต้ข้อจำกัดที่แตกต่างกัน
    • สุดท้ายก็เป็นเอกสารกับซอร์สโค้ดไม่ใช่หรือ?
      เมื่อมีความชำนาญระดับหนึ่ง คือพ้นระดับผู้ปฏิบัติงานพื้นฐานไปแล้ว สิ่งที่เหลือก็มีแค่ การอ่านและเขียนโค้ด เท่านั้น
  • บทความที่เกี่ยวข้อง:
    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
    อีกส่วนที่ยอดเยี่ยมก็คือส่วนนี้:

    สิ่งที่เกิดขึ้นต่อมาคือส่วนที่ยอดเยี่ยม Jeff Elkner ครูมัธยมในเวอร์จิเนียได้นำหนังสือ [Think Java] ของผมไปใช้ และแปลเป็น Python เขาส่งฉบับแปลมาให้ผม และผมก็ได้มีประสบการณ์แปลกประหลาดในการเรียน Python ด้วยการอ่านหนังสือของตัวเอง