Чи хороший Haskell в навчанні основ математики?


19

Я беру участь у навчанні математики на класах з такими вимогами, як специфікація AS та математика рівня А.

Книги класів зазвичай надають приклади програмного забезпечення для комп’ютера, застосованого до завдань з математики, але вони, як правило, ґрунтуються на програмних додатках, таких як mathlab, matematika або виводяться.

Навіть коли використовується реальна мова програмування, це звичайно стара модна мова, як Pascal. І це справді сумно на мій погляд.

Тому що Хаскелл відомий своїми почуттями до математики, і тому що мене це також цікавить, я хотів би запитати, чи є Haskell хорошим вибором як методу вправ для продовження студентів для студентів першого курсу університету. Типовими предметами є функції, калькулювання, обмеження, але також лінійна алгебра, наприклад.

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

Відповіді будуть озвучені відповідально. Докладні відповіді, включаючи також основні приклади коду Хаскелла, застосованого до математики, такі як лінійна алгебра (наприклад, векторний простір), поліноми, розв’язування лінійних рівнянь, цінуються та орієнтуються як шукані.


3
Перевірте цю книгу: collegepublications.co.uk/computing/?00004
Фред

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

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

@edA: Mathematica! = Октава! Октав - клон Матлаба. Люди, які використовують і те, і інше, кажуть, що Matlab / Octave більше орієнтований на числові дані (великі масиви, FFT тощо), тоді як Mathematica краще для символічних маніпуляцій. Найближчий FOSS, еквівалентний Mathematica, ймовірно, Maxima (раніше Macsyma).
тайм

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

Відповіді:


9

Хаскелл зростає популярністю серед математиків. Як сказав один із блогерів:

"Після мого залучення себе до теми, одне, що виділяється, - це відносно невелика відстань між думкою, вираженою в моєму звичайному щоденному математичному дискурсі, і думкою, вираженою в коді Хаскелла".

Ось ось кілька зібраних поглядів, на які я вважаю, що ти не можеш помилитися з цим підходом.

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

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

Нарешті,


1
Прочитавши деякі ваші посилання, я не можу сказати, що я занадто переконаний. У вас є фактичні приклади того, як хтось сідає на сеанс Haskell і працює на ньому, як ви можете Mathematica / Maxima ?. Далі, в блозі "11 причин" вказується, що таке безлад у стандартній бібліотеці з точки зору математика, і дивлячись на список математичних пакетів, я бачу багато числових даних (наприклад, blas, fft), але не дуже спосіб символічного маніпулювання / КАС. Сказавши це ... обидві книги виглядають дуже цікаво!
тайм

Так, деякі приклади фактичної математики були б чудовими (наприклад, доповнення до матриці ліній. Алгебри тощо) - щоб побачити, як виглядає власне синтаксис. Надіюсь, немає навіть перенавантаження ...
Андрій Дроздюк

@drozzy: звичайно, є перевантаження оператора через класи типів.
номен

4

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

У вас не буде проблем з навчанням ідеї функції, а лінійна алгебра може бути гарною в Haskell. Лінійну алгебру часто викладають вкрай імперативно, оновлюючи масиви на місці. Це все можна перекласти на Haskell, але це може зажадати трохи подумати по-іншому.

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

Основну комбінаторику легко вивчити за допомогою монади «Лісти». Це може бути корисно для викладання теорії ймовірностей.

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

Ви займаєтеся теорією елементарної групи? Це легко кодувати і грати в Haskell.

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


2

Я не впевнений, чи хороший вибір Haskell. Звичайно, він має дуже "математичне почуття", має справу з нескінченними структурами тощо. Але ти можеш оцінити ці особливості, лише якщо ти вже знаєш мову. Навчання Haskell для того, щоб вивчити математику, складає одне важке завдання поверх іншого. І навчання Haskell це важко, навіть якщо ви вже знаєте , програмування. Тож насправді залежить, чи ваша аудиторія досить яскрава і допитлива, інакше ви втратите половину з-за математики, а другу половину через Хаскелл.


Вивчити Haskell легко, якщо ви вже знаєте математику за ним. Дуже легко.
номен.

@nomen Може бути, але це не питання.
Ландей

Я кажу, що важко навчитися тому, хто має досвід програмування, не дискваліфікує це.
номен

1

Жодна комп'ютерна мова не навчить вас математиці. Тільки математика навчить вас математиці. Тобто: підхід пером та папером (або крейдою та дошкою), аксіоми, теореми та докази. Це математика. Якою б сексуальною не була мова, програма, написана на ній, не є математикою, це лише додаток математики. Щоб щось застосувати, потрібно спершу навчитися цьому.


1
Я не думаю, що хтось очікує, що мова програмування буде буквально викладати математику, і я не думаю, що в оригінальному запитанні мова програмування буквально викладала математику. Вони хочуть чогось, що може бути використане для деяких вправ, щоб допомогти в навчанні математики.
user27539

Крейда, дошка ...
Quant_dev

Не погоджуюсь. Мова - це лише засіб вираження. Крейда, олівець, комп’ютер: просто інструменти, що використовуються для конкретного вираження математики. Мови - це лише інструменти для висловлення математики абстрактно. Порівняйте теорему про ізоморфізм Haskell-Curry (програма є доказом у конструктивній логіці)
номен.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.