Haskell เก่งในการสอนพื้นฐานคณิตศาสตร์หรือไม่?


19

ฉันมีส่วนร่วมในการสอนคณิตศาสตร์ให้กับชั้นเรียนที่มีข้อกำหนดเช่น AS และข้อกำหนดคณิตศาสตร์ระดับ

ปกติหนังสือเรียนจะให้ตัวอย่างของซอฟต์แวร์คอมพิวเตอร์ที่ใช้กับงานคณิตศาสตร์ แต่โดยทั่วไปจะใช้ซอฟต์แวร์ประยุกต์เช่น mathlab, mathematica หรือ derive

แม้ว่าจะใช้ภาษาการเขียนโปรแกรมจริงมันเป็นภาษาที่ใช้กันทั่วไปเช่น Pascal และนี่เป็นเรื่องน่าเศร้าในความคิดของฉัน

เพราะ Haskell มีชื่อเสียงด้านความรู้สึกของเขาเกี่ยวกับคณิตศาสตร์และเนื่องจากฉันสนใจมันเช่นกันฉันอยากถามว่า Haskell เป็นตัวเลือกที่ดีสำหรับวิธีการออกกำลังกายแบบขยายสำหรับนักเรียนชั้นปีแรกของมหาวิทยาลัยหรือไม่ วิชาทั่วไปคือฟังก์ชั่น, caclulus, ข้อ จำกัด , แต่ยังรวมถึงพีชคณิตเชิงเส้นเช่น

