Haskell è bravo a insegnare i fondamenti della matematica?


19

Sono coinvolto nell'insegnamento della matematica a classi con requisiti come AS e le specifiche matematiche di livello A.

I libri di classe normalmente forniscono esempi di software per computer applicati ad attività matematiche, ma normalmente si basano su applicazioni software come matematica, matematica o derivate.

Anche quando viene utilizzato un vero linguaggio di programmazione, è normalmente un linguaggio vecchio come il Pascal. E questo è davvero triste secondo me.

Perché, Haskell è famoso per i suoi sentimenti con la matematica, e poiché sono interessato anche a questo, vorrei chiedermi se Haskell è una buona scelta come metodo di esercitazione di estensione per gli studenti di una classe universitaria del primo anno. Soggetti tipici sono funzioni, caclulus, limiti, ma anche algebra lineare, ad esempio.

Ho una conoscenza intermedia nella programmazione (c #, ruby, powershell, javascript, tex) e ho già affrontato la programmazione funzionale con XSLT.

Le risposte verranno valutate responsabilmente. Le risposte dettagliate che includono anche alcuni esempi di base del codice di Haskell applicato alla matematica, come l'algebra lineare (ad esempio lo spazio vettoriale), i polinomi, la risoluzione di equazioni lineari sono molto apprezzate e mirate come quella desiderata.



@larsmans: grazie. Questo è davvero un buon punto di partenza; Sono anche interessato a matematica più pratica, come differenziazione, limiti, integrali.
Emiliano Poggi,

Non riesco a vedere come Mathematica non sia un vero linguaggio di programmazione. Quando ho problemi di matematica, lo uso molto spesso prima (bene Octave), quindi converto in un'altra lingua. Se l'attenzione è rivolta alla matematica, non vedo alcun motivo per cui un linguaggio matematico specializzato non sia adatto.
edA-qa mort-ora-y

@edA: Mathematica! = Octave! Octave è un clone di Matlab. Le persone che usano entrambi mi dicono che Matlab / Octave è più orientato alla numerica (grandi array, FFT ecc.) Mentre Mathematica è migliore per la manipolazione simbolica. Il più vicino equivalente FOSS a Mathematica è probabilmente Maxima (precedentemente Macsyma).
martedì

@timday, yes, so Octave! = Mathematica, ma il linguaggio del codice è lo stesso. Uso anche Maxima per manipolazione simbolica.
edA-qa mort-ora-y

Risposte:


9

Haskell sta crescendo in popolarità tra i matematici. Come diceva un blogger:

"dopo essermi coinvolto nell'argomento, una cosa che spicca è la distanza relativamente bassa tra il pensiero espresso nel mio normale discorso matematico quotidiano e il pensiero espresso nel codice di Haskell."

Quindi, ecco alcuni punti di vista raccolti, che ritengo affermino che non puoi sbagliare terribilmente con questo approccio.

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

Infine,


1
Dopo aver letto alcuni dei tuoi link, non posso dire di essere troppo convinto. Hai qualche esempio di qualcuno seduto per una sessione di Haskell e lavorarlo come puoi Mathematica / Maxima? Inoltre, il blog "11 ragioni" indica che casino è la libreria standard dal punto di vista di un matematico, e guardando l'elenco dei pacchetti matematici vedo molti numeri (ad esempio blas, fft) ma non molto in la via della manipolazione simbolica / CAS. Detto questo ... entrambi i libri sembrano davvero interessanti!
martedì

Sì, alcuni esempi di matematica reale sarebbero fantastici (come lin. Aggiunte di matrice algebrica ecc ...) - per vedere come appare la sintassi reale. Scommetto che non c'è nemmeno un sovraccarico
operativo

@drozzy: ovviamente c'è un sovraccarico dell'operatore, tramite classi di tipi.
nomen

4

Anche se sono un grande fan di Haskell per l'insegnamento della matematica, potrebbe non essere appropriato per tutti gli argomenti a livello AS / A.

Non avrai problemi con l'insegnamento dell'idea di una funzione e l'algebra lineare può essere piacevole in Haskell. L'algebra lineare viene spesso insegnata in modo molto imperativo con gli aggiornamenti sul posto degli array. Può essere tutto tradotto in Haskell, ma potrebbe richiedere un po 'di pensiero diverso.

Ma diventa difficile quando vuoi parlare di limiti e calcolo. Ho avuto un grande successo facendo calcoli in Haskell con un approccio non convenzionale. Ma questa potrebbe non essere una grande idea quando si insegna a un programma fisso. In alternativa puoi giocare con la differenziazione simbolica, ma inizierai a dover costruire tipi di dati per le espressioni che potrebbero essere difficili per il livello A / AS. Non è un sacco di codice per iniziare, a malapena un paio di righe, ma potrebbe essere spaventoso per gli studenti. A differenza di Derive e Mathematica, non ottieni espressioni simboliche gratuitamente.

La combinatoria di base è facile da esplorare con la monade Elenco. Questo potrebbe essere utile per insegnare la teoria della probabilità.

Haskell va bene per applicazioni numeriche del tipo che potrebbe apparire a livello A / AS, ad es. applicare la regola di Simpson o indagare su mezzi e variazioni del campione.

Fai la teoria dei gruppi elementari? È facile codificarlo e giocarci in Haskell.

Nel complesso, se ti preoccupi dei limiti, sospetto che sia semplice fare molta della matematica di livello A / AS con Haskell.


2

Non sono sicuro che Haskell sia una buona scelta. Certo, ha un "sentimento matematico", ha a che fare con strutture infinite ecc. Ma puoi apprezzare queste caratteristiche solo se conosci già la lingua. Imparare Haskell per imparare la matematica impila un compito difficile sopra l'altro. E imparare Haskell è difficile, anche se conosci già la programmazione. Quindi dipende davvero se il tuo pubblico è abbastanza brillante e curioso, altrimenti ne perdi metà a causa della matematica e l'altra metà a causa di Haskell.


Imparare Haskell è facile se conosci già la matematica dietro di essa. Molto facile.
nomen,

@nomen Forse, ma questa non era la domanda.
Landei,

Sto dicendo che essere difficili da imparare a qualcuno con un background di programmazione non lo squalifica.
nomen

1

Nessun linguaggio informatico ti insegnerà la matematica. Solo la matematica ti insegnerà la matematica. Cioè: approccio carta e penna (o gesso e lavagna), assiomi, teoremi e prove. Questa è matematica. Non importa quanto sia sexy la lingua, un programma scritto non è matematica, è solo un'applicazione della matematica. Per applicare qualcosa, devi prima impararlo.


1
Non penso che nessuno si aspetti che un linguaggio di programmazione insegni letteralmente la matematica e non penso che la domanda originale abbia posto un linguaggio di programmazione per insegnare letteralmente la matematica. Vogliono qualcosa che possa essere usato per alcuni esercizi per aiutare con l'insegnamento della matematica.
user27539,

Gesso, lavagna ...
quant_dev,

Disaccordo. Una lingua è solo un mezzo di espressione. Gesso, matita, computer: solo strumenti usati per esprimere concretamente la matematica. Le lingue sono solo strumenti per esprimere la matematica in modo astratto. Confronta il teorema dell'isomorfismo di Haskell-Curry (un programma è una prova in una logica costruttiva)
nomen
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.