3 คะแนน โดย GN⁺ 2024-05-19 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • บันทึกการเรียนรู้ที่ช่วยให้เข้าใจแคลคูลัสจากหลายมุมมอง โดยใช้ ไวยากรณ์ที่เรียนรู้ง่ายของ Julia และความสามารถด้านการคำนวณกับกราฟและการทดลองเชิงตัวเลข
  • ดำเนินตามแนวคิด rule of four แบบ Harvard ที่ครอบคลุมมุมมองแบบกราฟ เชิงตัวเลข เชิงพีชคณิต และการอธิบายด้วยภาษาไปพร้อมกัน โดยใน Julia จะเน้นแสดงด้านกราฟ เชิงตัวเลข และเชิงพีชคณิตบางส่วนเป็นหลัก
  • ขณะที่ computer algebra system อย่าง Mathematica, Maple และ Sage เด่นด้านการประมวลผลเชิงสัญลักษณ์ บันทึกชุดนี้เลือกใช้ Julia เป็นเครื่องมือหลักสำหรับการคำนวณเชิงตัวเลข แล้วค่อยเสริมการจัดการเชิงพีชคณิตที่จำเป็น
  • ผู้เรียนสามารถเตรียมสภาพแวดล้อมตามคู่มือการติดตั้งและการใช้งานอินเทอร์เฟซ และใช้แพ็กเกจ CalculusWithJulia เพื่อลดความซับซ้อนของงานที่ทำซ้ำและฟังก์ชันที่ใช้ร่วมกัน
  • แต่ละหน้ามุ่งเน้นแนวคิดอย่างกระชับราวกับหนึ่งหัวข้อในหนังสือ และมี แบบฝึกหัดตรวจคำตอบได้เอง ท้ายหน้าเพื่อทบทวนแนวคิดการคำนวณที่จำเป็นสำหรับการแก้โจทย์แคลคูลัสระดับเริ่มต้น

แนวทางการเรียนแคลคูลัสด้วย Julia

  • Calculus with Julia คือชุดบันทึกสำหรับเรียน calculus ด้วยภาษา Julia
  • Julia เป็นภาษาโปรแกรมโอเพนซอร์ส และในบันทึกชุดนี้ถูกใช้เป็นเครื่องมือที่เหมาะกับการเรียนแคลคูลัสด้วย ไวยากรณ์ที่เรียนรู้ง่าย และความสามารถด้านการคำนวณ
  • มีเอกสารสำหรับการเตรียมตัวเรียนให้พร้อมใช้งานด้วย
    • Getting started with Julia: แนะนำการติดตั้ง Julia และการตั้งค่าสำหรับผู้ใช้
    • Julia interfaces: แนะนำวิธีต่าง ๆ ในการโต้ตอบกับ Julia ที่ติดตั้งไว้
  • ตั้งแต่ช่วงกลางทศวรรษ 1990 เป็นต้นมา การสอนแคลคูลัสมีแนวโน้มที่จะใช้หลายมุมมองร่วมกัน และแนวคิด “rule of four” ของ Harvard ก็สนับสนุนให้รวม องค์ประกอบแบบกราฟ เชิงตัวเลข เชิงพีชคณิต และการอธิบายด้วยภาษา ไว้ให้มากที่สุด
  • บันทึกชุดนี้จึงออกแบบมาเพื่อให้สำรวจแง่มุมเชิงกราฟและเชิงตัวเลขของแคลคูลัสผ่าน Julia รวมถึงบางครั้งก็ครอบคลุมถึงแง่มุมเชิงพีชคณิตด้วย

ความแตกต่างจากระบบพีชคณิตคอมพิวเตอร์

  • มีตัวอย่างมากมายของการนำ computer algebra system อย่าง Mathematica, Maple และ Sage มาใช้ในการเรียนแคลคูลัส
  • WolframAlpha สามารถเรียกใช้ความสามารถของ Mathematica ได้ พร้อมทั้งยอมรับไวยากรณ์แบบไม่เป็นทางการที่ยืดหยุ่น และยังอาจถูกใช้เป็นแบ็กเอนด์ของฟังก์ชันใน Apple Siri ได้ด้วย
  • ระบบเหล่านี้จำลองการเรียนรู้ด้านพีชคณิตและการประมวลผลเชิงสัญลักษณ์ได้ดี และยังมีวิธีแสดงด้านเชิงตัวเลขให้เห็นเช่นกัน
  • แต่บันทึกชุดนี้เลือกใช้ Julia เป็นหลักในฐานะ เครื่องมือคำนวณเชิงตัวเลข แล้วค่อยเพิ่มการจัดการด้านพีชคณิตและสัญลักษณ์เข้าไปบนพื้นฐานนั้น
  • แม้การทำการประมวลผลเชิงสัญลักษณ์ด้วยมือตนเองจะเป็นประโยชน์ต่อการเรียนรู้ แต่ระบบพีชคณิตคอมพิวเตอร์สามารถสร้างผลลัพธ์สำเร็จรูปได้ง่าย จนอาจทำให้การฝึกนั้นดูซ้ำซ้อน

