Кто такой математик программист
Техник-математик-программист. А. И. Семенков
На следующем этапе математик-программист должен определить, существует ли решение задачи при заданных начальных условиях и является ли оно единственным или решений множество. Оказывается, что для многих задач нельзя получить искомый результат прямым решением уравнений, составленных по условиям задачи. В этом случае приходится применять методы приближенного численного решения, и математику-программисту нужно выбрать такой метод, который является наиболее приемлемым. Этот метод численного решения задачи он должен разработать во всех деталях, чтобы в дальнейшем по его описанию можно было составить алгоритм машинного решения и написать программу для вычислительной машины.
Затем математик-программист строит алгоритм решения, то есть записывает последовательность шагов решения задачи.
Чтобы найти или разработать алгоритм решения, нужны обширные знания и творческий труд. Когда алгоритм найден, порядок решения задачи строго определен и каждая вычислительная операция регламентирована. Тогда для получения решения остается только точно и беспрекословно следовать указаниям. Такую работу лучше всего передать для выполнения вычислительной машине.
Когда возникает необходимость написать доклад, статью или реферат, то начинают с составления плана, в котором отражаются основные идеи и порядок их изложения. При решении задач на вычислительных машинах также существует подобный этап, который представляет собой составление блок-Схемы алгоритма. Блок-схема представляет изображение алгоритма решения задачи в виде лаконичной графической записи. Алгоритм, представленный в такой форме, понятен любому человеку, знакомому с программированием.
Больших знаний и труда требует правильное и четкое проведение программирования и отладки программы. При этом математик-программист должен не только уметь составлять детальные блок-схемы алгоритмов, но и проводить собственно программирование, то есть запись последовательности шагов алгоритма на одном из множества алгоритмических языков.
Математик-программист должен также уметь подготовить техническое описание программы и документацию для тех, кто будет в дальнейшем пользоваться его программой, объясняющую назначение программы, ее технические данные и правила использования.
Много времени во всем процессе решения задачи часто занимает отладка программы. Для того чтобы ее сократить, математик-программист должен уметь действовать четко и организованно. Для этого необходимо программировать новую задачу, скрупулезно следуя предварительно проверенной блок-схеме алгоритма, и следить за тем, чтобы программа была наглядной и легко читаемой. Конечно, при этом нужно знать, и умело применять не только способы программирования, но и помещать соответствующие пояснения по тексту программы.
После того как отладка закончена и исправлены все найденные ошибки, начинается эксплуатация программы. Однако в процессе эксплуатации будут, возможно, обнаруживаться ошибки и их придется исправлять. Кроме того, может постепенно изменяться и усложняться задача и поэтому программу придется модернизировать. Такая работа называется поддержанием программы.
Работа математика-программиста чрезвычайно многообразна и имеет свои особенности в зависимости от специализации его работы.
Правильно ли записал информацию наборно-программирующий аппарат?
Математик-программист, занимающийся постановкой задач и созданием алгоритмов, должен в совершенстве владеть математическими знаниями. Математик-программист, создающий и отлаживающий программы, использует языки программирования и хорошо знает процессы отладки готовых программ.
Рабочим местом математика-программиста является письменный стол в комнате, где размещается лаборатория программного обеспечения вычислительного центра. Деятельность математика-программиста в основном мыслительная, работа односменная, но напряженная, требующая усидчивости, внимательности, подчас скрупулезности и, конечно, большого терпения.
Физическая нагрузка мала. Нервная нагрузка во время работы повышается в тех ситуациях, когда возникают ошибки в работе программы и появляется необходимость срочного их исправления.
Темп научно-технического прогресса во многом зависит от плодотворного труда математиков-программистов, поэтому успешное решение задачи приносит специалисту большое удовлетворение.
Эта специальность требует разнообразных и глубоких знаний. Математику-программисту нужно знать математику и вычислительную технику, принципы работы современных операционных систем, структуру и физическую реализацию ЭВМ, а также способы кодирования данных на носителях информации, изучить теорию и методы практического применения алгоритмизации и программирования, овладеть алгоритмическими языками высокого уровня. В работе необходимо знание английского языка.
Специальность техника-математика-программиста электронно-вычислительных машин можно получить в техникумах, квалификацию повысить в вузах.
Кем работают математики
Эта статья будет полезна тем, кто хочет развиваться в сфере математики, тем, кто окончил прикладную математику, хочет работать по специальности и хорошо зарабатывать.
Проблемы, с которыми я столкнулся после вуза
В далеком 2003 году я окончил прикладную математику и очень хотел работать по специальности (у меня было адекватное рвение выпускника). Я думал, кем мне работать и где нужна математика? Как желаемая профессия вообще может называться? У кого это все узнать?
Тогда, в 2003 году, со всей российской математикой была совсем удручающая ситуация. Представители предприятий приходили к нам в вуз и рассказывали о процветании и больших перспективах.
Одним словом, где работать математику было не ясно. И самый болезненный вопрос — «Зачем я изучал математику 5,5 лет?» также остался без ответа.
Настоящая ситуация гораздо лучше
Сейчас произошли достаточно серьезные подвижки в области работы для математиков. Не сказал бы я, что фундаментальная наука выросла, но математики-программисты сейчас стали одной из востребованных профессий. При этом платят таким специалистам сейчас очень хорошо. Прилично, потому что они прикладные математики, некие ученые-практики-программисты.
Если в начале 2000-х годов вакансий, связанных с математикой, было от силы штук 20, то сейчас на hh.ru можно найти около 2000 вакансий в России. Очень мощное движение.
Я просмотрел эти вакансии и предложения с других сайтов поиска работы и описал в деталях и примерах то, чем занимаются люди со знанием математики. Кое-что мне пришлось выбросить из анализа — мутные вакансии типа специалистов по написанию курсовых и дипломов.
Кем работают математики
Высоко востребована прикладная математика. Работодателям нужны специалисты, которые могут придумать что-либо и реализовать идею для последующего тестирования. Дороговато содержать двух специалистов, поэтому компании хотят одного универсала. Логика понятна и адекватна.
Места работы
Математики нужны во многих производственных и ИТ компаниях. Вот примеры нескольких особо популярных сфер работы:
Какие бывают специализации у математиков
Математик-программист
Самая популярная профессия. Специалист занимается программированием процессов, которые невозможно смоделировать без знания математики. В обязанности может входить:
Попадаются и более специфические задачи.
Требования часто выглядят серьезно и немного страшно:
Иногда требуется знание физики, гидродинамики, аэродинамики, электростатики, электродинамики или иных наук. Также может требоваться знание оптико-электронных приборов или иной аппаратуры.
Аналитик-математик
Аналитик работает с огромными массивами информации и занимается обработкой этих данных, автоматизирует работу с ними и оптимизирует бизнес-процессы.
В обязанности специалиста может входить:
Требования кnbsp;аналитикам не так высоки с точки зрения математики, но все же могут включать в себя некоторые специфические знания:
Иногда можно встретить требование знания нейронных сетей.
Исследователь (научный сотрудник)
По сути, это классический ученый, который изучает какие-либо процессы, ведет научно-исследовательские работы, создает математические модели, производит необходимые расчеты и т.п. Требования к исследователям-математикам включают наличие физико-математического образования, знания своей сферы и стремления к научной деятельности.
Таких вакансий на рынке встречается очень мало. Основной спрос на универсалов, которые могут быть исследователями и программистами одновременно.
Что представляет из себя направление «Прикладная математика и информатика»?
Я выбирал между ПМ и специальностью на факультете вычислительной техники в Политехе (СамГТУ). Выбрал ПМ. Это было до бакалавриата и магистратуры. Учились 5 лет. Все пять лет учили разную математику. Было и программирование, но то, что преподавали, я уже знал на то время. В общем, программирования мало, математики много.
Почему выбрал ПМ. Через родителей мы знали людей с обоих факультетов и ведущих кафедр. Зав. кафедрой ПМ (как человек) внушал доверие. Пошел туда. В этом плане выбор полностью оправдался, это оказался один из лучших учителей, кто мне когда-либо встречался. Он также был куратором группы. Было абсолютное уважение со стороны группы.
Специальность считалась самая сложная. Отбирались туда кто посильнее. Специально собирали хороших ребят с олимпиад, лицеев. Мы уж точно считали себя круче других (кстати, это хорошо сплачивает группу). Во время учебы часть ребят отсеялась, пожалуй, было тяжело. Несколько человек защитились по 05.13.05 к.т.н. и по какой-то спец. на к.ф.-м.н.
Кто куда пошел работать. Многие подрабатывали программистами во время учебы. После окончания по линии IT пошло около половины+ группы. Один человек остался преподавать математику (специальность это позволяет). Остальные пополнили ряды менеджеров (многие близко к IT) и т.д. Пошел ли кто-то заниматься тем, для чего готовят прикладных математиков. Из нашего выпуска я таких ребят не знаю. Только один работает с близкими вещами.
Для чего эта специальность? Для приложения разнообразной математики выше стандартного уровня в самих разных направлениях. Такие области есть.
Мне не очень нравилось то, что в изучаемой математике нет практической «реализации». Мне нравится математика, но учить много лет одну, другую, а потом еще и еще. скучно, что ли. Есть мнение, что «математика ставит мозги на место». Это во многом правда.
Насколько важна математическая подготовка в перспективных направлениях разработки ПО
Профессия программиста становится все более массовой и востребованной. Сейчас порог вхождения в ИТ-сферу в принципе снизился, но продолжает расти интерес к ИТ-технологиям в целом, и к программированию в частности.
Среди ИТ-компаний и программистов, тем не менее, растет конкуренция. Однако стоит отметить, что, по крайней мере, на рынке труда она достаточно честная. Например, принимая на работу программиста работодатель в первую очередь будет оценивать уровень реальных знаний и навыков, а не цвет диплома. Впрочем, эта ситуация способствует распространению «программистов-самоучек», которые ограничены узкой специализацией. Для них нередко оказывается справедливо выражение «шаг вправо, шаг влево – расстрел». Так что, сейчас недостаточно сказать: этот человек – «ИТшник», или даже программист. Программист программисту рознь.
Специализации программистов множатся и развиваются, программист, специализирующийся в одной области приложений, не всегда может понять своего коллегу, работающего в другой области. Хотя вроде бы и языки программирования, и технологии одни и те же. Области приложений могут кардинально отличаться друг от друга, и для того, чтобы писать специализированные программы, мало знать языки и технологии программирования, нужно хорошо разбираться в той области, для которой разрабатывается программный продукт. В последнее время все чаще при изучении предметной области возникает необходимость в математической формализации.
Я учился в ВУЗе, в котором раньше, лет 30-40 назад, не существовало специальности «Инженер-программист». Однако люди, занимающиеся программированием, там были – их называли «ПМщики». Дело в том, что учились они на кафедре Прикладной математики. Но справедливо было бы все-таки называть их математиками, нежели программистами.
Шли годы, и со временем кафедра стала курировать новую специальность – «Программное обеспечение вычислительной техники и автоматизированных систем». Математики в учебной программе стало гораздо меньше, а преподаватели начали сетовать, что у выпускников школ большие проблемы с математикой. То есть, зачисляясь на первый курс, многие студенты уже имеют достаточно слабую математическую базу, а так как времени на этот предмет теперь меньше в учебном плане, то надежды на улучшение ситуации мало.
Конечно, можно еще вспомнить, что раньше была и трава зеленее, и небо голубее… Но где же программистам прокачивать матчасть в сегодняшних условиях? Означает ли это, что теперь на «серьезные» позиции разработчиков будут охотнее брать математиков, а не программистов?
Новые реалии
Уже на последних курсах университета студенты часто узнают, что появились новые технологии, которые в ВУЗе не изучались: их просто не успели включить в учебную программу. Однако благодаря фундаментальному образованию, заложенным основам будущие специалисты могут легко изучить эти технологии самостоятельно. Но тут и встает вопрос о качестве этого образования. Всего ли там достаточно для сегодняшних требований рынка труда?
В последнее время новые технологии стали более наукоемкими – точнее, математикоемкими. Во многих областях человеческой деятельности стало активнее применяться математическое моделирование различных процессов, пишут в своем послании абитуриентам представители Новосибирского государственного технического университета.
Физическая реализация экспериментов, экспериментальная проверка выдвинутых гипотез являются очень дорогостоящими, как правило, требуют значительных человеческих и материальных ресурсов. А имитация экспериментов на математических моделях, выявление закономерностей в ходе многократного моделирования оказывается на порядки дешевле.
На основе математических моделей разрабатывается соответствующее программное обеспечение, реализующее математическую модель объекта и математические методы, позволяющие найти оптимальное решение. И если мы заменяем физический эксперимент математическим, то должны быть уверены, что их результаты совпадают. «И как тут специалисту по IT-технологиям обойтись без глубоких математических знаний и вычислительных методов?», задают вопрос они.
До начала 90-х годов, неспешно развивалась так называемая прикладная статистика. Но развивалась она больше в теоретическом плане, чем в практическом.
А «в один прекрасный» день настала необходимость адаптировать ее к практике. В связи с совершенствованием технологий записи и хранения данных на людей обрушились колоссальные потоки информации в самых различных областях. Деятельность любого предприятия (коммерческого, производственного, медицинского, научного и тд) теперь сопровождается регистрацией и записью всех подробностей его деятельности.
Стало ясно, что без продуктивной переработки потоки данных образуют никому не нужную свалку. Выявление в накопленной информации скрытых закономерностей является задачей интеллектуального анализа данных (Data Mining) – составной части процесса принятия решений. Если смотреть глубже, то в основе интеллектуального анализа данных лежит широкий спектр методов теории вероятностей и математической статистики.
Знания математики нужны большинству программистов, вот только какие именно разделы нужны для разработки того или иного вида ПО? Что нужно знать для того чтобы, программировать игры, искусственный интеллект, big data, научный софт и так далее?
Иван Хватов, разработчик ПО, «Яндекс»:
Насколько нужна программисту математика? Опишите, пожалуйста, свою историю отношений с матчастью.
В целом, нужна. В каких-то областях — больше, в каких-то — меньше. После университета в теорию погружался только если была необходимость по задачам.
В каких направлениях разработки необходима матчасть? Почему? Какие разделы математики там нужны?
Направлений много. Всего не перечислишь. Если, например, говорить про текущий хайп, то необходимо хорошо знать статистику. Базовый уровень, который надо знать везде: университетский курс математической логики, теории вероятности, статистики и дискретной математики.
Можете посоветовать, как подтянуть математический аппарат программистам, давно закончившим ВУЗ? Могут ли здесь быть какие-то сложности?
Проходить онлайн-курсы. Сейчас с этим нет проблем.
Чем отличается математическое мышление от программистского (алгоритмического)?
Не знаю, я бы это не разделял.
Какие специалисты лучше подходят для математикоемкой разработки: математики с азами программирования или программисты с азами математики?
Антон Каракулов, веб-разработчик, ТМ
Насколько нужна программисту математика? Опишите, пожалуйста, свою историю отношений с матчастью.
Всё зависит от того какие задачи предстоит решать программисту. Чем больше прикладных — тем реже нужна матчасть. Чем более системных — тем чаще оказывается востребованной.
К сожалению мои какие-либо внятные отношения с ней закончились на 2 курсе института. В тот момент ещё верилось, что она будет мне полезна и нужна, но в силу обстоятельств отвлёкся на другие знания, и потом уже было очень сложно вернуться к абстрактному изучению.
В каких направлениях разработки необходима матчасть? Почему? Какие разделы математики там нужны?
Как сказал уже выше, чем больше системных задач решается программистом, чем больше нужно знание матчасти. В названии мат. дисциплин всегда путался что к чему, поэтому тут что-то сказать уверено не могу.
Можете посоветовать, как подтянуть математический аппарат программистам, давно закончившим ВУЗ? Могут ли здесь быть какие-то сложности?
От тру-программиста слышал мнение что на coursera хорошие курсы на любой вкус. Можно начать с базовых, а дальше уже выбирать по интересам и необходимостям.
Чем отличается математическое мышление от программистского (алгоритмического)?
Математик определяет понятия (отвечает на вопрос «Что»), а программист транслирует их в машинный язык (отвечает на вопрос «Как»).
Какие специалисты лучше подходят для математикоемкой разработки: математики с азами программирования или программисты с азами математики?
В общем среднем по больнице — конечно, программисты с азами математики.
Артем Кухаренко, основатель NTechLab:
Насколько нужна программисту математика?
Если здесь имеется ввиду знание математики, то, на мой взгляд, оно обязательно далеко не во всех областях программирования, но лишним оно, конечно, тоже не будет. Я бы сказал, что в разных областях оно даст свой прирост к квалификации: в каких-то – 10%, в каких-то – 1000%.
Если имеется ввиду знание теории и основ области в которой человек работает, то, на мой взгляд, это must have для любого эксперта в своей области.
Опишите, пожалуйста, свою историю отношений с матчастью.
Учился в математическом классе одной из лучших матшкол Москвы — Гимназия №1543, потом учился на ВМК МГУ, где тоже была математика, не такая серьезная, конечно, как на МЕХМАТе МГУ например, но на достаточном уровне, чтобы можно было разбираться и понимать, например, современные алгоритмы машинного обучения. Плюс участвовал в школьных олимпиадах по программированию, где нужно было изучать теорию алгоритмов, что в дальнейшем мне очень сильно помогло.
В каких направлениях разработки необходима матчасть? Почему? Какие разделы математики там нужны?
Точно могу сказать, что математическая и алгоритмическая подготовка нужна в областях, связанных с машинным обучением, нейронными сетями, искусственным интеллектом. Мы активно пользуемся знаниями из следующих разделов: математический анализ, линейная алгебра, теория вероятности, линейное программирование и решение оптимизационных задач, алгоритмы, высокопроизводительные вычисления.
Можете посоветовать, как подтянуть математический аппарат программистам, давно закончившим ВУЗ? Какие курсы лучше посещать?
Сейчас появилось много открытых курсов, таких как Coursera, но в них обычно материал дается очень поверхностно, чтобы охватить как можно более широкую аудиторию. Есть, конечно, и исключения, но их мало. Есть несколько ресурсов, где материал дается на очень хорошем уровне, например, Stanford engineering everywhere: там просто записи лекций, которые читаются в Стэнфорде. На мой взгляд, их очень полезно смотреть если есть базовая подготовка.
Но нужно понимать, что получение хороших знаний в любой области – это достаточно долгий процесс и с нуля быстро (за несколько месяцев) получить хорошую математическую (как и любую другую) подготовку не получится. Если все-таки есть цель заняться этим серьезно, то, на мой взгляд, для этого лучше подойдет либо магистратура, либо второе высшее образование в математическом вузе.
Какие специалисты лучше подходят для математикоемкой разработки: математики с азами программирования или программисты с азами математики?
У нас в компании разработка и исследования разделены. Для разработки больше подходят программисты с азами математики, для исследований — математики с азами программирования. Но в обоих командах очень часто встречаются люди, у которых одновременно очень высокий уровень знаний и математики и программирования.
Пользователь Mrrl, рассуждая о разделах математики, необходимых программистам, писал следующее:
1) Математический анализ — без него просто никуда, основа всех численных моделей.
2) Алгебра (высшая) — применяется довольно редко. Либо в виде теории групп — когда нужно что-нибудь сделать с группами вращений или движений пространства, либо в виде конечных групп/полей, где она смыкается с теорией чисел. Но если уж пришлось туда забрести, то приходится использовать активно. Если и не в коде, то в разработке алгоритмов.
3) Аналитическая геометрия — думаю, она нужна любому, кто связан с компьютерной графикой, компьютерной геометрией, моделированием в 3D…
4) Линейная алгебра и геометрия — аналогично аналитической геометрии. Плюс матрицы вылезают во многих задачах обработки информации.
5) Дискретная математика — графы сюда входят? А булева алгебра? А конечные автоматы? Для разработки алгоритмов будет использоваться часто, пусть и в фоновом режиме.
6) Математическая логика — разве что на уровне понимания логических операций и кванторов. Чтобы доказать правильность программ, и реже — чтобы их спроектировать исходя из «дано» и «получить». Может помочь, когда условия задачи слишком формальны и упорно не хотят восприниматься мозгом.
7) Дифференциальные уравнения — если они не являются частью предметной области, то встречаются редко. Чаще в качестве такого же вспомогательного инструмента, как производящие функции. Или для анализа данных, оптимизационных алгоритмов…