ฉันมีประสบการณ์ความรู้ระดับกลางในการเขียนโปรแกรม (c #, ruby, powershell, javascript, tex) และยังได้เข้าหาการเขียนโปรแกรมการทำงานกับ XSLT แล้ว

คำตอบจะถูกปรับปรุงอย่างมีความรับผิดชอบ คำตอบที่ละเอียดรวมถึงตัวอย่างพื้นฐานของรหัส Haskell ที่นำไปใช้กับคณิตศาสตร์เช่นพีชคณิตเชิงเส้น (เช่นพื้นที่เวกเตอร์), ชื่อพหุนาม, การแก้สมการเชิงเส้นเป็นที่นิยมอย่างมากและมีเป้าหมายเป็นสิ่งที่ต้องการ


3
ลองอ่านหนังสือเล่มนี้: collegepublications.co.uk/computing/?00004
Fred Foo

@larsmans: ขอบคุณ นั่นเป็นจุดเริ่มต้นที่ดีแน่นอน ฉันสนใจคณิตศาสตร์เชิงปฏิบัติมากขึ้นเช่นความแตกต่างขีด จำกัด อินทิกรัล
Emiliano Poggi

ฉันไม่เห็นว่า Mathematica ไม่ใช่ภาษาโปรแกรมจริงหรือไม่ เมื่อฉันมีปัญหาทางคณิตศาสตร์ฉันมักจะใช้มันเป็นครั้งแรก (ทั้งคู่) และจากนั้นเปลี่ยนเป็นภาษาอื่น หากการมุ่งเน้นเรื่องคณิตศาสตร์นั้นฉันไม่เห็นเหตุผลว่าทำไมภาษาคณิตศาสตร์พิเศษไม่เหมาะ
edA-qa mort-ora-y

@edA: Mathematica! = ระดับแปดเสียง! Octave เป็นโคลน Matlab ผู้ที่ใช้ทั้งคู่บอกฉัน Matlab / Octave นั้นมุ่งเน้นไปที่ตัวเลขมากกว่า (อาร์เรย์ขนาดใหญ่ FFT ฯลฯ ) ในขณะที่ Mathematica ดีกว่าสำหรับการจัดการเชิงสัญลักษณ์ FOSS ที่ใกล้เคียงที่สุดกับ Mathematica น่าจะเป็น Maxima (ชื่อเดิมคือ Macsyma)
timday

@ ทุกวันใช่ฉันรู้ Octave! = Mathematica แต่ภาษารหัสเหมือนกัน ฉันยังใช้ Maxima สำหรับการจัดการเชิงสัญลักษณ์
edA-qa mort-ora-y

คำตอบ:


9

Haskell ได้รับความนิยมเพิ่มขึ้นในหมู่นักคณิตศาสตร์ ในฐานะที่เป็นหนึ่งใน Blogger

"หลังจากที่ฉันเกี่ยวข้องกับตัวเองในเรื่องสิ่งหนึ่งที่โดดเด่นคือระยะทางที่ค่อนข้างต่ำระหว่างความคิดที่แสดงออกในวาทกรรมทางคณิตศาสตร์ประจำวันของฉันและความคิดที่แสดงออกในรหัส Haskell"

ดังนั้นนี่คือบางมุมมองที่รวบรวมไว้ซึ่งฉันรู้สึกว่าคุณไม่สามารถผิดวิธีการนี้ได้

ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่

สุดท้าย


1
เมื่ออ่านลิงค์ของคุณแล้วฉันไม่สามารถบอกได้เลยว่าฉันมั่นใจเกินไป มีตัวอย่างจริง ๆ ของใครบางคนนั่งลงสำหรับเซสชั่น Haskell และทำงานเหมือนคุณสามารถ Mathematica / Maxima? นอกจากนี้บล็อก "11 เหตุผล" ชี้ให้เห็นว่าห้องสมุดมาตรฐานยุ่งเหยิงอะไรจากมุมมองของนักคณิตศาสตร์และดูรายการของแพ็คเกจคณิตศาสตร์ที่ฉันเห็นตัวเลขจำนวนมาก (เช่น blas, fft) แต่ไม่มากนัก วิธีการจัดการสัญลักษณ์ / CAS ต้องบอกว่า ... หนังสือทั้งสองเล่มดูน่าสนใจจริงๆ!
timday

ใช่บางตัวอย่างของคณิตศาสตร์จริงจะดีมาก (เช่น lin. พีชคณิตเมทริกซ์เพิ่มเติม ฯลฯ ... ) - เพื่อดูว่าไวยากรณ์ที่แท้จริงมีลักษณะอย่างไร ฉันพนันได้เลยว่าไม่มี op-overloading ...
Andriy Drozdyuk

@drozzy: แน่นอนว่ามีการใช้งานเกินพิกัดผ่านคลาสประเภท
nomen

4

แม้ว่าฉันจะเป็นแฟนตัวยงของ Haskell สำหรับการสอนคณิตศาสตร์ แต่มันอาจไม่เหมาะสมสำหรับทุกหัวข้อในระดับ AS / A

คุณจะไม่มีปัญหาในการสอนแนวคิดของฟังก์ชั่นและพีชคณิตเชิงเส้นสามารถทำได้ดีใน Haskell พีชคณิตเชิงเส้นมักจะถูกสอนในลักษณะที่จำเป็นอย่างยิ่งพร้อมการอัปเดตอาร์เรย์ สามารถแปลเป็น Haskell ได้ทั้งหมด แต่อาจต้องใช้ความคิดเล็กน้อยต่างกัน

แต่มันจะยุ่งยากเมื่อคุณต้องการพูดถึงขีด จำกัด และแคลคูลัส ฉันประสบความสำเร็จอย่างมากในการทำแคลคูลัสใน Haskell ด้วยวิธีที่ไม่ธรรมดา แต่นั่นอาจไม่ใช่ความคิดที่ดีเมื่อสอนให้กับหลักสูตรที่แน่นอน หรือคุณสามารถเล่นโดยใช้สัญลักษณ์ต่างกัน แต่คุณจะต้องสร้างประเภทข้อมูลสำหรับนิพจน์ซึ่งอาจเป็นเรื่องยากสำหรับระดับ A / AS มันไม่ได้มีรหัสมากมายในการเริ่มต้นมีเพียงไม่กี่บรรทัด แต่มันอาจจะน่ากลัวสำหรับนักเรียน ต่างจาก Derive และ Mathematica คุณจะไม่ได้รับการแสดงออกเชิงสัญลักษณ์ฟรี

Combinatorics ขั้นพื้นฐานง่ายต่อการสำรวจด้วย List monad สิ่งนี้อาจมีประโยชน์สำหรับการสอนทฤษฎีความน่าจะเป็น

Haskell ใช้ได้ดีสำหรับการใช้งานเชิงตัวเลขของการเรียงลำดับที่อาจปรากฏในระดับ A / AS เช่น ใช้กฎของซิมป์สันหรือตรวจสอบค่าเฉลี่ยตัวอย่างและความแปรปรวน

คุณทำทฤษฎีกลุ่มเบื้องต้นหรือไม่? นั่นง่ายที่จะเขียนโค้ดและเล่นด้วยใน Haskell

โดยรวมถ้าคุณใส่ใจในข้อ จำกัด ฉันสงสัยว่ามันเป็นเรื่องง่ายที่จะทำคณิตศาสตร์ระดับ A / AS กับ Haskell


2

ฉันไม่แน่ใจว่า Haskell เป็นตัวเลือกที่ดีหรือไม่ แน่นอนว่ามันมี "ความรู้สึกทางคณิตศาสตร์" ที่เกี่ยวข้องกับโครงสร้างที่ไม่มีที่สิ้นสุด ฯลฯ แต่คุณสามารถชื่นชมคุณสมบัติเหล่านี้เฉพาะเมื่อคุณรู้ภาษาแล้ว การเรียนรู้แฮสเค็ลล์เพื่อเรียนรู้คณิตศาสตร์สแต็คงานยากอีกอย่างหนึ่ง และการเรียนรู้ Haskell นั้นยากแม้ว่าคุณจะรู้จักการเขียนโปรแกรมแล้วก็ตาม ดังนั้นมันขึ้นอยู่กับว่าผู้ชมของคุณสดใสและอยากรู้อยากเห็นมากพอมิฉะนั้นคุณจะเสียครึ่งหนึ่งเพราะคณิตศาสตร์และอีกครึ่งหนึ่งเป็นเพราะ Haskell


การเรียนรู้ Haskell นั้นง่ายถ้าคุณรู้คณิตศาสตร์อยู่แล้ว ง่ายมาก.
nomen

@nomen อาจจะเป็น แต่นี่ไม่ใช่คำถาม
Landei

ฉันกำลังบอกว่าการเรียนรู้กับคนที่มีพื้นหลังการเขียนโปรแกรมยากจะไม่ตัดสิทธิ์
nomen

1

ไม่มีภาษาคอมพิวเตอร์ที่จะสอนคณิตศาสตร์ให้คุณ คณิตศาสตร์เท่านั้นที่จะสอนคณิตศาสตร์ให้คุณ นั่นคือ: วิธีการใช้ปากกาและกระดาษ (หรือชอล์กและกระดานดำ) สัจพจน์ทฤษฎีบทและบทพิสูจน์ นี่คือคณิตศาสตร์ ไม่ว่าภาษาจะเซ็กซี่แค่ไหนโปรแกรมที่เขียนในนั้นไม่ใช่วิชาคณิตศาสตร์มันเป็นเพียงการประยุกต์ทางคณิตศาสตร์ ในการใช้บางสิ่งคุณต้องเรียนรู้ก่อน


1
ฉันไม่คิดว่าทุกคนคาดหวังว่าภาษาการเขียนโปรแกรมจะสอนคณิตศาสตร์อย่างแท้จริงและฉันไม่คิดว่าคำถามดั้งเดิมที่ถามสำหรับภาษาการเขียนโปรแกรมเพื่อสอนคณิตศาสตร์อย่างแท้จริง พวกเขาต้องการสิ่งที่สามารถใช้สำหรับแบบฝึกหัดบางอย่างเพื่อช่วยในการสอนคณิตศาสตร์
user27539

Chalk, กระดานดำ ...
quant_dev

ไม่เห็นด้วย ภาษาเป็นเพียงวิธีการแสดงออก ชอล์กดินสอคอมพิวเตอร์: เครื่องมือที่ใช้ในการแสดงคณิตศาสตร์อย่างเป็นรูปธรรม ภาษาเป็นเพียงเครื่องมือในการแสดงคณิตศาสตร์อย่างเป็นนามธรรม เปรียบเทียบทฤษฎีบท Isomorphism ของ Haskell-Curry (โปรแกรมนี้พิสูจน์ได้ในตรรกะเชิงสร้างสรรค์)
nomen
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.