Актуален ли опыт программирования в программе магистратуры по чистой математике?

Навыки программирования, такие как опыт работы с Java, Python, C++ или опыт работы в качестве разработчика программного обеспечения, могут быть незаменимы для прикладных математиков. Насколько полезно иметь такой опыт в качестве чисто математического аспиранта, когда основное внимание, как правило, уделяется доказательствам и строгости, а не вычислениям?

Дайте определение «полезному» и «опыту программирования».
Мне приходят на ум два приложения, и это должно быть два из возможных многих: 1- одно может использовать языки программирования для численного вычисления результатов интегрирований, расширений, формул и т. д.; 2- есть такие пакеты, как Mathematica, которые выполняют аналитические расширения и вычисления. Итак, мой ответ: да! В наши дни программирование — хороший навык.
Я бы посмотрел на это с другой точки зрения: программирование требует определенных логических, математических рассуждений и мышления, поэтому, если у вас есть опыт программирования, то это должно считаться очком в вашу пользу для курса чистой математики, независимо от того, курс ли это или нет. сам по себе может включать любое программирование.
Я думаю, что все упустили одну вещь: средства доказательства теорем ( пример их использования для математики) (я надеюсь) используются все чаще, поскольку приятно иметь постоянную, поддающуюся проверке запись о том, что определенная теорема верна. (конечно, я подозреваю, что это достаточно далеко от условности, поэтому еще долго не будет особенно распространенным)
если в чистой физике ответ нет, то наверное и в чистой математике тоже нет?
Что для вас «чистая» математика?
Даже если на первый взгляд это кажется противоречивым, существует раздел математики под названием «Экспериментальная математика», математика не является чисто дедуктивной. Таким образом, эксперименты выполняются компьютерами с использованием, например, систем CAS. На самом деле, для этого есть журнал.
У магистров математики (не обязательно чистой математики) был обязательный компьютерный курс. Не уверен, что он охватил все, но он включал числовой формат IEEE, допуски и накопленную ошибку округления и, предположительно, язык программирования.
У меня нет здесь представителя, чтобы опубликовать ответ, но если бы я это сделал, это было бы формой моего ответа на противоположный вопрос «Нужна ли математика для обучения программированию?» который вы можете прочитать на softwareengineering.stackexchange.com/a/137075/48582 ; пункт, который я еще не видел в ответах здесь, заключается в том, что навыки, которые вы развили в программировании, значительно помогут вам в изучении математики даже в темах, которые не имеют видимой связи с программированием.

Ответы (12)

Во многих разделах чистой математики вы используете программное обеспечение для вычисления примеров, которые некоторое время назад вы могли делать только с карандашом и бумагой. Это особенно верно в комбинаторике (моя область) и теории чисел.

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

Я вел курс бакалавриата, цель которого состояла в том, чтобы познакомить студентов с возможностями вычислений: Python, символьные манипуляции (mathematica и sage), электронные таблицы, LaTeX для написания математики.

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

Даже ограниченные навыки программирования имеют огромное значение, когда дело доходит до изучения LaTeX, а LaTeX, кажется, даже более широко используется в математике, чем в физике.
Однажды я искал определенные пути на определенных графах с помощью компьютера, а затем смог показать их общее существование, заметив закономерности для небольших примеров. Однако даже для этих небольших примеров графы на самом деле не были маленькими (это были графы гомоморфизмов графов между маленькими графами), поэтому я не мог просто искать пути вручную. (Более умный человек, конечно, мог бы найти лучшее доказательство, кто знает.)
Помимо Mathematica/Maple и им подобных, существуют такие инструменты, как PARI/GP для теории чисел и GAP для дискретной алгебры (теории групп).

Не совсем ответ на то, что вы спросили, но: посмотрите и за пределы аспирантуры. Большинство докторов математических наук на самом деле не остаются в академических кругах, а так или иначе попадают в промышленность. Почти каждая работа, которую математики в конечном итоге возьмут на себя вне академических исследований в области чистой математики, выиграет от наличия опыта компьютерного программирования. Так что, возможно, знание программирования не будет преимуществом при поступлении в аспирантуру, но в любом случае оно вам пригодится в будущем.

"почти каждый"... Верно. Но нынешняя докторская степень по математике. студенты (и их консультанты) часто не хотят этого признавать.
@GEdgar Да, но игнорирование или отрицание факта не делает его менее верным :-)
+1, очень важно подстраховаться. Они не любят этого признавать, вероятно, потому, что основная цель чисто математического образования — работать в академических кругах. Это похоже на признание того, что многое из того, что вы делаете, не будет иметь для вас ценности в долгосрочной перспективе. Конечно, есть исключения, но для многих типов работ, на которых люди заканчивают работу, вероятно, была более полезная область, в которой они могли бы зарегистрироваться (например, если вы станете программистом или разработчиком, более чем вероятно, что cs был бы более подходящим). полезный путь [или статистика/DS, если они заканчиваются в администраторах прогнозирования/моделирования/базы данных.])

