Haskell est-il bon pour enseigner les principes fondamentaux des mathématiques?


19

Je suis impliqué dans l'enseignement des mathématiques aux classes ayant des exigences telles que les spécifications mathématiques de niveau AS et A.

Les livres de classe fournissent normalement des exemples de logiciels informatiques appliqués aux tâches mathématiques, mais ils sont normalement basés sur des applications logicielles comme mathlab, mathématique ou dérivée.

Même lorsqu'un vrai langage de programmation est utilisé, il s'agit normalement d'un ancien langage de mode comme Pascal. Et c'est vraiment triste à mon avis.

Parce que, Haskell est célèbre pour son sentiment avec les mathématiques, et parce que cela m'intéresse aussi, je voudrais demander si Haskell est un bon choix comme méthode d'exercice d'extension pour les étudiants d'une classe universitaire de première année. Les sujets typiques sont les fonctions, le caclulus, les limites, mais aussi l'algèbre linéaire par exemple.

J'ai une expérience de connaissance intermédiaire en programmation (c #, ruby, powershell, javascript, tex) et j'ai également déjà abordé la programmation fonctionnelle avec XSLT.

Les réponses seront votées de manière responsable. Les réponses détaillées, y compris également quelques exemples de base du code Haskell appliqué aux mathématiques, telles que l'algèbre linéaire (par exemple l'espace vectoriel), les polynômes, la résolution d'équations linéaires sont très appréciées et ciblées comme souhaitées.



@larsmans: merci. C'est effectivement un bon point de départ; Je m'intéresse aussi aux mathématiques plus pratiques, comme la différenciation, les limites, les intégrales.
Emiliano Poggi

Je ne vois pas comment Mathematica n'est pas un vrai langage de programmation. Lorsque j'ai des problèmes de mathématiques, je l'utilise très fréquemment en premier (enfin Octave), puis je le convertis dans une autre langue. Si l'accent est mis sur les mathématiques, je ne vois aucune raison pour laquelle un langage mathématique spécialisé ne convient pas.
edA-qa mort-ora-y

@edA: Mathematica! = Octave! Octave est un clone de Matlab. Les personnes qui utilisent les deux me disent que Matlab / Octave est plus orienté vers les chiffres (grands tableaux, FFT, etc.) tandis que Mathematica est meilleur pour la manipulation symbolique. L'équivalent FOSS le plus proche de Mathematica est probablement Maxima (anciennement Macsyma).
2011

@timday, oui, je connais Octave! = Mathematica, mais le langage de code est le même. J'utilise également Maxima pour la manipulation symbolique.
edA-qa mort-ora-y

Réponses:


9

Haskell gagne en popularité parmi les mathématiciens. Comme l'a dit un blogueur:

"Après m'être impliqué dans le sujet, une chose qui se démarque est la distance relativement faible entre la pensée exprimée dans mon discours mathématique ordinaire et la pensée exprimée dans le code Haskell."

Voici donc quelques points de vue recueillis qui, selon moi, vous ne pouvez pas vous tromper terriblement en adoptant cette approche.

entrez la description de l'image ici

entrez la description de l'image ici

Finalement,


1
Après avoir lu certains de vos liens, je ne peux pas dire que je suis trop convaincu. Vous avez en fait des exemples de quelqu'un assis pour une session Haskell et travaillant comme vous pouvez Mathematica / Maxima?. De plus, le blog "11 raisons" souligne le désordre de la bibliothèque standard du point de vue d'un mathématicien, et en regardant la liste des packages mathématiques, je vois beaucoup de chiffres (par exemple blas, fft) mais pas beaucoup dans la voie de la manipulation symbolique / CAS. Cela dit ... les deux livres semblent vraiment intéressants!
jeudi

