Какая математика нужна программистам
Содержание:
- Базовые требования к профессионалу
- Навыки, необходимые программисту
- Роман Моисеенко, технический директор и сооснователь Мерката:
- Какая математика нужна программистам
- Статистика
- Роман Моисеенко, технический директор и сооснователь Мерката:
- Программирование активизирует центры обучения в мозге
- Александр Баталов, технический директор Zavento:
- Альтернативный экспресс-тест на склонность к программированию
- Ярослав Никонов, аналитик департамента разработки программного обеспечения компании «Аэроклуб ИТ»:
- Как учиться программировать неразработчику
- Андрей Хромышев, старший программист-разработчик ПО компании Acronis:
- Где можно изучить математику
- Плюсы и минусы
- Изучение математики для машинного обучения
- Программирование улучшает память и когнитивные навыки
- Алексей Смирнов, технический директор ИТ-компании «Нетрика»:
- 5: Распределение: главное — график
- Так чем же занимается программист?
- Александр Баталов, технический директор Zavento:
- Лучшая математика для курсов машинного обучения
Базовые требования к профессионалу
- Критическое мышление — умение выделять главное в требованиях, подходить к своему и чужому коду с точки зрения постоянной оптимизации и улучшения; навыки поиска лучших путей решения задач.
- Ориентированность на работу с деталями — в программировании не бывает мелочей. Даже если вы не написали ни строчки кода, вы наверняка слышали шутки про то, как отступ или потерянная точка с запятой отнимают часы в поисках бага и причин ошибок при компиляции. Невнимательный программист — нонсенс.
- Сосредоточенность, усилие, терпение — нередко приходится писать большие фрагменты кода, глубоко погружаться в поиск решения задачи. Любой отвлекающий момент растянет эти процессы надолго, поэтому программист должен иметь явно выраженный навык «свинцовой задницы», позволяющей дотошно разобраться в проблеме.
- Склонность к переработкам — вас сейчас возмутит этот пункт, особенно если вы выпускник или студент. Как так, переработка?! Только платно, по ТК РФ и вообще! Но нет, поработав немного, особенно на удалёнке, вы заметите, что с радостью отдаёте работе гораздо больше часов жизни, чем ей положено. Кстати, не замечал, чтобы кто-то активно боролся с этим явлением. Например, я пишу эту статью, на моих часах 00:09, а впереди ещё много текста и размышлений + основная работа 😉
- Навыки активного слушания и общения — вам придётся понимать, что вам хочет объяснить внешний или внутренний заказчик. Да, иногда их ТЗ звучат как описания товаров с Алиэкспресс, и вам придётся вытягивать детали в процессе тесного диалога и длительного обсуждения.
- Умение работать в команде — программист никогда не работает один и нужно уметь вписаться как в команду, так и в правила управления разработкой, методологии и code style вашей компании.
- Потребность в самообучении — именно потребность. Вы должны непрерывно и осознанно изучать новые фреймворки, библиотеки, SDK, API, языки программирования и прочие инструкции и материалы. Остановитесь — через 6-12 месяцев отстанете от поезда.
- Ответственность — программист всегда отвечает за качество кода, который он создал, за работу программы, за её стабильность и быстродействие. Если вы склонны валить вину на тестировщика, заказчика или коллегу-разработчика, вам лучше пойти в менеджеры проекта (очень злая шутка, простите). А если серьёзно, программист отвечает за программу не меньше, чем хирург за операцию или строитель за мост или здание.
Навыки, необходимые программисту
Английский язык
Все чаще проектная документация ведется на английском языке или часть команды — иностранцы. Усовершенствуйте ваш английский язык, чтобы он позволил свободно общаться. Большинство работодателей ожидают знания этого языка как минимум на уровне B2, то есть на уровне бакалавра. Если вы знаете, что у вас проблемы со свободным использованием английского языка — обязательно заполните пробелы!
Коммуникация
Не только на английском
Для разработчика чрезвычайно важно хорошо общаться. И с командой, и с клиентом
Умение четко выражать мысли позволит избежать проблем и задержек в реализации проектов, что, конечно, крайне важно.
Командная работа
Изучая программирование самостоятельно, к сожалению, у вас не будет возможности научиться работать в команде. И это очень важный аспект работы разработчика. Соответствующее распределение задач и сотрудничество позволят своевременно реализовать проект, поэтому стоит рассмотреть возможность участия, например, в программах развития, которые учат командной работе и сосредоточены на обучении через опыт. Благодаря этому вы будете готовы работать разработчиком.
Принятие критики
Чтобы вы постоянно развивались и совершенствовали свои навыки, вы должны научиться адекватно принимать критику и комментарии других. Не относитесь к ним как к «атаке», а только как к руке помощи. Чем больше комментариев вы получите, тем больше знаний получите. Также помните, что не каждый человек, который критикует вас, будет прав — вам нужно уметь проанализировать данный комментарий или подсказку и решить, стоит ли это того.
Организация работы
Этот навык важен не только в IT. Работодатели ожидают некоторой независимости даже от начинающих разработчиков. Поэтому стоит знать, как организовать свою работу, чтобы она была эффективной. Это покажет работодателю, что вы ценный сотрудник.
Роман Моисеенко, технический директор и сооснователь Мерката:
Мы устроили опрос разработчиков в нашей компании и они отметили, что очень пригодилась комбинаторика и комбинаторные алгоритмы, в основном — при оптимизации различных алгоритмов, работающих с перестановками, сочетаниями, размещениями, разбиением на подмножества, обходы графов, а также при оценке сложности того или иного алгоритма.
Также в прикладной разработке местами полезна тригонометрия. Из менее популярных, но все же полезных разделов — это теория множеств при работе со сложными массивами, числовые ряды, дифференциальное и интегральное счисление, статистика, однако их применение довольно специфично и сильно зависит от продуктов, которые разрабатывает компания.
Какая математика нужна программистам
Работа программистом требует познаний в нескольких математических разделах, которые не каждый человек даже слышал. Но благодаря опыту разобраться с ними не составит труда в будущем.
- статистика и комбинаторика – основу этого раздела проходят в старших классах. Для каждого программиста must have;
- логика и дискретная математика; раздел посвящен основам теории числе, множеств, база изучается в школе;
- математический анализ – самостоятельно изучить раздел, который нужен для работы в Computer Science, довольно трудно;
- теория алгоритмов, чтобы разобраться с эти разделом, нужно хорошо знать математику в целом. Знания раздела необходимы для анализа алгоритмов – основных понятий в программировании;
- линейная алгебра поможет развить абстрактное мышление. Программистам в сфере графики, разработки игр и виртуальной реальности без нее никуда.
Статистика
Если вы собираетесь заниматься аналитикой, то без статистики никуда. С ее помощью выявляются закономерности, которые помогают в исследованиях. Например, можно написать программу, которая определяет, какие статьи принесли больше всего трафика и почему. Для этого находятся все похожие случаи и сравниваются их показатели:
- день недели и время публикации;
- формат статьи;
- объем;
- затраты на рекламу;
- тема;
- автор;
- язык;
- количество ключей.
Также с помощью статистики и алгоритмов можно создать искусственный интеллект с машинным обучением — тогда программисту останется лишь подождать, когда ИИ сам найдет закономерности.
Полезная литература:
- Чарльз Уилан. «Голая статистика».
- Савельев В. «Статистика и котики».
Нужно: аналитикам, ученым, разработчикам ИИ.
Роман Моисеенко, технический директор и сооснователь Мерката:
Что касается ресурсов, к которым стоит обратиться в случае, когда нужных знаний нет или они просто позабыты за давностью лет, то скорее это не учебники, а Google и Хабр. Как правило, задача стоит не в самообразовании или восполнении недостающих знаний, а в вспоминании конкретного материала или нахождении наиболее эффективного математического инструмента для решения конкретной задачи. И вот на Хабре зачастую встречаются очень хорошие статьи по применению той или иной математики к решению конкретных задач, а особенно ценны комменты, где порой идет очень живое обсуждение плюсов и минусов описанного подхода.
Программирование активизирует центры обучения в мозге
Согласно исследованию доктора Джанет Зигмунд (Janet Siegmund), одного из ведущих мировых экспертов в области создания исследовательских компьютерных программ, анализ программного кода активизирует в мозге сразу пять зон.
Они связаны с обработкой естественного языка, рабочей памятью и вниманием. В опыте Джанет Зигмунд у программистов, проверяющих синтаксис в коротких фрагментах кода, активизировались эти пять зон мозга
Изображение: Carnegie Mellon University
В опыте Джанет Зигмунд у программистов, проверяющих синтаксис в коротких фрагментах кода, активизировались эти пять зон мозга. Изображение: Carnegie Mellon University
Комментирует переводчик
BA47 — это орбитальная часть нижней лобной извилины. Она отвечает за язык и рабочую память.
BA44 и BA40 — оперкулярная часть нижней лобной извилины и нижняя теменная доля соответственно
Они отвечают тоже за рабочую память.
BA6 — средняя лобная извилина (внимание, язык и рабочая память).
BA21 — средняя височная извилина (семантический поиск в памяти).
То есть при восприятии исходного кода активны части мозга, которые связаны с обработкой языка, памятью и вниманием, и почти не задействованы центры, ассоциированные с математикой и вычислениями. Когда эти зоны используются часто, нейронных связей между ними становится всё больше и больше
Это похоже на протаптывание тропинки. (По такому же принципу улучшается мышечная память при регулярном повторении монотонных движений.) В результате мозг быстрее реагирует на изменения, а мы быстрее обучаемся
Когда эти зоны используются часто, нейронных связей между ними становится всё больше и больше. Это похоже на протаптывание тропинки. (По такому же принципу улучшается мышечная память при регулярном повторении монотонных движений.) В результате мозг быстрее реагирует на изменения, а мы быстрее обучаемся.
Комментирует переводчик
Японские учёные в другом эксперименте выяснили, что чем выше квалификация программиста, тем более активны эти зоны и менее нагружены все «неспецифические».
Ещё одно исследование провёл аспирант Университета Джона Хопкинса Юнь-Фэй Люа (Yun-Fei Liua). В нём пятнадцати подопытным программистам делали фМРТ-сканирование.
«Есть так много способов научиться программировать: от самостоятельного обучения до курсов. А вот мозговые зоны у людей, когда они работают с кодом, всегда активизируются одни и те же. Это удивительно», — подвёл итог Юнь-Фэй.
Комментирует переводчик
В этой серии экспериментов учёные сравнивали, какие зоны активируются при анализе программного кода и при решении других задач: на логику, математику и понимание естественного языка.
Выяснилось, что программистские задачки по рисунку активации похожи на логические (левый лобный полюс) и математические (внутритеменная борозда и правый лобный полюс), в то же время при восприятии кода больше включаются «лингвистические» отделы мозга.
Занятия вроде программирования стимулируют мозг, это отличная тренировка для него. Они улучшают способность запоминать информацию и решать задачи.
Александр Баталов, технический директор Zavento:
Особенно рекомендую книгу «Совершенный код» Стива Макконнелла, ее можно назвать азбукой программирования. В ней описаны многие аспекты разработки, начиная от именования переменных и заканчивая личностными качествами инженера. Они будет полезна для прочтения как новичкам, так и опытным разработчикам (об этом, кстати, пишет и сам автор). В своей работе я ее нередко использую, ссылаясь на отдельные главы при обучении молодых специалистов. Эту книгу надо штудировать от корки до корки, даже предисловие является интересным и полезным. Читается легко, информация представлена в структурированном виде. Кстати, глава 35 этой книги прекрасно ответит на вопрос: «Какие книги и ресурсы стоит изучать».
Ну, и кончено, нельзя обойтись без реального общения. Я сейчас говорю про профильные конференции, где можно пообщаться вживую, расширять свой профессиональный круг знакомств, а также найти потенциального работодателя (если это необходимо). Лично мне нравится it-конференция «Стачка», ежегодно проводимая в Ульяновске в апреле.
Альтернативный экспресс-тест на склонность к программированию
А вы сможете создать алгоритм приготовления яичницы, не только в «идеальных» условиях, но и придумать несколько успешных альтернативных вариантов, а также создать алгоритм приготовления при исключительных, ошибочных исходных условиях?
«Если человек сможет расписать по шагам как приготовить яичницу, указав не только happy путь, а так же exceptional и alternative, тогда точно сможет стать программистом» — утверждает Николай Каштанов, ИТ-эксперт ICL Services по предоставлению сервиса.
Если говорить о личностных качествах, то Федор Зубарев, руководитель программ компании Bell Integrator считает, что чаще всего эти два типа людей потенциально могут стать хорошими программистами:
«1-й: дотошные, пунктуальные, иногда занудные. Люди, готовые разбираться с любой мелочью, вникающие во все детали.
2-й: люди творческие, немного неаккуратные в различных, в том числе и в бытовых, вопросах. Образование — профильное или чисто математическое»
Узнаете себя в одном из типов? Записывайтесь на бесплатный курс по программированию!
Разумеется, главный тест — это ваше искреннее желание обучаться и увлеченность программированием. Только это позволит достичь результата, какими бы впечатляющими не были ваши «исходные» задатки.
«Уверен, что добиться успеха в том или ином виде деятельности можно только упорным трудом, который всегда приносит должное вознаграждение. Разработка софта — не исключение. Если такая работа продолжает радовать, если хочется еще что-то поделать „для себя“ — поисследовать, изучить что-то новое — признаки таланта налицо.» — убежден Сергей Стрелков, руководитель направления собственных разработок компании КРОК.
Поэтому не забывайте, что при умножении любого числа на ноль, мы получаем ноль — то есть, какими бы феноменальными ни были ваши задатки, без усердной работы результата не будет. Талант необходимо развивать.
Начало усердной работы: профессия «Веб-разработчик».
Ярослав Никонов, аналитик департамента разработки программного обеспечения компании «Аэроклуб ИТ»:
Даже тем программистам, которые не принимают непосредственного участия в разработке программ для научных и математических нужд, знания по математике могут пригодиться как минимум для уменьшения объема хранимых данных или прогнозирования.
Я бы советовал в первую очередь обратить внимание на дискретную математику и математическую статистику. Например, при написании баз данных или построении поисковых систем не обойтись без знаний дискретной математики
Она же пригодится в логистике и построении маршрутов. Data mining в свою очередь требует владения математической статистикой, как и биржевой сектор, где большинство игроков — боты, при написании которых также требуются знания по матстатистике, как и при любом прогнозировании.
Разберу пример из моего недавнего проекта в компании «Аэроклуб». Задача состояла в построении дешёвых или быстрых маршрутов из города А в город Б, используя перелёты и ж/д поездки. С одной стороны, задача выглядит довольно простой, ведь мы можем построить ориентированный граф, где вершинами являются города, а ребра — перелётом или ж/д переездом, где вес ребра — это стоимость или время. Далее можно воспользоваться алгоритмом поиска кратчайшего пути, например, алгоритмом Дейкстры. Но есть несколько сложностей:
- Цены не статичны и могут отличаться в зависимости от дат.
- Хранить данные о ценах на каждую дату за год практически невозможно (за сутки осуществляется более миллиона перелетов).
- Получить данные о ценах по всем направлениям на заданную дату очень долгая процедура (измеряется в 10-ах минут, и пользователь обычно не готов столько ждать).
- Нужен не самый дешевый маршрут, а несколько дешевых маршрутов (т.к. пользователь хочет увидеть несколько вариантов и выбрать тот, которым ему будет комфортнее добираться).
Проблема, описанная в 3 пункте, не решается известными алгоритмами быстрого поиска кратчайшего пути, так как практически все они ищут один путь, а нам необходимы несколько. На помощь в таких случаях может прийти теория графов — один из разделов дискретной математики, и хорошее логическое мышление. Проблемы под пунктами 1, 2 и 3 можно решить математической статистикой.
Поскольку мы не можем хранить довольно большой объем данных, необходимо его сократить. Каким образом можно сократить данные? Скажем, хранить только одну стоимость за сутки из города А в город Б, но при этом эта цена должна быть правдоподобной по сравнению с ценами перелетов из других городов, т.е., если цены из А в Б дешевле цен из А1 в Б1, то и единственная цена должна быть дешевле.
Для решения этой проблемы можно прибегнуть к простому способу хранения минимальных или средних цен за сутки. Хотя и это далеко не всегда правильный выход, так как может быть ровно один перелёт стоимостью в 1000 рублей и 10 перелётов стоимостью в 5000 рублей, таким образом получаем минимальная цену — 1000 рублей, а среднюю — чуть менее 5000. Минимальная цена очевидно слишком сильно отличается от средней. А поскольку маршруты строятся не на реальных ценах в данный момент, то мест на дешевый тариф может не остаться, и маршрут не окажется дешевым, как планировалось изначально.
Правильный выход при подсчете цены за сутки из пункта А в пункт Б должен быть относительным, и строиться относительно цен из других пунктов. Для таких оценок помогает математическая статистика. Построив относительные цены по разным направлениям за сутки, мы решаем проблемы пунктов 1, 2 и 3 и расставляем ровно один вес на каждое ребро, соединяющее вершины графа (города). А используя дискретную математику (теорию графов) можем построить эффективный алгоритм поиска нескольких дешевых (быстрых) маршрутов из пункта А в пункт Б.
Как учиться программировать неразработчику
Начните с азов: типы данных, функции, основы алгоритмов. Ищите подходящую литературу, но не тяжелые монографии Кнута по информатике. Эти труды оставьте тем, кто планирует погрузиться с головой в разработку: в них много теории, написанной суровым языком профессионала.
В интернете можно найти массу учебных пособий «для чайников», где информация изложена очень подробно и доступным языком. Ищите книги конкретно под ваши задачи. Например, для изучения SQL — «Семь баз данных за семь недель».
Хорошим стартом и дополнительной мотивацией к овладению новыми навыками станет прохождение онлайн-курсов. Например, «Аналитик данных на Python» для тех, кто желает прокачать себя как маркетолога. Новичкам рекомендуем взглянуть на курс «Профессия frontend-разработчик», где вы освоите базовые навыки HTML и CSS, полезные в работе маркетологов, менеджеров и других специалистов.
Андрей Хромышев, старший программист-разработчик ПО компании Acronis:
Я думаю, здесь будет вполне уместна цитата великого Эдсгера Дейкстра: «Программирование — не набор пассов и заклинаний, не шаманство, не танцы с бубном, а математическая дисциплина. А всякая дисциплина, если она претендует на нечто большее, чем на внешний эффект, должна строиться на прочном фундаменте». Таким фундаментом для Дейкстры является математическая логика, а точнее — исчисление предикатов.
В большинстве случаев современному прикладному программисту нет необходимости иметь огромный багаж знаний по матанализу, статистике, линейной алгебре и прочим дисциплинам, но математическую логику знать практически необходимо — хотя бы ради того, чтобы понимать принципы работы и логически мыслить. Также справедливо утверждение, что программист с математической подготовкой пишет код лучше, понятнее, структурнее.
Стоит отметить, что многое зависит от задач, над которыми трудится программист: кто-то программирует сигнальные процессоры, а кто-то специфическое ПО для работы с ДНК.
В завершении скажу так: чем профессиональнее становится разработчик, тем «глубже» он идёт в предметную область, а в ней, безусловно, существует ряд инженерных решений, основанных на применении математического аппарата.
Где можно изучить математику
Благодаря Интернету с его познавательными роликами в изучении математики можно обойтись без использования учебников в большинстве случаев. Хотя иногда туда все-таки придется заглядывать. Вариант идеально подойдет для тех, кто не любит изучение материала по книгам.
В Интернете можно найти популярные математические курсы на английском языке. Они отличаются более понятным объяснением и доступностью. Такие уроки зачастую бесплатны, а предлагают их преподаватели и ученики ведущих мировых университетов. Минус в том, что нужно знать не просто английский язык, а его специализированный раздел, связанный с математикой и программированием.
Если брать платный вариант изучения этой науки, то можно рассмотреть дистанционные курсы. Они, как правило, гораздо дешевле, чем очное или заочное обучение, не требуют особенной подготовки, сдачи экзаменов. Всего лишь нужно выбрать интересующее направление, подать основные документы и оплатить курс.
Например, в Едином Центре Высшего Дистанционного образования специалисты помогут определиться с курсом и учебным заведением. Всю работу по подаче документов они берут на себя. Вы знакомитесь с программой курса, стоимостью и сроками обучения. Если вас все устраивает, то оплачиваете курс и приступаете к учебе.
Как правило, лекции и практические занятия происходят по видеосвязи, которая сохраняется в записи. Это позволяет несколько раз подробно пересматривать изучаемый материал. С преподавателями всегда можно связаться, домашние и практические задания проходят удаленно и отправляются по почте. По окончании курса вы сдаете экзамен и получаете диплом государственного образца.
Для самостоятельной практики можно купить или скачать из Интернета сборник задач.
Плюсы и минусы
Вторая вещь, на которую необходимо обратить внимание будущему «кодеру» — его силы и возможности. Хватит ли терпения, знаний, желания сидеть за учебниками, на форумах, просматривать видео, изучать документацию и материалы на английском языке
Чтобы человек увидел, кто такой программист, мы приводим основные недостатки и преимущества данной профессии. В фильмах этого не показывают.
Плюсы:
- Работа с разными людьми (как плюс, так и минус), порой большим количеством людей, с разным уровнем понимания в IT-сфере и предмете разговора: тяжести в поисках общего языка, конфликты, постоянные доделывания и переделывания проектов, потому что «не так понял», «не это имел ввиду», «ситуация изменилась» и т.д. Второй аспект – коллеги: конфликты, прессинг, зависимость один от другого в командной работе.
- Относительно свободный график, если не работаете на полный рабочий день. Возможность работать дома – удалённо, выполнить свою часть проекта и отдохнуть или заняться фрилансом. Хотя есть компании, где не дадут передохнуть ни минуты.
- Возможность работать удалённо из любой точки планеты. Освоив профессию, можно уехать в теплые страны, тихий городок или на природу, и делать всё то же самое.
- Чаще всего, заработную плату программисты получают в иностранной валюте, так как работают на европейце, американцев, китайцев и т.д.
- Работа будет всегда – ввиду востребованности профессии программиста, опытные люди всегда найдут себе занятие. И чем уровень и навыки выше, тем более интересными и высокооплачиваемыми будут работа или проекты и зарплата.
Минусы:
- 7-11 часов в сутки 40-60 часов в неделю перед монитором на работе плюс парочку дома вечером сказываются на здоровье. Во-первых, садится зрение из-за постоянной работы с «текстом». Во-вторых, опорно-двигательная система – нагрузка на позвоночник, шею, малоподвижный образ жизни. В-третьих, нервы, особенно если с компанией или командой повезло не очень.
- Зарплата в первые месяцы и даже год вряд ли будет больше, чем на предыдущем месте работы. В лучшем случае. А фрилансеры могут пару месяцев вообще за хлеб работать: опыта набраться, рейтинг заработать.
- Постоянное обучение. Посвятив несколько месяцев книгам, форумам и практическим занятиям, будьте уверены, обучение только началось. И даже получение сертификата за прохождение курсов или диплома в ВУЗе – то же самое. Если вам не 15-20 лет, приготовьтесь к тому, что будете перенимать опыт и просить помощи у молодых ребят, которые могут и в сыновья годиться. А времени обучение и изучение технологий и «примочек», которые понадобятся для очередного проекта или решения задачи, занимают очень много. И знание английского языка будет востребованным.
- На взлом банковских систем за 30 секунд и написание программ за полчаса надеяться не стоит. А на их отладку и доработку может уйти столько же времени, как на написание кода.
Программирование – не столь весёлая и лёгкая профессия, как рисуют фильмы. Постоянный набор кода – текста программы, соответствующего правилам языка программирования (ЯП), — обычно, дело скучное.
Изучение математики для машинного обучения
Хотя изучение языка программирования, такого как Python, необходимо для машинного обучения, изучение математики является ключом к её пониманию. Чтобы стать профессионалом в области машинного обучения, вы должны быть уверены в линейной алгебре, исчислении, вероятности и статистике.
Математика необходима для машинного обучения, потому что компьютеры видят мир иначе, чем люди. Там, где люди видят изображение, компьютер увидит 2D- или 3D-матрицу. С помощью математики мы можем ввести эти измерения в компьютер, а линейная алгебра предназначена для обработки новых наборов данных.
Программирование улучшает память и когнитивные навыки
С возрастом ухудшается наша способность запоминать новое и память в целом, но в одном из исследований учёные обнаружили, что «интеллектуальные занятия служат буфером, который сглаживает когнитивный спад».
Проще говоря, занятия, которые требуют значительных умственных усилий, такие как программирование, помогают бороться с потерей памяти и укреплять здоровье мозга.
Комментирует переводчик
К слову, деменция может настигнуть не только в старости: ранняя деменция диагностируется у людей в возрасте от 30 лет. Учёные считают, что риск её снижается, если питаться сбалансированно, поддерживать физическую активность и активность мозга.
Программирование — отличная зарядка для ума. И вряд ли хуже решения кроссвордов, изучения иностранных языков или разгадывания головоломок. Ведь, согласно этому исследованию, программирование соответствует всем критериям мыслительной деятельности, которая действительно улучшает мозг:
- Во-первых, это интенсивная когнитивная деятельность.
- Во-вторых, она интеллектуально трудна.
- И в третьих, она подразумевает изучение чего-то нового.
Кадр: фильм «Сноуден»
В человеческом мозге два полушария: левое и правое. Правое отвечает за интуицию и воображение, левое — за аналитическое и логическое мышление.
При программировании задействованы функции обоих полушарий, поэтому оно развивает мозг комплексно. Оно усиливает когнитивные способности, которые отвечают за обучаемость, преодоление интеллектуальных трудностей, запоминание информации.
Комментирует переводчик
Кажется, здесь автор повторяет популярный миф о том, что левое и правое полушария работают по-разному. Эта теория появилась во второй половине XX века с лёгкой руки лауреата Нобелевской премии Роджера Сперри.
Позднее учёные выяснили, что, каким бы делом ни был занят человек, в нём участвуют оба полушария, причём разные зоны — в зависимости от вида деятельности, но вот доминирующих сторон не наблюдается. Например, в этом исследовании нейробиологи сделали магнитно-резонансную томографию тысяче человек, чтобы опровергнуть подобные заблуждения.
Алексей Смирнов, технический директор ИТ-компании «Нетрика»:
Если изучать только отдельные области, образование программиста не будет полным. Например, трудно обойтись без дискретной математики — пожалуй, самой применимой в области общего программирования. Теория алгоритмов сильно зависит (как минимум) от знаний алгебры и математического анализа.
Большая часть разработчиков веб-приложений скажет, что им вполне достаточно школьной базы и самообразования — просто потому, что каких-то особенных математических навыков в этой сфере разработки ПО не требуется. Программистам, работающим на более сложном уровне, понадобятся более фундаментальные знания — например, в индустрии разработки компьютерных игр (Game Development) очень полезны знания алгоритмов, линейной алгебры и геометрии
В любом случае, прежде чем начать строить свою профессиональную карьеру в программировании, крайне важно заложить те самые базовые знания, которые в обязательном порядке даются в сильных технических вузах
5: Распределение: главное — график
Сложность: 1/3
Распределение — просто закон соответствия одной величины другой. Например, в теории вероятностей, где появился этот термин, это было соответствие между значением случайной величины и вероятностью того, что она примет это значение.
Распределение вероятностей для граней игрального кубика — прямая линия на уровне ⅙, или 16,67% вероятности
Но дата-сайентисту распределения требуются не для вероятностей, а чтобы понять, какой именно процесс скрывается за данными. Поэтому ему (то есть вам) нужно запомнить названия, графики и параметры всех , благо их не так много.
Например, у знаменитой гауссианы, или нормального распределения, есть всего два параметра, которые влияют на форму графика: μ (произносится «мю»), двигающий «колокол» вправо-влево, и σ (сигма) — определяющий одновременно и ширину, и высоту.
Так чем же занимается программист?
Программист — это специалист, который пишет код. Ремонт техники не входит в его профессиональные обязанности. В мире существует несколько сотен или даже тысяч языков программирования, и знать все просто невозможно. Кодер не обязан разбираться в приложениях, которые не нужны ему для работы или личной жизни. Программисты хорошо зарабатывают, но только если хорошо и много работают.
Вообще, большинство мифов о программистах — из прошлого века, когда не было фреймворков, а сайты писали на одном HTML. Чтобы понять, насколько изменилось современное программирование, достаточно сравнить игры последних пяти лет с играми девяностых. Да, сейчас инструменты геймдева и высокоуровневые языки упрощают работу, но ведь и на них пишут не Doom I, а Death Stranding.
Александр Баталов, технический директор Zavento:
Если вы планируете заниматься графикой, то, скорее всего, вам пригодятся дифференциальные уравнения и геометрия. Если моделированием естественных процессов (например, в области энергетики), то нужны: математический анализ, дифференциальные уравнения, математическая физика и вычислительная математика. Если финансовой сферой, то необходимо разбираться в теории вероятности и математической статистике, а также математической логике, алгебре, теории чисел и вычислительной математике. Для создания игр пригодятся все разделы математики, так как там есть и отрисовка графики, и моделирование физических процессов, ну и, конечно же, создание искусственного интеллекта.
Лично в моем опыте больше всего пригодились математический анализ, дифференциальные уравнения и вычислительная математика.
Лучшая математика для курсов машинного обучения
Научитесь создавать ИИ после завершения этих курсов математики для машинного обучения.
Есть много способов изучить математические концепции, используемые в машинном обучении, в том числе очные занятия, онлайн-курсы и бесплатные курсы.
Стоит ли изучать машинное обучение?
Примените свои математические навыки для создания обучающихся машин.
По данным Бюро статистики труда США, учёный, занимающийся компьютерными и информационными исследованиями, может получать среднюю зарплату в размере 122 840 долларов в год. Математика для машинного обучения может помочь вам начать свой путь к машинному обучению.