9) Топология — кроме трассировки плат не могу представить, где она нужна. Возможно, в компьютерной геометрии, например, при построении поверхности по одному или нескольким облакам точек, при расчётах взаимодействия тел, для поиска пути в пространстве допустимых параметров какого-нибудь робота… Но я этим пока не занимался, и насколько нужна именно топология, не знаю. Для разработки алгоритмов, думаю, нужна.
10) Функциональный анализ — не помню, что туда входит. Но если базисы семейств функций (ряды Фурье и более сложные системы) изучаются там, то это полезно. Бесконечномерные пространства, скорее всего, не потребуются.
11) Интегральные уравнения — не сталкивался. Возможно, потому, что в качестве отдельного предмета я их не знаю.
12) Теория функций комплексного переменного — линейные и рациональные функции очень полезны для работы с движениями плоскости и сферы, с комплексными числами работать проще, чем с ортогональными матрицами. Ещё в комплексном поле удобно решать системы полиномиальных уравнений (они редко, но встречаются). И то же пространство Лобачевского в комплексных координатах выглядит приятнее.
13) Уравнения в частных производных — если не часть предметной области… могут пригодиться для каких-нибудь вариантов гладкой интерполяции данных (когда работы с базисными функциями почему-то не хватает). Насколько УрЧП нужны для моделирования, скажем, морской поверхности в компьютерной графике, не знаю — не занимался. Подозреваю, что нужны.
14) Теория вероятностей, математическая статистика, теория случайных процессов — в разной степени в любом анализе данных.
15) Вариационное исчисление и методы оптимизации — ИИ в играх и роботехника.
16) Методы вычислений и численные методы — сколько угодно. Если работа связана хоть с какими-нибудь вещественными числами.
17) Теория чисел — аналогично теории конечных групп. В целом, встречается нечасто. Если, конечно, не считать современной криптографии…












