Какой хороший язык для разработки простых, но настраиваемых математических программ? - PullRequest
3 голосов
/ 19 апреля 2011

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

Я видел ветку за веткой с вопросами от новичков, спрашивая: «Что лучше?язык для начала?а потом всегда начинается ожесточенная война, или кто-то просто отвечает: «Нет лучшего языка, лучше выбрать один и начать его изучать».Мой вопрос немного более сфокусирован, чем этот.

Прежде всего, я программировал всю свою жизнь, в очень ограниченных возможностях.Мое самое глубокое обучение было на C ++.Хотя в моей программе получения степени EECS я решил никогда не быть разработчиком программного обеспечения, потому что я не мог не общаться с людьми в течение столь длительного периода времени.Вместо этого я понял, что хочу стать учителем математики, и именно по этому пути я пошел.

Но теперь, когда я на этом пути, я начал понимать, что, возможно, я смогу разработать собственное программное обеспечение, которое поможет мне в классе.Если я хочу продемонстрировать евклидов алгоритм, что может быть лучше, чем иметь программное обеспечение, которое нарушает процесс?Студенты могут использовать это программное обеспечение как часть своего обучения, а продвинутые студенты могут даже разработать программы для себя.Или с Ipad в руках, почему бы не иметь приложение, которое позволяет студентам самостоятельно посещать занятия?Это, безусловно, упростит некоторые потребности управления классом.

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

Самое большее, что я использую вкласс сейчас iWork Numbers / Microsoft Excel для моего класса статистики.Студенты могут изучить основные статистические функции и преобразовать некоторые из своих данных в графики.

Я немного побаловался с R и использовал Maple в колледже.Я начал базовые учебные пособия по разработке для OS X / iOS и действительно добился значительных успехов в создании приложения для OS X, которое принимает текстовую строку, преобразует ее в числа и выполняет шифрование с использованием модульного сложения и умножения.Иногда я использую Wolfram | Alpha, чтобы сэкономить время на быстрое решение уравнений или базовых преобразований.Я знаю о MatLab, Mathematica, и недавно люди говорили мне проверять Python или Ruby.Я также знаю базовый HTML, и хотя он сейчас забыт, я изучал Javascript и PERL в колледже.

Если я продолжу путь Obj-C / Cocoa, я думаю, что он будет иметь большие преимущества.К сожалению, все, что я создал для Mac, можно будет использовать только на Mac, поэтому оно не будет универсальным для всех моих учеников.Возможно, тогда изучение веб-языка будет лучше.Во-вторых, мне интересно, является ли основное использование математическим, тогда, возможно, мое время было бы лучше потратить на изучение языка программирования Mathematica, или R, или чего-то меньшего, основанного на GUI и больше на простом кодировании алгоритмов, возможно, Python или Ruby?*

Похоже, у Mathematica уже есть много демонстраций для различных математических концепций, поэтому вопрос о том, как заново изобретать колесо, у меня тоже есть.Я думаю, в целом, было бы хорошо иметь больше контроля и дизайна вещей, как мне нужно.И потом, если я захочу создать приложение «Посещаемость» или что-то еще, у меня уже будет опыт программирования, чтобы легче было проектировать что-то для моего iPad или MacBook.

С этим связан вопрос: какой хороший язык преподавать моим ученикам? В своем выступлении на TED Конрад Вольфрам говорит, что один из лучших способов проверить понимание студентов - это написать им программу. Но если Mathematica выполняет для них математику практически автоматически, то я не уверен, что получит более глубокий опыт разработки логики для себя, как вы делаете, когда пишете на C, или на традиционном процедурном языке.

Я знаю, что программированию нужно время, чтобы учиться, но я также знаю, что на данный момент моя цель не состоит в том, чтобы создать приложение типа «Tiny Wings». С легкостью магазина приложений, некоторые из моих работ могут быть дополнительным источником дохода, но я считаю себя скорее любителем, а теперь учителем, который смотрит на разработку программного обеспечения специально для его способности помочь мне продемонстрировать математические концепции.

Я думаю, что я буду продвигать Obj-C / Cocoa для OSX / iOS, но если у кого-то есть лучшее руководство по всем остальным доступным материалам, это будет высоко ценится. Я не думаю, что хотел бы полностью перейти в Интернет (мне нравятся приложения), но, возможно, кто-то может предложить хороший способ соединения того, что я создаю в XCode, с универсальной веб-версией. Например, если вы нашли алгоритм в obj-c, проще ли перевести его на ruby ​​и запустить его в сети, или есть другой подход, который работает лучше?

Ответы [ 2 ]

1 голос
/ 19 апреля 2011

Mathematica очень хороша для первой части вашего вопроса. Я использовал интерактивный режим (Manipulate []) для объяснения вещей моим колледжам (и себе). Он создает действительно хорошие динамические фигуры и довольно выразителен (хотя ваш код может выглядеть как строковый шум). Это очень мощный инструмент, но он делает для вас гораздо меньше, чем вы думаете. Это довольно интуитивно понятно, и это хорошо для обучения.

Вы можете использовать Scala, если вы хотите "простой" способ сделать предметно-ориентированный язык для обучения. Python, кажется, вводит людей в заблуждение как первый язык программирования. Цель C кажется мне совершенно случайным выбором.

Математика тогда. Это стоит своей цены. Но все, что интерпретируется и имеет интерактивную оболочку, вероятно, лучше, чем скомпилированный язык. BBC BASIC?

0 голосов
/ 18 июня 2011

Ничто не сравнится Haskell для математического программирования общего назначения. Вики достаточно обширна, и IRC-канал (#haskell на Freenode) отлично подходит для вопросов. Если вы статически связываете свои двоичные файлы при компиляции, вы сможете запускать свои программы практически на любой системе (за некоторыми исключениями, например, libgmp).

Код на Haskell читается (примерно) как математическая запись, когда вы освоите его, поэтому он может действительно помочь связать вещи для ваших студентов, которые мотивированы для написания своих собственных программ. Чисто функциональный стиль также может быть полезен, поскольку он в меньшей степени ориентирован на ввод-вывод и сортировку данных (что совершенно полезно в приложениях, возможно, в меньшей степени для чистой математики), а также на фактическое создание и совершенствование функций и алгоритмов. , Вы даже можете составлять функции так же, как на бумаге.

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

Для идеи программы на Haskell для педагога, проверьте эту ссылку .

Хороший список аргументов также можно найти по адресу: Одиннадцать Причин использовать Haskell в качестве математика и книгу Путь Haskell к логике, математике и программированию

...