Хорошо ли Haskell в преподавании основ математики?


19

Я участвую в преподавании математики в классах с такими требованиями, как AS и спецификация уровня A по математике.

Учебники обычно предоставляют примеры компьютерного программного обеспечения, применяемого для математических задач, но обычно они основаны на таких прикладных программах, как mathlab, mathematica или производные.

Даже когда используется настоящий язык программирования, он обычно является старым языком, таким как Pascal. И это действительно грустно на мой взгляд.

Потому что Хаскелл известен своими чувствами к математике, а также потому, что я заинтересован в этом, я хотел бы спросить, является ли Хаскелл хорошим выбором в качестве метода дополнительных упражнений для студентов первого курса университета. Типичными предметами являются функции, caclulus, пределы, но также и линейная алгебра, например.

Имею средний опыт работы в программировании (c #, ruby, powershell, javascript, tex), а также уже подошел к функциональному программированию с использованием XSLT.

Ответы будут проголосованы ответственно. Подробные ответы, включающие также некоторые основные примеры кода на языке Haskell, примененного к математике, такие как линейная алгебра (например, векторное пространство), полиномы, решение линейных уравнений, высоко ценятся и нацелены на то, чтобы найти их.


3
Проверьте эту книгу: Collegepublications.co.uk/computing/?00004
Фред Фу

@larsmans: спасибо. Это действительно хорошая отправная точка; Я также интересуюсь более практической математикой, такой как дифференцирование, пределы, интегралы.
Эмилиано Поджи

Я не вижу, как Mathematica не является реальным языком программирования. Когда у меня возникают проблемы с математикой, я очень часто использую его сначала (хорошо, Octave), а затем перехожу на другой язык. Если акцент делается на математике, то я не вижу причин, почему специализированный математический язык не подходит.
edA-qa mort-ora-y

@edA: Mathematica! = Октава! Octave - это клон Matlab. Люди, которые используют оба, говорят мне, что Matlab / Octave больше ориентированы на цифры (большие массивы, FFT и т. Д.), В то время как Mathematica лучше для символических манипуляций. Ближайший FOSS-эквивалент Mathematica - это, вероятно, Maxima (ранее Macsyma).
Timday

@timday, да, я знаю Octave! = Mathematica, но язык кодирования тот же. Я также использую Maxima для символических манипуляций.
edA-qa mort-ora-y

Ответы:


9

Haskell набирает популярность среди математиков. Как сказал один блоггер:

«после того, как я включился в предмет, одна вещь, которая выделяется, - это относительно небольшое расстояние между мыслью, выраженной в моем обычном повседневном математическом дискурсе, и мыслью, выраженной в коде на Хаскеле».

Итак, вот некоторые собранные взгляды, которые, я чувствую, говорят, что вы не можете пойти ужасно неправильно, используя этот подход.

введите описание изображения здесь

введите описание изображения здесь

В заключение,


1
Прочитав некоторые из ваших ссылок, я не могу сказать, что я слишком убежден. Есть какие-то примеры того, как кто-то садился на сеанс на Haskell и работал так, как вы можете Mathematica / Maxima? Кроме того, блог «11 причин» указывает на то, что беспорядок в стандартной библиотеке с точки зрения математика, и, глядя на список математических пакетов, я вижу много чисел (например, blas, fft), но не так много в способ символического манипулирования / CAS. Сказав это ... обе книги выглядят действительно интересно!
Timday

Да, некоторые примеры реальной математики были бы хороши (например, добавление матрицы алгебры lin и т. Д.), Чтобы увидеть, как выглядит фактический синтаксис. Бьюсь об заклад, нет даже перегрузка оп ...
Андрей Дроздюк

@drozzy: конечно, есть перегрузка операторов через классы типов.
номен

4

Хотя я большой поклонник Haskell для преподавания математики, он может не подходить для всех тем на уровне AS / A.

У вас не будет проблем с обучением идее функции, и линейная алгебра может быть хорошей в Haskell. Линейная алгебра часто преподается очень настоятельно с обновлениями массивов на месте. Все это можно перевести на Haskell, но для этого может потребоваться немного подумать иначе.

Но это становится сложно, когда вы хотите поговорить об ограничениях и исчислении. Я имел большой успех, делая исчисления в Haskell с нетрадиционным подходом. Но это не может быть хорошей идеей при обучении по фиксированной программе. В качестве альтернативы вы можете поиграть с символьным дифференцированием, но тогда вы начнете создавать типы данных для выражений, которые могут быть сложными для уровня A / AS. Это не много кода, чтобы начать, всего пара строк, но это может быть страшно для студентов. В отличие от Derive и Mathematica, вы не получаете символические выражения бесплатно.

Основу комбинаторики легко изучить с помощью монады List. Это может быть полезно для преподавания теории вероятностей.

Haskell отлично подходит для числовых приложений, которые могут появляться на уровне A / AS, например. применение правила Симпсона или исследование выборочных средств и отклонений.

Вы занимаетесь теорией элементарных групп? Это легко написать и поиграть в Haskell.

В целом, если вы позаботитесь о границах, я подозреваю, что довольно просто сделать большую часть математики уровня A / AS с Haskell.


2

Я не уверен, что Хаскелл - хороший выбор. Конечно, он имеет очень «математическое чувство», имеет дело с бесконечными структурами и т. Д. Но вы можете оценить эти функции, только если вы уже знаете язык. Изучение Haskell для изучения математики ставит одну сложную задачу поверх другой. И обучение Haskell это трудно, даже если вы уже знаете , программирование. Так что это действительно зависит, если ваша аудитория достаточно яркая и любопытная, иначе вы потеряете половину из-за математики, а другую - из-за Хаскелла.


Изучать Haskell легко, если вы уже знаете математику. Очень просто.
номен

@ nomen Может быть, но это был не вопрос.
Landei

Я говорю, что трудно учиться кому-то, имеющему опыт программирования, это не дисквалифицирует.
номен

1

Никакой компьютерный язык не научит вас математике. Только математика научит вас математике. То есть: подход пером и бумагой (или мелом и классной доской), аксиомы, теоремы и доказательства. Это математика. Независимо от того, насколько сексуален этот язык, написанная на нем программа - это не математика, а приложение математики. Чтобы применить что-то, вы должны сначала изучить это.


1
Я не думаю, что кто-то ожидает, что язык программирования будет буквально учить математике, и я не думаю, что в первоначальном вопросе задавался вопрос о языке программирования, который буквально учил математике. Они хотят что-то, что можно использовать для некоторых упражнений, чтобы помочь с преподаванием математики.
user27539

Мел,
доска

Не согласен. Язык - это просто средство выражения. Мел, карандаш, компьютер: только инструменты, используемые для конкретного выражения математики. Языки - это всего лишь инструменты для абстрактного выражения математики. Сравните теорему Хаскелла-Карри об изоморфизме (программа является доказательством в конструктивной логике)
номен
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.