Может быть, а может и нет. Игнорируя некоторые из наиболее очевидных ожиданий, таких как LaTeX, вы могли бы подумать о том, чтобы познакомиться с Pari, а также с программированием Mathematica и Sage/Python. Кроме того, когнитивное развитие, возникающее при изучении как процедурного, так и декларативного программирования, может быть неожиданным образом плодотворным.

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

В этой статье Википедии есть список доказательств, в которых использовались компьютеры: Доказательство с помощью компьютера.

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

Долгосрочная полезность в стороне - во время вашей докторской степени вам, возможно, придется преподавать класс, который не является чистой математикой и может потребовать, чтобы вы знали, как программировать...

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

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

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

Да. Например, в моем случае программирование на Matlab было очень полезно для построения рисунка. Латексный язык Tikz/PGF почти очень важен для построения фигур, диаграмм в коммутативной алгебре, алгебраической геометрии, теории чисел и т. д. Такие языки, как PARI/GP и SAGE, очень полезны в алгебре и теории чисел.

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

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

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

Практический опыт программирования очень полезен для любого высокообразованного работника, проводящего большую часть времени за компьютером, и для аспиранта в частности. Почему?

Автоматизация

Будучи аспирантом, вы, скорее всего, будете работать с программными системами для выполнения основных задач, таких как написание, поиск литературы, взаимодействие со студентами, проведение встреч, администрирование, оценка домашних заданий. Некоторые из этих систем имеют хорошо продуманный UX (пользовательский опыт) и позволяют вам сообщать компьютеру, что делать, со скоростью ваших мыслей или скорости набора текста.

Однако многие из этих систем могут быть довольно болезненными. Часто это простые вещи, такие как перетаскивание курсора по всему экрану вместо нажатия клавиши или 10-секундное ожидание загрузки страницы, которая могла быть загружена, пока вы делали что-то полезное. Это мелочи, но когда вам приходится делать их около 200 раз в день, эти неприятности накапливаются. Так что делать?

Сделай сам

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

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

Это также не особенно сложно, если у вас есть некоторый практический опыт программирования и вы знаете, какие существуют инструменты. Веб-приложение сводит вас с ума? Напишите пользовательский скрипт с помощью Greasemonkey/Violentmonkey/Tampermonkey. Некоторые простые манипуляции с DOM часто работают, я лично использую MDN в качестве эталона. Приложение может использовать больше сочетаний клавиш? AutoHotkey может помочь.

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

Как многие из нас заметили, «компьютеры» имеют большое значение, как и Интернет. Не все из этого имеет отношение к «занятиям математикой», но совсем немного . Я использую Perl для переупорядочения текстовых/TeX-файлов, Python для базовых вычислений, Sage для более тонких вычислений и графиков... даже если ни одно из этих вычислений или графиков не войдет в какую-либо публичную статью, которую я пишу.

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

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

насколько они полезны при применении к чисто математической программе?

Необходимость бороться с (La)TeX для набора ваших публикаций уже означает, что вам придется немного программировать; и если вы хоть немного привередливы, креативны или перфекционистичны, это будет больше, чем немного.

... вы можете подумать, что этот ответ ироничен, но у многих аспирантов есть боевые шрамы TeX, о которых они могли бы вам рассказать :-(

Хотите еще пример? Ну а у вас будет личный сайт? Это часто выигрывает от умения программировать. Есть ли шанс, что вы захотите продемонстрировать некоторые из абстрактных концепций, над которыми вы работаете, для более широкой аудитории? Это потребует программирования. Будете ли вы использовать пакеты программного обеспечения для абстрактной/символической математики? Еще один случай программирования входит в вашу жизнь. Черт, если бы я мог, я бы перепрограммировал лифт здания математического факультета моей альма-матер, логику которого я не мог понять.

Итак, программирование есть (почти) везде, в том числе и для чистых математиков.

(Кроме того, что сказали @EthanBolker и @WolfgangBangerth.)

Очевидно, что иметь навык лучше, чем не иметь его. Что касается прямой применимости к докторской степени по чистой математике, Python и, возможно, C++ могут быть полезны для определенных видов вычислительной работы (например, для создания примеров или проверки гипотез), упомянутых здесь другими комментаторами. Но обычно это делается с помощью пакетов, специально заточенных под математику, таких как Magma или Sage.

Если вы на самом деле спрашиваете, поможет ли опыт программиста на Python или C++ улучшить ваше приложение, ответ, вероятно, будет отрицательным, если только консультанту, с которым вы планируете работать, не нужен кто-то, кто может это сделать (например, если он не хотят сами кодить).