Haskell jest dobry w nauczaniu podstaw matematyki?

19

Jestem zaangażowany w nauczaniu matematyki na zajęciach z wymaganiami, takimi jak i specyfikacji Matematyki poziom A.

książki klasy zwykle dostarczają przykładów oprogramowania komputerowego stosowane do zadań matematycznych, ale zwykle są one oparte na aplikacjach takich jak Mathlab, Mathematica lub wyprowadzenia.

Nawet wtedy, gdy prawdziwy jest używany język programowania, jest to zwykle stare fashoned język jak Pascal. I to jest naprawdę smutne moim zdaniem.

Ponieważ Haskell słynie z zamiłowania do matematyki, a także dlatego, że mnie to interesuje, chciałbym zapytać, czy Haskell jest dobrym wyborem jako metoda ćwiczeń przedłużających dla studentów pierwszego roku studiów. Typowe przedmioty są funkcje caclulus, ograniczeń, ale również liniowy Algebra np.

Mam pośrednie doświadczenie w programowaniu (c #, ruby, powershell, javascript, tex), a także podszedłem do programowania funkcjonalnego z XSLT.

Odpowiedzi zostaną upvoted odpowiedzialnie. Pełne odpowiedzi, w tym także niektóre podstawowe przykłady kodu Haskella stosowanego do matematyki, takie jak algebra liniowa (np. Przestrzeń wektorowa), wielomiany, rozwiązywanie równań liniowych są bardzo doceniane i ukierunkowane jako poszukiwane.

Emiliano Poggi
źródło
3
Sprawdź tę książkę: collegepublications.co.uk/computing/?00004
Fred Foo
@larsmans: dzięki. To naprawdę dobry punkt wyjścia; Jestem również zainteresowany bardziej praktycznych matematyki, jak różnicowania, limity, całki.
Emiliano Poggi
I nie rozumiem, jak Mathematica nie jest prawdziwy język programowania. Kiedy mam problemów matematycznych I bardzo często wykorzystują go najpierw (dobrze Octave), a następnie przekonwertować na inny język. Jeśli skupiamy się na matematyce to ja nie widzę powodu, dlaczego specjalizuje się językiem matematyki nie jest odpowiedni.
EDA QA mort -ORa Y
@edA: Mathematica! = Octave! Octave jest klonem Matlaba. Ludzie, którzy używają zarówno mi powiedzieć Matlab / Octave jest bardziej nastawiona na numerycznych (duże tablice, FFT itp) podczas Mathematica jest lepsze dla manipulacji symbolicznych. Najbliższy odpowiednik FOSS do Mathematica jest prawdopodobnie Maxima (dawniej macsyma).
dnia
@timday, tak, wiem, Octave! = Mathematica, ale język kod jest taki sam. Używam również Maximy do symbolicznej manipulacji.
EDA QA mort -ORa Y

Odpowiedzi:

9

Haskell jest coraz większą popularność wśród matematyków. Jak ujął to jeden bloger:

„Po zaangażowanie się w ten temat, jedna rzecz, która wyróżnia się jest stosunkowo niskie odległość między myślą wyrażoną w moim zwykłym dyskursu matematycznego z dnia na dzień, i myśli wyrażone w kodzie Haskell.”

Więc oto kilka zebranych poglądów, że czuję się mówi, że nie może pójść bardzo źle biorąc to podejście.

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

Wreszcie,

Don Stewart
źródło
1
Po przeczytaniu niektórych linków, nie mogę powiedzieć, że jestem zbyt przekonany. Jakieś przykłady rzeczywiście ktoś usiadł na sesję Haskell i działa to jak można Mathematica / Maxima?. Ponadto, „11 powodów” Punkty blogi co bałagan biblioteka standardowa jest z punktu widzenia matematyka, i patrząc na listy pakietów matematycznych widzę dużo numerycznych (np Blas, FFT), ale nie wiele w sposób symbolicznej manipulacji / CAS. Powiedziawszy to ... obie książki wyglądają naprawdę interesująco!
dnia
Ye, niektóre przykłady rzeczywistej matematyki byłoby świetnie (jak Lin Algebra macierzy dodatki itp ....) - aby zobaczyć, jak wygląda rzeczywiste składni. Założę się, że nie ma nawet op-przeciążenia ...
Andrij Drozdyuk
@drozzy: oczywiście występuje przeciążenie operatora przez klasy typów.
nomen
4

Choć jestem wielkim fanem Haskell do nauczania matematyki, to może nie być odpowiednie dla wszystkich tematów w AS / poziom.

Nie będziesz mieć problemu z nauczeniem pojęcia funkcji, a algebra liniowa może być przyjemna w Haskell. Algebra liniowa jest często nauczana w bardzo imperatywny sposób dzięki aktualizacjom tablic na miejscu. Można to wszystko przetłumaczyć na Haskell, ale może to wymagać nieco innego myślenia.

Ale staje się to trudne, gdy chcesz rozmawiać o limitach i rachunku różniczkowym. Odniosłem wielki sukces, wykonując rachunek różniczkowy w Haskell przy niekonwencjonalnym podejściu. Ale to może nie być świetny pomysł, gdy uczy się ustalonego programu nauczania. Alternatywnie można grać z symbolicznym różnicowania ale potem zaczniesz konieczności budowania typów danych dla wyrażeń, które mogą być trudne do poziomu A / AS. To nie jest dużo kodu, aby zacząć, ledwie kilka linii, ale to może być przerażające dla studentów. W przeciwieństwie do Derive i Mathematica, nie otrzymujesz symbolicznych wyrażeń za darmo.

Podstawowa kombinatoryka jest łatwa do eksploracji dzięki monadzie Lista. Może to być przydatne do nauczania teorii prawdopodobieństwa.

Haskell jest odpowiedni do aplikacji numerycznych, które mogą pojawić się na poziomie A / AS, np. stosując regułę Simpsona lub badając przykładowe środki i wariancje.

Robisz elementarną teorię grupy? To łatwe do kodu i grać z Haskell.

Ogólnie rzecz biorąc, jeśli przestrzegasz limitów, podejrzewam, że z Haskellem łatwo jest zrobić wiele matematyki na poziomie A / AS.

user27539
źródło
2

Nie jestem pewien, czy Haskell jest to wybór dobry. Pewnie, że ma bardzo matematyczny „uczucie”, zajmuje się nieskończonych struktur itd Ale można docenić te funkcje tylko wtedy, gdy już wiemy język. Uczenie Haskell w celu nauki matematyki stosy jedno trudne zadanie na drugim. I uczenia się Haskell jest trudne, nawet jeśli już wiesz programowania. Tak więc to naprawdę zależy od tego, czy twoja publiczność jest wystarczająco bystra i ciekawa, inaczej stracisz połowę z powodu matematyki, a drugą połowę z powodu Haskella.

Landei
źródło
Nauka Haskell jest łatwe, jeśli już zna matematykę za nim. Bardzo łatwe.
nomen
@nomen może być, ale to nie było pytanie.
Landei
Mówię, że trudność w nauce kogoś z doświadczeniem programistycznym nie dyskwalifikuje go.
nomen
1

Żaden język komputerowy nie nauczy Cię matematyki. Tylko matematyka nauczy Cię matematyki. To jest: pióro i podejście papieru (lub kredy i tablica) aksjomaty twierdzenia i dowody. To jest matematyka. Nie ważne jak język jest sexy, program napisany w nim nie jest matematyka, to po prostu aplikacja matematyki. Aby coś zastosować, musisz się go najpierw nauczyć.

quant_dev
źródło
1
Nie sądzę, żeby ktokolwiek spodziewa się języka programowania dosłownie matematyki uczyć i nie sądzę, oryginalne pytanie poprosił o języku programowania dosłownie matematyki uczył. Chcą coś, co może być wykorzystane dla niektórych ćwiczeń, aby pomóc w nauczaniu matematyki.
user27539
Kreda, tablica ...
quant_dev
Nie zgadzać się. Język jest tylko środkiem wyrazu. Kreda, ołówek, komputer: tylko narzędzia używane do wyrażenia matematyczne konkretnie. Języki są tylko narzędzia wyrażania matematyki abstrakcyjnie. Porównaj twierdzenie o izomorfizmie Haskella-Curry'ego (program jest dowodem w logice konstruktywnej)
nomen