Haskell é bom no ensino de fundamentos da matemática?


19

Estou envolvido no ensino de matemática para turmas com requisitos como AS e especificação de matemática de nível A.

Os livros de aula normalmente fornecem exemplos de software de computador aplicado a tarefas de matemática, mas normalmente são baseados em aplicativos de software como mathlab, mathematica ou derivate.

Mesmo quando uma linguagem de programação real é usada, ela é normalmente uma linguagem antiga como o Pascal. E isso é realmente triste na minha opinião.

Porque Haskell é famoso por seu sentimento com a matemática, e porque também estou interessado nisso, gostaria de perguntar se Haskell é uma boa escolha como método de exercício de extensão para alunos de uma turma do primeiro ano da universidade. Assuntos típicos são funções, caclulus, limites, mas também álgebra linear, por exemplo.

Tenho experiência intermediária em programação (c #, ruby, powershell, javascript, tex) e também já abordei a programação funcional com o XSLT.

As respostas serão votadas com responsabilidade. Respostas detalhadas, incluindo também alguns exemplos básicos de código Haskell aplicados à matemática, como álgebra linear (por exemplo, espaço vetorial), polinômios, resolução de equações lineares são muito apreciados e direcionados como desejados.



@arsman: obrigado. Esse é realmente um bom ponto de partida; Também estou interessado em matemática mais prática, como diferenciação, limites, integrais.
Emiliano Poggi

Não vejo como o Mathematica não é uma linguagem de programação real . Quando tenho problemas de matemática, frequentemente o uso primeiro (bem, oitava) e depois os converto para outro idioma. Se o foco está na matemática, não vejo razão para que uma linguagem matemática especializada não seja adequada.
EdA-qa mort-ora-y

@edA: Mathematica! = Oitava! Oitava é um clone do Matlab. As pessoas que usam os dois me dizem que o Matlab / Octave é mais voltado para números (grandes matrizes, FFTs etc.), enquanto o Mathematica é melhor para manipulação simbólica. O FOSS mais próximo equivalente ao Mathematica é provavelmente o Maxima (anteriormente Macsyma).
timday

@ timday, sim, eu sei Octave! = Mathematica, mas o idioma do código é o mesmo. Eu também uso o Maxima para manipulação simbólica.
edA-qa mort-ora-y

Respostas:


9

Haskell está crescendo em popularidade entre os matemáticos. Como um blogueiro colocou:

"depois de me envolver no assunto, uma coisa que se destaca é a distância relativamente baixa entre o pensamento expresso em meu discurso matemático do dia-a-dia e o pensamento expresso no código Haskell".

Então, aqui estão algumas visualizações coletadas, que considero que você não pode dar terrivelmente errado ao adotar essa abordagem.

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Finalmente,


1
Depois de ler alguns dos seus links, não posso dizer que estou muito convencido. Na verdade, existem exemplos de alguém sentado em uma sessão Haskell e trabalhando como você pode com o Mathematica / Maxima? Além disso, o blog "11 razões" mostra como a biblioteca padrão é uma bagunça do ponto de vista de um matemático. Olhando para a lista de pacotes matemáticos, vejo muitos números (por exemplo, blas, fft), mas não muito em o caminho da manipulação simbólica / CAS. Dito isto ... ambos os livros parecem realmente interessantes!
timday 11/06

Sim, alguns exemplos de matemática real seriam ótimos (como adições de matrizes de álgebra linear etc ...) - para ver a aparência da sintaxe real. Aposto que não há sequer-op sobrecarga ...
Andriy Drozdyuk

@drozzy: é claro que há sobrecarga do operador, por meio de classes de tipo.
nomen

4

Embora eu seja um grande fã de Haskell no ensino de matemática, pode não ser apropriado para todos os tópicos do nível AS / A.

Você não terá nenhum problema em ensinar a idéia de uma função, e a álgebra linear pode ser agradável em Haskell. Álgebra linear é frequentemente ensinada de maneira muito imperativa com atualizações no local de matrizes. Tudo pode ser traduzido para Haskell, mas pode exigir um pouco de pensamento diferente.

Mas fica complicado quando você quer falar sobre limites e cálculo. Tive grande sucesso ao fazer cálculos em Haskell com uma abordagem não convencional. Mas isso pode não ser uma ótima idéia quando se ensina um currículo fixo. Como alternativa, você pode jogar com diferenciação simbólica, mas depois começará a criar tipos de dados para expressões que podem ser complicadas para o nível A / AS. Não é muito código para começar, apenas algumas linhas, mas pode ser assustador para os alunos. Ao contrário do Derive e do Mathematica, você não recebe expressões simbólicas gratuitamente.

A combinatória básica é fácil de explorar com a mônada da Lista. Isso pode ser útil para o ensino da teoria das probabilidades.

Haskell é adequado para aplicações numéricas do tipo que podem aparecer no nível A / AS, por exemplo. aplicação da regra de Simpson ou investigação de médias e variações de amostras.

Você faz teoria elementar de grupos? É fácil codificar e brincar com o Haskell.

No geral, se você se preocupa com os limites, suspeito que seja fácil fazer grande parte da matemática do nível A / AS com Haskell.


2

Não tenho certeza se Haskell é uma boa escolha. Claro, ele tem um "sentimento matemático", lida com estruturas infinitas etc. Mas você pode apreciar esses recursos apenas se já conhece o idioma. Aprender Haskell para aprender matemática empilha uma tarefa difícil em cima da outra. E aprender Haskell é difícil, mesmo se você já conhece a programação. Portanto, realmente depende se o seu público é brilhante e curioso o suficiente, senão você perde metade deles por causa da matemática e a outra metade devido a Haskell.


Aprender Haskell é fácil se você já conhece a matemática por trás disso. Muito fácil.
nomen

@ men Pode ser, mas esta não foi a questão.
Landei

Estou dizendo que ser difícil aprender com alguém com experiência em programação não a desqualifica.
nomen

1

Nenhuma linguagem de computador lhe ensinará matemática. Somente a matemática ensinará matemática. Ou seja: abordagem em papel e caneta (ou giz e quadro-negro), axiomas, teoremas e provas. Isso é matemática. Por mais sexy que seja a linguagem, um programa escrito nela não é matemática, é apenas uma aplicação da matemática. Para aplicar algo, você precisa aprender primeiro.


1
Acho que ninguém espera que uma linguagem de programação ensine literalmente matemática e não acho que a pergunta original pedisse uma linguagem de programação para ensinar literalmente matemática. Eles querem algo que possa ser usado em alguns exercícios para ajudar no ensino de matemática.
user27539

Giz, quadro-negro ...
quant_dev 13/06/11

Discordo. Uma linguagem é apenas um meio de expressão. Giz, lápis, computador: apenas ferramentas usadas para expressar a matemática concretamente. As línguas são apenas ferramentas para expressar a matemática de maneira abstrata. Compare o teorema Haskell-Curry Isomorfismo (um programa é uma prova em uma lógica construtiva)
nomen
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.