globuzer
@globuzer
gezgrouvingus progreszive ombusgrander greyderzux

Как из математика адаптироваться-переквалифицироваться в программиста?

Как из специалиста-математика-теоретика переквалифицироваться, адаптироваться, перевоспитаться, обучиться, преобразоваться в программиста? Как математику сформировать образ мышления программиста, с сохранением всего математического багажа?
  • Вопрос задан
  • 4482 просмотра
Пригласить эксперта
Ответы на вопрос 8
@FoxInSox
Сесть за компьютер и начать программировать. Через n часов вы станете программистом, где n - от нуля до бесконечности.
Ответ написан
Комментировать
@asd111
Думаю вам дорога в Яндекс.
Поступайте в Школу анализа данных или в Computer Science Center. Там научитесь программировать и решать задачи машинного обучения. Думаю вам там будет очень интересно, поэтому если есть возможность то поступайте - это самый лучший способ научится программирвать и сразу найти крутую работу для математика-программиста.
Ссылки:
Школа анализа данных shad.yandex.ru
Computer Science Center compscicenter.ru
Ответ написан
Комментировать
Посмотрите данные темы:
Длинная арифметика
Динамическое программирование
Теория графов и чисел (криптография)
Рекурсия, перебор
Сортировка и последовательности
Комбинаторика
Простая математика
Геометрия
Целочисленная арифметика
Математическое моделирование
Жадный алгоритм
Структуры данных
Двумерные массивы


Почитайте о них, разберите каждую.

Архив задач и тренировка здесь:
acmp.ru
acm.timus.ru
Codeforces
Это очень полезные ресурсы (системы проверки), в которые входят очень интересные и трудные задачи, как раз предназначенные для олимпиадного программирования.
Ознакомьтесь здесь:
Олимпиадное программирование для новичков

Набор языков программирования в каждой системе разный. Вот некоторые из них:
Набор яп для тимуса
Для acmp.ru

Но для начала почитайте и разберите эти ресурсы/книги про алгоритмы:
algolist.manual.ru
Кормен Т., Лейзерсон Ч., Ривест Р., Штайн K. - Алг...

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

И последнее, чтобы Вас смотивировать. Николай Дуров (брат того самого Павла), Андрей Лопатин, Anton Maydell и другие создавшие ВК и Telegram стали теми, кем сейчас они являются благодаря олимпиадному программированию.
Ответ написан
gbg
@gbg Куратор тега Программирование
Любые ответы на любые вопросы
Можно начать с написания своих реализаций классических численных методов.

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

Ремеслу программиста можно научится только на практике.

Математику будет приятно использовать функциональные языки вроде LISP и Haskell, но на рынке они нынче мало востребованы.

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

Думается, прежде всего стоит определиться, - для чего вам нужно программирование. Вы хотите программировать для своей профессиональной математической деятельности? Матмоделирование? Матфизика? Железо?

Предположим, что вы с этим определились, - и тогда стоит вопрос выбора инструмента. Например:

Mathematica, коли вы с ней ещё не знакомы. Мультипарадигменная среда программирования чего угодно. Некоторая сумасшедшесть Стивена Вольфрама, кажется, идёт ей даже на пользу.

Функциональные языки программирования общего назначения включают уже упомянутые Haskell, LISP, Scheme, Clojure. Я бы предложил Scala, которой занимаюсь сейчас сам. Вам, вероятно, легко дадутся лямбда-исчисление и теория категорий, на которых оно всё работает. Основа - JVM, в этом есть и слабые, и сильные стороны; преимущество в том, что вы сможете писать и веб-приложения, и настольные, и мобильные.

C++ - это та ещё заморока; упоминаю его потому, что существуют книжки Александра Степанова - "Elements of Programming" и совсем недавно изданная "From Mathematics to Generic Programming", кои описывают программирование с точки зрения абстрактной алгебры. Базируются на языке, основанном на C++. Я не думаю, что с этого следует начинать, книжки трудные; но может быть, вам будет интересно просто полистать или сделать пометку на будущее.

Функциональщики терпеть не могут мутабельность (изменяемость) значений. Их инструменты - теории типов, множеств, категорий, лямбда-исчисление. Степанов же утверждает, что реальная машина имеет память, ячейки которой изменяемы по определению, и посему функциональщики витают в облаках и отрываются от бренной земли. Те в ответ обзывают его старпёром, застрявшим в далёком прошлом. В общем, жизнь продолжается.

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

Ещё некоторые моменты, которые вам могут быть интересны.

Конкретная математика за авторством Кнута, Грэхема, Паташника представляет собой учебник по математическим методам, которые авторы считали полезными в разработке программ.

Упоминание Искусства программирования Кнута стало уже обязательным в каждой теме об обучении программированию. Однако, живой человек, живущий не на необитаемом острове, вряд ли способен проработать оную книгу целиком. Скорее можно использовать её как справочник и как источник вдохновения.
Ответ написан
Комментировать
Mrrl
@Mrrl
Заводчик кардиганов
Боюсь, что будет очень трудно. Все эти юнит-тесты, соблюдение стилей программирования, документация, системы поддержки версий через какое-то время заставят забыть, что ты математик. Я сейчас стараюсь держаться от них подальше: попал на такое место, где нужен именно математик-алгоритмист, и, хотя пишу много кода, программистом себя считать не могу. Это опасное положение: если придётся менять работу, будет трудно найти что-нибудь подобное.
Так что чтобы переквалифицироваться в программиста, надо изучать современное программирование с нуля. А чтобы научиться придумывать и реализовывать алгоритмы - брать книжку по алгоритмам, и разбирать и писать их все подряд. Через какое-то время придумать себе задачу с околоматематической формулировкой, попытаться её решить (пример: построить все неэквивалентые триангуляции многообразий - с краем и без, содержащие данное число треугольников). Потом другую задачу, и т. д.
Ответ написан
Комментировать
@Elizavetta
Matroid: gamedev/js-разработка
1. Свыкнуться с мыслью, что от абстрактного решения до реально работающего кода долгий путь (это и есть работа разработчика).
2. Вас будут раздражать технические проблемы/отладка первое время, из-за сложившегося мышления. Надо быть морально готовым и преодолевать усилием воли.
3. Изучать сами технологии. Математическая подготовка поможет быстро схватывать теорию.
4. Начинать писать не только алгоритмический код, выбрать направление.
Ответ написан
Комментировать
ali_aliev
@ali_aliev
Разработчик на Django/Python, JavaScript
Ну наконец то дождались вопроса обратного характера :) Если вы о себе, то вам как раз нужна практика, если есть знания фундаментальных вещей, таких как алгоритмы и структуры данных. В то же время, если вам интересно использовать математику во всю мощь (компьютерную алгебру например) попробуйте Sage, Python.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы