¿Haskell es bueno enseñando los fundamentos de las matemáticas?

19

Participo en la enseñanza de matemáticas a clases con requisitos como AS y A nivel de especificación de matemáticas.

Los libros de clase normalmente proporcionan ejemplos de programas informáticos aplicados a tareas matemáticas, pero normalmente se basan en aplicaciones de software como Mathlab, Mathica o Derivar.

Incluso cuando se usa un lenguaje de programación real , normalmente es un lenguaje antiguo como Pascal. Y esto es realmente triste en mi opinión.

Porque, Haskell es famoso por sus sentimientos con las matemáticas, y porque también estoy interesado en eso, me gustaría preguntar si Haskell es una buena opción como método de ejercicio de extensión para estudiantes de una clase universitaria de primer año. Los temas típicos son funciones, caclulus, límites, pero también álgebra lineal, por ejemplo.

Tengo experiencia de conocimiento intermedio en programación (c #, ruby, powershell, javascript, tex) y también me he acercado a la programación funcional con XSLT.

Las respuestas se votarán de manera responsable. Respuestas detalladas que incluyen también algunos ejemplos básicos de código Haskell aplicado a las matemáticas, como álgebra lineal (por ejemplo, espacio vectorial), polinomios, la resolución de ecuaciones lineales es muy apreciada y dirigida como la deseada.

Emiliano Poggi
fuente
3
Mira este libro: collegepublications.co.uk/computing/?00004
Fred Foo
@larsmans: gracias. Ese es un buen punto de partida; También me interesan las matemáticas más prácticas, como la diferenciación, los límites, las integrales.
Emiliano Poggi
No veo cómo Mathematica no es un lenguaje de programación real . Cuando tengo problemas matemáticos, lo uso con mucha frecuencia primero (bueno, Octave), y luego lo convierto a otro idioma. Si el foco está en las matemáticas, entonces no veo ninguna razón por la cual un lenguaje matemático especializado no sea adecuado.
edA-qa mort-ora-y
@edA: Mathematica! = Octava! Octave es un clon de Matlab. Las personas que usan ambos me dicen que Matlab / Octave está más orientado a los números (grandes matrices, FFT, etc.), mientras que Mathematica es mejor para la manipulación simbólica. El equivalente FOSS más cercano a Mathematica es probablemente Maxima (anteriormente Macsyma).
Timday
@timday, sí, sé Octave! = Mathematica, pero el lenguaje de código es el mismo. También uso Maxima para la manipulación simbólica.
edA-qa mort-ora-y

Respuestas:

9

Haskell está creciendo en popularidad entre los matemáticos. Como dijo un blogger:

"Después de involucrarme en el tema, una cosa que destaca es la distancia relativamente baja entre el pensamiento expresado en mi discurso matemático cotidiano y el pensamiento expresado en el código Haskell".

Así que aquí hay algunos puntos de vista recopilados, que creo que dicen que no puedes equivocarte mucho tomando este enfoque.

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Finalmente,

Don Stewart
fuente
1
Después de leer algunos de sus enlaces, no puedo decir que esté demasiado convencido. ¿Tienes algún ejemplo de alguien sentado para una sesión de Haskell y trabajando como si pudieras con Mathematica / Maxima? Además, el blog de "11 razones" señala lo desordenada que es la biblioteca estándar desde el punto de vista de un matemático, y mirando la lista de paquetes matemáticos veo muchos números (por ejemplo, blas, fft) pero no mucho en El camino de la manipulación simbólica / CAS. Habiendo dicho eso ... ¡ambos libros parecen realmente interesantes!
Timday
Sí, algunos ejemplos de matemáticas reales serían geniales (como las adiciones de matriz de álgebra lin, etc.) para ver cómo se ve la sintaxis real. Apuesto a que ni siquiera hay sobrecarga de
operaciones
@drozzy: por supuesto, hay sobrecarga del operador, a través de clases de tipo.
nomen
4

Si bien soy un gran admirador de Haskell por enseñar matemáticas, podría no ser apropiado para todos los temas a nivel AS / A.

No tendrá problemas para enseñar la idea de una función, y el álgebra lineal puede ser agradable en Haskell. El álgebra lineal a menudo se enseña de una manera muy imperativa con actualizaciones in situ de matrices. Todo se puede traducir a Haskell, pero puede requerir un poco de pensamiento diferente.

Pero se vuelve complicado cuando quieres hablar sobre límites y cálculo. He tenido un gran éxito haciendo cálculos en Haskell con un enfoque no convencional. Pero esa podría no ser una gran idea cuando se enseña a un plan de estudios fijo. Alternativamente, puede jugar con diferenciación simbólica, pero luego comenzará a construir tipos de datos para expresiones que pueden ser difíciles para el nivel A / AS. No es mucho código para comenzar, apenas un par de líneas, pero puede ser aterrador para los estudiantes. A diferencia de Derive y Mathematica, no obtienes expresiones simbólicas de forma gratuita.

La combinatoria básica es fácil de explorar con la mónada List. Esto podría ser útil para enseñar la teoría de la probabilidad.

Haskell está bien para aplicaciones numéricas del tipo que puede aparecer a nivel A / AS, por ejemplo. aplicando la regla de Simpson o investigando medias de muestra y variaciones.

¿Haces teoría grupal elemental? Eso es fácil de codificar y jugar en Haskell.

En general, si te cuidas de los límites, sospecho que es sencillo hacer muchas de las matemáticas de nivel A / AS con Haskell.

usuario27539
fuente
2

No estoy seguro si Haskell es una buena opción. Claro, tiene un "sentimiento matemático" muy, trata con estructuras infinitas, etc. Pero puede apreciar estas características solo si ya conoce el idioma. Aprender Haskell para aprender matemáticas acumula una tarea difícil sobre otra. Y aprender Haskell es difícil, incluso si ya sabes programar. Entonces, realmente depende si su audiencia es lo suficientemente brillante y curiosa, de lo contrario, perderá la mitad debido a las matemáticas y la otra mitad debido a Haskell.

Landei
fuente
Aprender Haskell es fácil si ya sabes las matemáticas detrás de esto. Muy fácil.
nomen
@nomen Puede ser, pero esta no era la pregunta.
Landei
Estoy diciendo que ser difícil de aprender para alguien con experiencia en programación no lo descalifica.
nomen
1

Ningún lenguaje de computadora te enseñará matemáticas. Solo las matemáticas te enseñarán matemáticas. Es decir: enfoque de lápiz y papel (o tiza y pizarra), axiomas, teoremas y pruebas. Esto es matemática. No importa cuán sexy sea el lenguaje, un programa escrito en él no es matemática, es solo una aplicación de las matemáticas. Para aplicar algo, primero debes aprenderlo.

cuant_dev
fuente
1
No creo que nadie espere que un lenguaje de programación literalmente enseñe matemáticas y no creo que la pregunta original pidiera un lenguaje de programación que literalmente enseñe matemáticas. Quieren algo que pueda usarse para algunos ejercicios para ayudar con la enseñanza de las matemáticas.
user27539
Tiza, pizarra ...
quant_dev
Discrepar. Un lenguaje es solo un medio de expresión. Tiza, lápiz, computadora: solo herramientas utilizadas para expresar matemáticas concretamente. Los idiomas son solo herramientas para expresar las matemáticas de manera abstracta. Comparar el teorema Haskell Curry-isomorfismo (un programa es una prueba en una lógica constructiva)
nomen