Oui, quelques exemples de mathématiques réelles seraient formidables (comme des ajouts de matrice d'algèbre linéaire, etc.) - pour voir à quoi ressemble la syntaxe réelle. Je parie qu'il n'y a même pas de surcharge d'opération ...
Andriy Drozdyuk

@drozzy: bien sûr, il y a surcharge des opérateurs, via les classes de type.
nomen

4

Bien que je sois un grand fan de Haskell pour l'enseignement des mathématiques, il pourrait ne pas être approprié pour tous les sujets au niveau AS / A.

Vous n'aurez aucun problème à enseigner l'idée d'une fonction, et l'algèbre linéaire peut être agréable dans Haskell. L'algèbre linéaire est souvent enseignée de manière très impérative avec des mises à jour sur place des tableaux. Tout cela peut être traduit en Haskell, mais cela pourrait nécessiter un peu de réflexion différemment.

Mais cela devient difficile lorsque vous voulez parler de limites et de calcul. J'ai eu beaucoup de succès en calcul à Haskell avec une approche non conventionnelle. Mais cela pourrait ne pas être une bonne idée lors de l'enseignement d'un programme fixe. Alternativement, vous pouvez jouer avec la différenciation symbolique, mais vous commencerez alors à créer des types de données pour les expressions qui peuvent être difficiles pour le niveau A / AS. Ce n'est pas beaucoup de code pour commencer, à peine quelques lignes, mais cela peut être effrayant pour les étudiants. Contrairement à Derive et Mathematica, vous n'obtenez pas d'expressions symboliques gratuitement.

La combinatoire de base est facile à explorer avec la monade List. Cela pourrait être utile pour enseigner la théorie des probabilités.

Haskell convient parfaitement aux applications numériques du type qui pourrait apparaître au niveau A / AS, par exemple. appliquer la règle de Simpson ou enquêter sur les moyennes et les écarts des échantillons.

Faites-vous de la théorie des groupes élémentaires? C'est facile à coder et à jouer avec Haskell.

Dans l'ensemble, si vous faites attention aux limites, je soupçonne qu'il est simple de faire une grande partie des mathématiques de niveau A / AS avec Haskell.


2

Je ne sais pas si Haskell est un bon choix. Bien sûr, il a un sentiment très "mathématique", traite de structures infinies, etc. Mais vous ne pouvez apprécier ces fonctionnalités que si vous connaissez déjà la langue. Apprendre Haskell pour apprendre les mathématiques empile une tâche difficile sur une autre. Et apprendre Haskell est difficile, même si vous connaissez déjà la programmation. Donc, cela dépend vraiment si votre public est suffisamment brillant et curieux, sinon vous en perdez la moitié à cause des mathématiques et l'autre moitié à cause de Haskell.


Apprendre Haskell est facile si vous connaissez déjà les mathématiques derrière. Très facile.
nomen

@nomen Peut-être, mais ce n'était pas la question.
Landei

Je dis qu'être difficile à apprendre à quelqu'un avec une formation en programmation ne le disqualifie pas.
nomen

1

Aucun langage informatique ne vous apprendra les mathématiques. Seules les mathématiques vous apprendront les mathématiques. C'est-à-dire: approche stylo et papier (ou craie et tableau noir), axiomes, théorèmes et preuves. Ce sont des mathématiques. Peu importe à quel point la langue est sexy, un programme écrit n'est pas des mathématiques, c'est juste une application des mathématiques. Pour appliquer quelque chose, vous devez d'abord l'apprendre.


1
Je ne pense pas que quiconque s'attende à ce qu'un langage de programmation enseigne littéralement les mathématiques et je ne pense pas que la question initiale demandait un langage de programmation pour enseigner littéralement les mathématiques. Ils veulent quelque chose qui peut être utilisé pour certains exercices pour aider à l'enseignement des mathématiques.
user27539

Craie, tableau noir ...
quant_dev

Être en désaccord. Une langue n'est qu'un moyen d'expression. Craie, crayon, ordinateur: juste des outils utilisés pour exprimer concrètement les mathématiques. Les langues ne sont que des outils pour exprimer les mathématiques de manière abstraite. Comparez le théorème d'isomorphisme de Haskell-Curry (un programme est une preuve dans une logique constructive)
nomen
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.