ขอบเขตการเรียนและโครงสร้างของหน้า

  • เป้าหมายคือการใช้เทคโนโลยีเพื่อเข้าถึง แนวคิดแคลคูลัส โดยไม่ติดอยู่กับรายละเอียดเชิงกลไกของภาษาคอมพิวเตอร์
  • ไวยากรณ์ของ Julia ถูกนำเสนอว่าไม่ได้มีอุปสรรคเริ่มต้นมากไปกว่าการใช้เครื่องคิดเลขนัก แต่มีศักยภาพในการต่อยอดสูง
  • บันทึกชุดนี้จำกัดแนวคิดด้านการคำนวณให้อยู่ในชุดที่ค่อนข้างเล็ก
    • เพียงชุดนี้ก็เพียงพอสำหรับการแก้ปัญหาแคลคูลัสจำนวนมาก
    • ไม่ได้ครอบคลุมแง่มุมต่าง ๆ ของการเขียนโปรแกรมอย่างละเอียดถี่ถ้วน
    • ผู้เรียนที่สนใจมากขึ้นสามารถสำรวจต่อได้ลึกผ่าน Julia
  • ภายในชุดแนวคิดการคำนวณที่จำกัดนี้ มีโอเปอเรเตอร์ที่ย่อการคำนวณแคลคูลัสให้อยู่ในรูปการเรียกฟังก์ชัน action(function, arguments...)
  • ด้วยชุดของ action ขนาดเล็กที่นำมาประกอบกันได้ จึงสามารถจัดการโจทย์แคลคูลัสระดับต้นได้จำนวนมาก
  • แต่ละหน้าถูกจัดให้โฟกัสกับแนวคิดหนึ่งอย่างค่อนข้างชัดเจน คล้ายกับหนึ่งหัวข้อย่อยในหนังสือ
  • ท้ายหน้ามีโจทย์ให้ลองทำด้วยตนเอง และทั้งหมดมี คำตอบแบบตรวจคะแนนได้เอง จำนวนจำกัด
  • แนวคิดต่าง ๆ นำมาจาก Strang, Knill, Schey, Hass และคณะ, Rogawski และคณะ, Angenent, หน้า Wikipedia หลายหน้า และแหล่งข้อมูลอื่น ๆ

