Нужна ли программисту математика?
"Почему именно программисту? Что, других профессий нет?", - спросите вы.
Отвечу издалека. Часто это самый короткий путь к пониманию.
Советский анекдот
Подходит мужик к газетному киоску:
- Дайте "Правду".
- Правды нет.
- Тогда "Советскую Россию".
- Россию продали.
- А что есть?
- Остался "Труд" за 3 копейки.
Тогда это была шутка с намеком. А сейчас - факт.
- Вскоре Россию действительно продали. Точнее, отдали "за так", через залоговые аукционы.
- Правда - в сравнении предвыборных обещаний президента с послевыборными объяснениями, почему они не выполнены.
- "3 копейки" превратились в 22,5 т.р. - медианную "допандемийную" зарплату по стране.
И до пандемии "среднемедианная" не впечатляла. А нынче, пишут, циферка еще поубавилась....
Альтернативы трудоустройства молодежи
Какие среднестатистические альтернативы трудоустройства молодежи существуют в условиях схлопывающейся экономики?
- Продавать гаджеты? Нынче в киосках продают не газеты, а братьев их меньших.
- Развозить пиццу? В Москве пока можно ... Пока "Яндекс" не запустил свой беспилотный автомобиль. ))
Есть еще вариант: научиться программировать. За зарплату, кратно, а то и на порядок превосходящую "3-х копеечную" зарплату тех, кто гаджеты программировать не научиться.
Нужна ли математика будущим программистам?
Нужна ли математика будущим программистам? И если да, то какая и зачем?
На Хабре иногда случаются дискуссии профессиональных программистов и встречаются разные мнения на этот счет. Но, как бы смешно, примитивно и ненаучно не прозвучало следующее утверждение, тем не менее ...
... Всех программистов объединяет отсутствие страха перед символами.
Это качество абсолютно необходимо им всем. Настолько же, насколько способность открыть дверь и пройти через нее в спортивный зал, прежде, чем приступить собственно к тренировкам.
Отсутствие страха перед символами необходимо тем, чья работа состоит в манипуляциях с символами, с программным кодом. Пусть и внешнее - но об этом ниже.
Лирическое отступление
Я не программист.
Когда-то давно я программировал на языках, про которые из нынешних мало ктослышал. PL-1, FORTRAN, АЛГОЛ. Но было это очень давно)). Помню, несколько месяцев разрабатывал и отлаживал программу расчета и оптимизации эвольвентных и волновых передач. Приходилось кучу раз переводить ее в дырочки на бумажной ленте, загонять в компьютер, находить ошибку, опять пробивать дырочки ...
Поэтому мои соображения нужно рассматривать с учетом этого лирического отступления.
Джуниор, мидл и синьор
Джуниор, мидл и синьор.
Так называют программистов, способных выполнять задания разных уровней сложности. И график, соединяющий "уровни этих уровней", далеко не линейный. И, как мне кажется, самая большая пропасть лежит между первым и вторым, между джуниор и мидл. Называется она "компьютер сайенс". Не путать со школьной информатикой.
"Компьютер сайенс" относится к категории "гуманитарных наук". В смысле, что это наука о том, как думать, организовывать информацию, о понимании алгоритмов, паттернов мышления ...
Джуниор вполне может обойтись без всяких там "паттернов". Он - просто кодировщик. Он напишет то, что попросят. Если попросят внятно, если он писал уже что-то похожее.
"Дайте мне четкое техническое задание".
Это фраза может принадлежать только джуниору. Но четко поставленная задача не требует квалифицированных исполнителей и соответствующих супер зарплат.
Хотите умножить зарплату хотя бы на 2 или 3 - учитесь думать.
Но прежде - преодолейте страх перед символами.)
А как? А где? А на чем тренироваться?
Даже для того, чтобы стать джуниором и начать кодить, требуется преодолеть страх перед символикой. Снять страх перед "слишком много буков и цифер". Прежде, чем начать учиться думать, понимать, осваивать всякие там паттерны мышления ...
Это не шутка
Возьмите учебник математики посерьезнее 5-6 класса и увидите, о чем это я. А если не увидите - возьмите курс Ландау-Лифшица по теоретической физике. И тогда точно увидите.)
- "При чем тут это?"
Возьмите листинг какого-нибудь кода и узрите аналогию.
Суть в том, что и в математике, и в программировании вы увидите много символов, отличающихся от привычных нам букв естественного языка.
Для большинства школьников этого окажется достаточно, чтобы перестать смотреть дальше. Что уж там думать!..
Любые символы что-то обозначают. Между ними присутствует невидимая, связующая, превращающая их из кучи в целое, нить. Иногда это называют логикой.
Математика, изучаемая правильно, приучает к мысли: не только буквы родного языка являются символами, на что-то указывают и связываются в единое целое (текст по латыни - ткань, полотно). Не только русские буквы объединяются смыслом в предложениях.
Символы - это ничего, ноль. То, что они значат - все.
И, следовательно, какая разница, какие закорючки нарисованы? Важно, на что они указывают, какой смысл передают. Важна сама идея: символьная логика возможна.
Вот в этом смысле и есть смысл научиться понимать смысл)).
Математика? С ней все проще
Сначала нужно научиться понимать символы родного и могучего.
Понять, что буквы складываются в слова, слова в предложения, предложения в абзацы ... И вместе они образуют целое, объединенное смыслом, причинно-следственными связями.
А с математикой все проще и принципы все те же.
В математике существуют "специальные" символы, имеющие непосредственное отношение к логике.
+, -, = <, >. Но разве буквы русского языка - не "специальные" символы?
И в математике, и в русском языке есть и синтаксис, и пунктуация.
В русском - это запятые всякие, прочие двоеточия, которые "размечают" символы-буквы, участвуют в создании смысла.
Помните? "Казнить нельзя помиловать" (с).
Простой вопрос: где человек учится думать?
Ну, допустим, кодить - возвращаемся к высоким зарплатам )) он научится на курсах. А думать где?..
А платят существенно выше "3-х копеек" не за код. Платят за осмысление ситуации, за ее моделирование и решение. В этой цепочке самое простое - выразить решение на языке программирования.
Метафора высокой зарплаты
Многие изучают английский язык. Но немногим удается устроиться переводчиком Путина. Остальным-то что делать?..
Сегодня при наличии гугл-переводчика все меньше хотят платить собственно за знание английского! Совсем без английского тоже не всегда получается, но выучить его совсем нетрудно! Это третье на очереди действие для успеха.
Полная аналогия с программированием.
Вот так, несколько сумбурно, но, думаю, понятно я попытался объяснить, для чего и как изучать математику и родной язык.
Математика как таковая даже профессиональным программистам не всегда нужна. Но без нее войти в программирование, преодолеть уровень джуна крайне сложно.
Без понимания математики и без понимания родного языка. И то, и другое имеет дело со смыслом, а не с шаблонами.
Школа же "обучает" и русскому языку, и литературе, и математике исключительно через шаблоны. Вот оно, противоречие. И вот оно - его разрешение.
Изучайте математику, изучайте родной язык, учитесь понимать тексты. становитесь счастливыми и богатыми.