Предыстория

За последние несколько лет мне посчастливилось пообщаться с несколькими студентами бакалавриата, особенно из моей дисциплины бакалавриата — Машиностроение.

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

То, что я прочитал дальше, вызывает еще больший дискомфорт. Согласно статистике приема, опубликованной как ведущими учебными заведениями, так и мировыми, менее 30% мест было занято для получения степени инженера-механика в текущем учебном году.

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

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

Постановка задачи

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

Мое первое знакомство с программированием (отказ от простого программирования Logo с перетаскиванием и программирования интерфейса NetBeans) было в старшей школе. Из-за неинтересного и неправильного способа преподавания языка у многих из нас выработалось либо отвращение, либо отвращение к программированию. Нас попросили запомнить определение стеков, как вывести ряды Фибоначчи на экран (мы можем использовать только метод, которому нас научили) и сбили нас с толку определением правил определения области видимости.

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

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

Моя первая полезная практика программирования вошла в мою жизнь из-за моего непонимания монотонности. Во время моей исследовательской стажировки в IIT Guwahati меня попросили проанализировать данные, полученные в ходе эксперимента с солнечным элементом, на основе некоторых определяющих параметров. Один из аспирантов подтолкнул меня написать простой скрипт на Python для пакетной обработки вместо использования таблиц Excel, с которыми я был знаком. Я начал программировать, чтобы просто автоматизировать довольно обыденную работу по отображению определенных данных и их детализации! И я рад, что все началось именно так — с автоматизации повторяющихся/рутинных задач.

Рецепт

Я поступил в магистратуру с небольшим пониманием лучших практик программного обеспечения или каких-либо представлений о написании полезных программ. Первая лекция, которую я посетил во время учебы в магистратуре, была в понедельник утром в 8:00 — «Численные методы для уравнений в частных производных».

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

Наш профессор записал уравнение Бюргера на своем планшете, которое проецировалось на доску, а затем показал его простую визуализацию с помощью написанной им программы. Программа обработала вывод программно и выполнила его постобработку. Это было мое первое знакомство с тем, как программирование может помочь моему пониманию и помочь мне впитать его!

Программирование для меня похоже на готовку, которая является одним из моих любимых хобби. Чтобы написать хорошую программу или приготовить любимое блюдо, нужно отдать все свое внимание и внимание. Кроме того, одна часть плохого кода может привести к полной катастрофе всей программы, например, добавление избыточного количества некоторых ингредиентов. Рецепт катастрофы неизбежен на обоих фронтах! :)

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

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

Начните с основ

Когда я говорю об основах, я имею в виду не те, которые похожи на большинство руководств в Интернете, а базовый проект, связанный с интересующей вас темой. Если вам нравится гидродинамика, не начинайте с моделирования уравнений военно-морского флота! Лучше начните с уравнения Бюргера без каких-либо сложных граничных условий и смоделируйте их с помощью вашего любимого языка программирования.

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

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

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

Эта серия статей предназначена не только для инженеров-механиков, но и для всех, кто хочет использовать программирование в своих интересах. Спасибо за чтение.
Оставайтесь с нами!