สื่อที่มีให้และวิธีใช้งาน

  • บันทึกชุดนี้มาพร้อมแพ็กเกจ Julia ชื่อ CalculusWithJulia
    • มีฟังก์ชันง่าย ๆ สำหรับลดความซับซ้อนของงานทั่วไป
    • โหลดแพ็กเกจที่เป็นประโยชน์และต้องใช้ซ้ำเป็นประจำ
  • บันทึกถูกเผยแพร่ในรูปแบบ Quarto book และสามารถดูข้อมูลเกี่ยวกับหนังสือ Quarto ได้จาก เอกสาร Quarto
  • แม้จะสามารถคอมไพล์เป็นไฟล์ PDF ด้วย Quarto ได้ แต่ต้องจัดการองค์ประกอบหลายส่วน ผลลัพธ์ก็ไม่ถึงกับเหมาะที่สุด และขนาดไฟล์ก็ค่อนข้างใหญ่
  • มี ลิงก์ดาวน์โหลดเวอร์ชัน PDF
  • สามารถมีส่วนร่วมได้ผ่านลิงก์ “Edit this page” ไม่ว่าจะเป็นการเสนอหัวข้อเพิ่มเติม แก้ข้อผิดพลาด หรือแก้คำผิด และรายชื่อผู้ร่วมแก้ไขจะถูกบันทึกไว้ใน contributors
  • สามารถติดตั้ง Julia ได้ง่ายผ่านยูทิลิตี juliaup
  • มีลิงก์ไปยังอินสแตนซ์ binder.org สำหรับรัน Julia บนเว็บด้วย แต่มีข้อจำกัดด้านทรัพยากร
    • อิมเมจที่ไม่มี SymPy
    • อิมเมจที่มี SymPy ซึ่งใช้เวลาโหลดนานกว่า

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

 
GN⁺ 2024-05-19
ความคิดเห็นจาก Hacker News
  • ลูกของผมกำลังขึ้น ม.5 และจะเรียน SVC เลยรู้สึกว่านี่เป็นแหล่งข้อมูลที่เหมาะมากเป็นการส่วนตัว
    ถ้าผู้เขียนเห็นเธรดนี้ อยากทราบว่าเหมาะกับ นักเรียนมัธยมปลายที่เคยลองเรียนแค่ Python เบื้องต้น ด้วยหรือไม่

    • ถ้านักเรียนมัธยมปลายจะเรียนแคลคูลัส ผมคิดว่าควรเรียนด้วย กระดาษกับปากกา ไปสักพักก่อนเขียนโปรแกรม
      สิ่งสำคัญคือการลงมือแก้โจทย์และคิดถึงแนวคิดพื้นฐานเอง มากกว่ากังวลเรื่องไวยากรณ์ของโค้ด และการฝึกด้วยมือจะช่วยให้ซึมซับเนื้อหาได้ดีกว่า
    • ผมคิดว่าไม่เหมาะอย่างยิ่ง
      ส่วนการเขียนโปรแกรมนั้นโอเค แต่จากที่ลองไล่ดูเร็ว ๆ คำอธิบายทางคณิตศาสตร์เขียนในลักษณะที่คนซึ่งยังไม่รู้แคลคูลัสมาก่อนจะสับสนมาก จนอาจทำให้นักเรียนรู้สึกว่าตัวเองไม่เก่งคณิต ทั้งที่จริง ๆ แล้วคำอธิบายไม่เพียงพอเท่านั้น
      ตัวอย่างเช่น รูปใน [1] เป็นกล่องแรเงารูปตัว L ที่ไม่มีแม้แต่ป้ายชื่อแกน มีเส้นโค้งผ่านอยู่ แล้วต่อด้วยการอนุมานสูตร การอินทิเกรตทีละส่วน จากสมการพาราเมตริกและการแทนค่าหลายขั้น
      แม้ในฐานะคนที่รู้จักการอินทิเกรตทีละส่วนดี วิธีอนุมานหรืออธิบายสูตรแบบนี้ก็จัดว่าแทบจะสับสนที่สุดรูปแบบหนึ่ง และถ้าไม่ใช่คนที่เข้าใจแนวคิดอยู่แล้ว รูปนั้นก็ไม่ได้ช่วยอะไรมาก
      ถ้าเคยเห็นภาพประกอบที่ยอดเยี่ยมและคำอธิบายที่ชัดเจนแบบใน “Calculus” ของ James Stewart ความต่างจะเห็นได้ชัดมาก
      ปกติคำอธิบายเรื่องการอินทิเกรตทีละส่วนจะเริ่มจากกฎอนุพันธ์ของผลคูณเหมือนผู้เขียน แต่ก่อนอื่นจะให้ลองหาอนุพันธ์ของผลคูณด้วยตัวอย่างสักสองสามข้อ เพื่อสร้างสัญชาตญาณเกี่ยวกับรูปของปฏิยานุพันธ์ของผลลัพธ์ จากนั้นจึงอินทิเกรตทั้งสองข้างและแยกอินทิกรัลเพื่ออนุมานสูตร[2]
      แบบนั้นชัดเจนและตามได้ง่ายกว่ามาก และถ้าต้องการช่วยนักเรียนจริง ๆ ก็ควรสอนวิธีแบบตาราง/วิธี “DI” ด้วย เพื่อไม่ให้ลำบากกับเรื่องเครื่องหมายเวลาต้องอินทิเกรตทีละส่วนหลายรอบ
      [1] https://jverzani.github.io/CalculusWithJuliaNotes.jl/integra...
      [2] นี่คือโน้ตการอนุมานที่ผมจดไว้ตอนเรียน ไม่ได้เขียนเพื่ออธิบายให้มือใหม่ แต่เป็นโน้ตส่วนตัว ถึงอย่างนั้นก็ยังตามได้ง่ายกว่าตัวอย่างข้างต้นมาก https://publish.obsidian.md/uncarved/3+Resources/Public/Inte...
    • ผมเรียนแคลคูลัสด้วยตัวเองตอนอายุนั้น คือเกรด 11 ตอนแรกก็ลำบากเป็นธรรมดา แต่ก็ประคองตัวมาได้ด้วยการไล่อ่านหนังสือหลายเล่มแบบครึ่ง ๆ กลาง ๆ จนเจอเล่มที่แนวคิดลงล็อกพอดี
      ดังนั้นถ้าจะแนะนำ ผมอยากบอกให้ดู Quick Calculus ของ Kleppner และ Ramsey
      ในบรรดาหนังสือที่ผมเคยใช้ ไม่มีเล่มไหนใกล้เคียงเล่มนี้ในด้านการสร้างสัญชาตญาณสำหรับแนวคิดที่เพิ่งเจอครั้งแรก
      หลังจากเข้าใจตรงนั้นแล้ว หนังสือดี ๆ เล่มไหนก็ใช้ได้ และหนังสือของ James Stewart ก็ยอดเยี่ยม แต่หนามากจนควรใช้เหมือนหนังสืออ้างอิงสำหรับเลือกอ่านและเลือกทำโจทย์ที่เหมาะสม มากกว่าจะให้ทำทุกโจทย์ตั้งแต่หน้า 1
      หัวใจคือการจับพื้นฐานให้ถูกตั้งแต่แรกว่าอนุพันธ์ อินทิกรัล และลิมิตคืออะไร ซึ่งในเรื่องนี้ Quick Calculus เหนือกว่ามาก
      ถ้านักเรียนสนใจการเขียนโปรแกรม จะเลือกแบบฝึกหัดที่เห็นว่าเหมาะจากหนังสือ Julia เล่มนี้หรือหนังสือคล้าย ๆ กันมาเสริม Stewart ก็ได้ และถ้าต้องการจะแก้ด้วย Python ก็เพียงพอแล้ว
      ผมเองก็เคยใช้ Python เขียนตัวอินทิเกรตเชิงตัวเลขและตัวหาอนุพันธ์เชิงสัญลักษณ์ตอนอายุเท่ากันเพื่อเสริมความรู้แคลคูลัส ซึ่งทั้งสองอย่างมีประโยชน์และสนุก
      โดยเฉพาะ การหาอนุพันธ์เชิงสัญลักษณ์ ให้ความรู้สึกเหมือนเวทมนตร์ แต่สุดท้ายแล้วก็คือการพาร์ส แล้วค่อย ๆ เพิ่มกฎแต่ละข้อที่เรียนจากคณิตศาสตร์เข้าไป
    • ผมคิดว่าคอร์สนี้ไม่จำเป็นต้องเคยสัมผัส Julia หรือการเขียนโปรแกรมมาก่อน
    • คำว่า “แคลคูลัส” อาจมีความหมายได้ค่อนข้างหลายแบบ และอาจต่างกันตามชั้นเรียน โรงเรียน หรือประเทศ
      แคลคูลัสที่ผมเรียนในช่วง 2 ปีสุดท้ายของมัธยมปลาย คล้ายกับชั้นปีก่อน ๆ คือเป็นการเรียนอัลกอริทึมหลายอย่างสำหรับจัดการสัญลักษณ์ ขั้นตอนที่ต้องใช้สัญชาตญาณเล็กน้อย และข้อเท็จจริงบางอย่างเกี่ยวกับความชันกับพื้นที่ เพื่อนำไปแก้โจทย์ปัญหาแบบข้อความ
      สิ่งแรกที่ได้เรียนคือกฎที่ว่าอนุพันธ์ของ x^n คือ n x^(n-1) ซึ่งเป็นส่วนหนึ่งของอัลกอริทึมการหาอนุพันธ์
      ที่มหาวิทยาลัย วิชาเดียวกันถูกเรียกว่า การวิเคราะห์เชิงคณิตศาสตร์ และเนื้อหาเป็นการนิยามแนวคิดต่าง ๆ แล้วพิสูจน์สมบัติของมัน
      โดยทั่วไปวิชาแบบนี้จะมีโครงสร้างสามส่วน ได้แก่ ลำดับ·อนุกรมและการลู่เข้าสู่ลิมิต, ความต่อเนื่องของฟังก์ชันและลิมิตของฟังก์ชัน, และอนุพันธ์กับอินทิกรัล รวมถึงอาจมีบางส่วนของทฤษฎีบท Taylor
      ตั้งแต่ Cauchy นำคำนิยามแบบ “สมัยใหม่” จำนวนมากมาใช้ในตำราเรียน โครงสร้างนี้ก็แทบไม่เปลี่ยนไปมากนัก ข้อยกเว้นที่ชัดเจนคือเรื่องอินทิกรัลที่รู้จักกันในชื่ออินทิกรัลของ Riemann
      ผมไม่รู้ว่าคอร์สนี้เป็นแบบไหน แต่เริ่มจากลิมิตจึงอาจใกล้เคียงแบบหลัง และถ้าเป็นเช่นนั้นก็ไม่แน่ใจว่า Julia จะมีประโยชน์แค่ไหน
      สิ่งสำคัญเวลา vurder ว่าเหมาะสมหรือไม่ ดูเหมือนจะไม่ใช่การเขียนโปรแกรม แต่เป็นข้อเท็จจริงที่ว่าอาจต้องการ วุฒิภาวะทางคณิตศาสตร์
      ในที่นี้ วุฒิภาวะทางคณิตศาสตร์หมายถึงความสามารถในการจัดการกับคำนิยามที่แม่นยำและแนวคิดนามธรรม โดยไม่ดึงข้อสรุปผิด ๆ ออกมามากมาย และสามารถตามข้อโต้แย้งในรูปแบบของการพิสูจน์ทางคณิตศาสตร์ได้
  • ผมลองเปิดอ่านหนังสือผ่าน ๆ หลายส่วนแล้วรู้สึกว่าน่าสนใจ และคิดว่าอาจแนะนำให้เด็ก ๆ เรียนแคลคูลัสด้วยวิธีแบบนี้ได้
    แต่ก็สงสัยประโยคในย่อหน้าแรกของคำนำที่ว่า “Julia เป็นภาษาโปรแกรมมิงโอเพนซอร์สที่มีไวยากรณ์เรียนรู้ง่าย และเหมาะกับงานนี้”
    ทำไม Julia ถึงเหมาะกว่าภาษาอื่น?

    • Julia มีข้อดีเล็ก ๆ หลายอย่างที่เป็นประโยชน์กับคณิตศาสตร์
      ถ้าวางสเกลาร์ไว้หน้าตัวแปรเหมือนสัญกรณ์คณิตศาสตร์มาตรฐาน จะถือเป็นการคูณโดยนัย เช่น ถ้า x เป็น 2 แล้ว 3x จะประเมินค่าเป็น 6
      การรองรับ Unicode ก็ครบครันมาก ตัวดำเนินการอย่าง ∈ และ ∉ อาจดูเกินไปนิด แต่ทำงานได้อย่างที่คาดไว้, π ถูกนิยามไว้ล่วงหน้าและถึงขั้นเป็นชนิดข้อมูลจำนวนอตรรกยะ, และ √ ก็ใช้เป็นตัวดำเนินการได้ ทำให้ √2 เป็นนิพจน์ที่ถูกต้องและได้ค่าแบบทศนิยมลอยตัว
      Julia ไม่เพียงรองรับไวยากรณ์แบบนี้ แต่ยังมีวิธีให้ป้อนอักขระเหล่านี้ได้ง่ายด้วย
      แม้จะเกี่ยวกับแคลคูลัสน้อยกว่านิดหน่อย แต่เวกเตอร์และเมทริกซ์เป็น ชนิดข้อมูลชั้นหนึ่ง จึงพิมพ์และอ่านด้วยตาได้ง่ายกว่า Python มาก
      เป็นความต่างระหว่าง m = [1 2 3; 4 5 6; 7 8 9] กับ m = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
      ทรานสโพสทำได้ด้วยตัวดำเนินการอักขระเดียวคือ ', ผลคูณภายในทำได้ด้วยตัวดำเนินการจุด m ⋅ n, และ A\b ก็ทำงานเหมือน Matlab
      นอกจากนี้ยังรองรับ broadcasting และมี comprehension ด้วย แต่โดยส่วนตัวแล้วเพราะมี broadcasting จึงแทบไม่ต้องใช้ comprehension เท่าไร
      จำนวนตรรกยะก็มีในตัว และใช้ไวยากรณ์ที่เรียบง่ายมากอย่าง 1//2
    • เพราะ Julia เป็นภาษาที่ถูกสร้างมาเพื่อ การวิเคราะห์เชิงตัวเลข
      “คู่แข่ง” หลักอย่าง Python ขึ้นชื่อว่าไวยากรณ์สำหรับการดำเนินการทางคณิตศาสตร์ไม่ดีนัก, การรองรับคณิตศาสตร์ในไลบรารีมาตรฐานก็น้อย, ระบบชนิดข้อมูลมีข้อจำกัด และประสิทธิภาพการรันก็แย่มาก
      Julia แก้ปัญหาเหล่านี้พร้อมกับให้ภาษาที่อ่านค่อนข้างง่าย มักคล้ายสัญกรณ์คณิตศาสตร์ และประสิทธิภาพก็ค่อนข้างดี
    • ผมก็ลองคลิกดูหลายส่วนเหมือนกัน รูปแบบและลำดับการนำเสนอของหนังสือทำให้รู้สึกสับสนนิดหน่อย แต่ ฟีเจอร์ของ Julia บางอย่างก็น่าสนใจ เช่น ความสามารถด้านสัญกรณ์แบบ postfix ที่ทำให้ใช้สัญกรณ์ลายมืออย่าง f’ และ f’’ ได้
      จากประสบการณ์ส่วนตัว “หนังสือแคลคูลัส” ที่ดีที่สุดไม่ได้ใช้ Julia แต่ใช้ Haskell และพึ่งพาแค่ไลบรารีสำหรับวาดกราฟ คือ Learn Physics with Functional Programming
      https://www.lpfp.io/
      Julia เป็นที่รู้จักในฐานะ “ภาษาโปรแกรมมิงสำหรับคณิตศาสตร์” และทิศทางนั้นเป็นตัวขับเคลื่อนการพัฒนาหลายส่วน
      ในเชิงชัดเจนคือรองรับสัญกรณ์คณิตศาสตร์จำนวนมากที่สอดคล้องกับลายมือหรือสัญลักษณ์ LaTeX
      ส่วนในเชิงแฝงน่าจะหมายถึงไวยากรณ์แบบง่ายตามสไตล์ Python, ความสามารถในการทำงานร่วมกับระบบอื่นอย่างกว้างขวาง, การใช้ SymPy ที่บทเรียนนี้มอบงานจำนวนมากให้จัดการ, primitive สำหรับการคำนวณแบบขนานในตัว, และ การคอมไพล์แบบ JIT ที่ช่วยให้วนปรับและสำรวจได้รวดเร็ว
    • ภาพรวมที่ดีอยู่ที่นี่
      https://computationalthinking.mit.edu/Spring21/
      พูดสั้น ๆ คือเป็นภาษาที่คล้าย Python ในระดับหนึ่งและเขียนง่ายเหมือนกัน แต่มีไวยากรณ์ที่แสดงคณิตศาสตร์ได้โดยตรงและหลากหลายกว่ามาก
      โน้ตบุ๊กก็มีความสามารถมากกว่า
      ความต่างสำคัญคือในโน้ตบุ๊ก Python คุณรันเซลล์ แต่โน้ตบุ๊ก Julia จะจัดการสิ่งอย่าง dependency ให้ด้วย
      ถ้าเปลี่ยน x เป็นตัวเลขหรือสไลเดอร์ สิ่งที่ขึ้นต่อกันทั้งหมดจะอัปเดต
      นิยามกราฟแล้วเพิ่มสไลเดอร์ ก็ใช้งานได้เลย
      ผมเองก็ไม่ใช่ผู้เชี่ยวชาญ Julia และส่วนใหญ่ทำงานด้วย Python กับ JavaScript แต่ในชั้นเรียนแนวคล้ายกัน สองอย่างข้างต้นเห็นได้ชัดมาก
    • Julia สืบทอด DNA ของ MATLAB มามาก เช่น ไลบรารีมาตรฐานด้านพีชคณิตเชิงเส้นและ การทำดัชนีเริ่มจาก 1
      บวกกับการรองรับ Unicode ที่ใช้กันบ่อยมาก และในหลายกรณีสามารถตั้งใจเขียนให้ดูเหมือน pseudocode ได้
  • น่าสนใจตรงที่ผมอยากเรียน ML เลยเพิ่งกลับมาเรียนคณิตศาสตร์ใหม่เมื่อเร็ว ๆ นี้ ได้แก่ พีชคณิตเชิงเส้น·แคลคูลัส·สถิติ
    ระหว่างเรียนหลายหัวข้อก็ลองทำ implementation ง่าย ๆ ด้วย Python ไปด้วย ซึ่งน่าอายที่ก่อนหน้านี้ผมไม่เคยใช้ Python มาก่อน
    การหมุนเวกเตอร์และวาดฟังก์ชันด้วย matplotlib ได้นี่ค่อนข้างดี
    วาดด้วยมือก็ได้แหละ แต่คงไม่สวยขนาดนั้น

  • เวลาจะออกแบบคอร์สแบบนี้ต้องระวังนิดหน่อย
    โดยทั่วไปมันน่าจะน่าสนใจที่สุดสำหรับคนที่รู้อยู่แล้วพอสมควรทั้ง แคลคูลัสและการเขียนโปรแกรม ส่วนคนที่เป็นกลุ่มเป้าหมายจริง ๆ คือคนที่กำลังเรียนอย่างใดอย่างหนึ่งในสองอย่างนี้ อาจยังไม่พร้อมรับคอร์สแบบนี้เท่าไร
    โดยส่วนตัว ตอนที่พยายามใส่ระบบพีชคณิตคอมพิวเตอร์ที่ค่อนข้างแปลกตาอย่าง Maxima หรือ Sagemath เข้าไปในวิชาแคลคูลัส การตอบรับก็อย่างมากแค่อุ่น ๆ
    ผมคิดว่าส่วนหนึ่งของปัญหาคือนักศึกษาปีหนึ่งไม่ค่อยสนใจติดตั้งซอฟต์แวร์เพื่อวิชาที่ไม่ใช่วิทยาการคอมพิวเตอร์
    แต่ในคอร์สระดับสูงขึ้นมาหน่อย มันอาจทำงานได้ค่อนข้างดีในฐานะส่วนเลือกเสริม และผมเคยได้ผลลัพธ์ที่ดีมากจากโปรเจกต์ Python ในวิชาสมการเชิงอนุพันธ์สามัญ
    การที่ Python ไม่ใช่ภาษากลุ่มเฉพาะก็ช่วยได้อย่างชัดเจน

    • ในการสอนสถิติก็เป็นปัญหาที่พบได้บ่อย เพราะนักศึกษาต้องเรียนทั้ง แนวคิดทางสถิติและซอฟต์แวร์สถิติ พร้อมกัน
      ถึงอย่างนั้นสุดท้ายผมคิดว่าความท้าทายนั้นก็คุ้ม และดีกว่าการให้คำนวณทุกอย่างด้วยมือแล้วไปเปิดหาค่าจากตาราง
    • ในฐานะโปรแกรมเมอร์ที่เรียนเองและไม่ได้เรียนเกินพีชคณิต เนื้อหานี้ดูดีมาก และผมอาจเป็นกลุ่มเป้าหมายเล็ก ๆ กลุ่มนั้นพอดีก็ได้
    • ถ้าได้ผลดีจากโปรเจกต์ Python ในวิชาสมการเชิงอนุพันธ์สามัญ ผมอยากรู้ว่าใช้ตำราอะไร
      ถ้าแชร์เอกสารอ้างอิงได้ ไม่ว่าจะเป็นโน้ตบรรยาย·โค้ด·สไลด์·หนังสือ หรืออะไรก็ตาม จะดีมาก
  • เกี่ยวกับเรื่องนี้ ถ้าใช้ Emacs ก็มี แพ็กเกจ Calc ที่รองรับพีชคณิตคอมพิวเตอร์
    เมื่อเร็ว ๆ นี้ผมเผยแพร่อินเทอร์เฟซที่ทำให้ Calc ใช้ง่ายขึ้นมาก และเขียนไว้ที่นี่
    http://yummymelon.com/devnull/mathing-in-emacs-with-casual.h...

    • ถ้าเป็นผู้ใช้ Emacs ก็อาจชอบ Maxima mode ซึ่งเป็นอินเทอร์เฟซที่ทรงพลังมากสำหรับระบบพีชคณิตคอมพิวเตอร์เต็มรูปแบบ
      https://www.emacswiki.org/emacs/MaximaMode
  • ชอบแนวคิดนะ
    แต่ถ้าเนื้อหาแบบนี้ถูกสร้างขึ้นบนอะไรอย่าง MOOCulus หรือเริ่มต้นจากที่นั่น น่าจะดีกว่านี้มาก
    https://ximera.osu.edu/mooculus/calculus1
    โดยรวมแล้วผมชอบ MOOCulus มากกว่า
    ถึงอย่างนั้น Calculus with Julia ก็เพิ่มคุณค่าได้มาก
    ถ้าทั้งสองอย่างผสานรวมกันได้ไม่ทางใดก็ทางหนึ่งก็คงดี
    จุดสำคัญของ MOOCulus คือคุณภาพงานเขียนดีกว่า กระชับกว่ามาก และแบบฝึกหัดที่ผสานอยู่ในเนื้อหาช่วยให้นักศึกษาตามเนื้อหาได้อย่างละเอียด
    มันถูกใช้ในชั้นเรียนกันมาก และได้รับการขัดเกลามาค่อนข้างดีด้วย
    ถ้า fork แล้วเสริม Julia เข้าไป น่าจะเป็นการปรับปรุงครั้งใหญ่มาก และการเพิ่มตัวอย่างประยุกต์ก็น่าจะเช่นกัน

    • ลองดูเว็บไซต์แล้ว แต่ก็ยังค่อนข้างยากที่จะเข้าใจว่าควรใช้อย่างไร
      แถม “Equal or Not?” ที่คลิกเข้าไปเป็นอย่างแรกก็มีข้อผิดพลาดด้วย
  • การใช้ Maxima กับ Gnuplot ร่วมกับเอกสารที่แถมมาก็ถือว่าดีทีเดียว
    จำได้ว่าเคยมี PDF บทนำ/คู่มือสำหรับ Maxima ที่ค่อนข้างสมบูรณ์ด้วย

  • Julia จะเป็นตัวทดแทนที่ใช้ได้สำหรับคนที่เคยใช้ Matlab ไหม?

    • เป็นไปได้มากพอ
      ดูความแตกต่างโดยละเอียดได้ที่ https://docs.julialang.org/en/v1/manual/noteworthy-differenc...
    • ใช่มาก ๆ
      คล้ายกับการยื่นแก้วน้ำเย็นให้คนที่อยู่ในนรก
      ถ้ายืมคำพูดที่ Steve Jobs เคยพูดถึง iTunes สำหรับ Windows ก็คงประมาณนั้น และแน่นอนว่าตอนนั้น iTunes ยังไม่ได้กลายเป็นสภาพเละเทะอย่างที่เป็นในภายหลัง
      ผมเคารพสิ่งที่ Cleve Moler และ Matlab ทำสำเร็จอย่างมาก โดยเฉพาะการทำให้ LINPACK และ EISPACK เป็นต้นเข้าถึงได้ง่าย
      ช่วงแรก ๆ ก็พยายามอย่างมากเพื่อก้าวข้ามข้อจำกัดที่มีชนิดข้อมูลเพียงอย่างเดียวคือเมทริกซ์
      แต่ Julia ในฐานะภาษาทั่วไปสมัยใหม่ ใช้งานได้สบายกว่ามาก ขณะเดียวกันก็ยังรักษาพลังของ Matlab ไว้ได้แทบทั้งหมด
    • ใช่ในหลายแง่
      เร็วกว่ามาก โดยทั่วไปมีความสามารถที่ดีกว่าในฐานะภาษาโปรแกรม และทำ parallelization ได้ง่ายกว่ามาก
      ในฐานะคนที่เคยใช้ทั้งสองอย่างในการทำงาน ผมจะบอกว่าโดยรวมแล้วทุกวันนี้ Julia เป็นตัวเลือกที่ดีกว่า
      อย่างไรก็ตาม ภาษาอย่าง Matlab หรือ Stata มีอัลกอริทึมเดิมที่ถูกนำไป implement ไว้แล้วจำนวนมหาศาล และ Julia อาจยังไม่มี implementation ที่เทียบเท่า
      ถ้าสิ่งที่ต้องการเป็นหนึ่งในนั้น ก็มักยากที่จะหาเหตุผลไม่ให้ใช้ภาษาอื่น
      ในทางปฏิบัติ การย้ายโค้ด Matlab/Python/Stata ไป Julia โดยทั่วไปค่อนข้างง่าย
    • ใช่มาก
      โค้ด Julia ดูดีกว่าโค้ด Matlab ได้มาก และประสิทธิภาพก็ดีกว่าได้มากด้วย
    • ขึ้นอยู่กับว่าพึ่งพา MATLAB toolbox หรือฟีเจอร์ integration เฉพาะหรือไม่
      ถ้าไม่ Julia จะให้ความรู้สึกดีและเป็นตัวทดแทนที่เพียงพอ
      syntax คล้ายกันอยู่บ้าง และมีความสะดวกด้านอาร์เรย์แบบ MATLAB อยู่มาก
      นอกจากนี้ยังมีระบบชนิดข้อมูลที่ดี และจัดการการเขียนโปรแกรมทั่วไปได้ดีกว่ามาก เช่น ตำแหน่งของฟังก์ชันก็ไม่ทำตัวแปลก ๆ
      แนะนำให้ลองใช้เอง
  • ลิงก์ PDF ใน header ของหน้าเป็น 404

    • ดูเหมือนจะปิดไว้โดยตั้งใจ
      “โน้ตนี้สามารถ compile เป็นไฟล์ PDF ผ่าน Quarto ได้ เนื่องจากไฟล์ผลลัพธ์ค่อนข้างใหญ่ จึงไม่ได้提供ไฟล์สำหรับดาวน์โหลด ผู้อ่านที่สนใจสามารถดาวน์โหลด repository, instantiate environment แล้วรัน quarto ในไดเรกทอรีย่อย quarto เพื่อ render เป็น PDF จากนั้นไฟล์นั้นจะถูกสร้างขึ้น ใช้เวลาสักพัก”
  • “การคำนวณคือสิ่งยั่วยวนที่ควรต้านทานให้นานที่สุดเท่าที่จะทำได้”
    J.P. Boyd