ProgKids

Как знание математики помогает в программировании

Все знают, что программисты должны хорошо знать математику. Во многом благодаря сильной математической школе, которая была заложена еще в советские времена, российские разработчики так уверенно конкурируют со своими зарубежными коллегами. Отсюда вопрос, который возникает у многих родителей, желающих обучить своих детей программированию: какие знания нужны ребенку, чтобы начать учиться? И работает ли этот процесс в обратную сторону — может ли знание программирования помочь с математикой?
На самом деле ситуация не совсем однозначная. Да, математика действительно применяется во многих областях программирования. Но с другой стороны многие современные языки специально создавались с прицелом на людей, далеких от математических дебрей, которые используют программирование для решения прикладных задач. Это снижает порог входа в мир разработки и позволяет создавать компьютерные программы, не слишком разбираясь в основополагающих принципах, благодаря которым компьютер выполняет те или иные функции.


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


Такая работа требует от программиста сразу нескольких умений:


  • Умение понять контекст актуальной задачи и убрать из этого контекста все лишние детали, оставить самую суть, которая необходима для решения проблемы;

  • Умение разделить сложную систему на процессы, чтобы понять, как и в каком порядке они протекают;

  • Умение создать некую базовую модель, которая включает в себя все необходимые процессы, но при этом оставляет за скобками все необязательные факторы.


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


Отсюда вывод: дети, которые учатся программировать, одновременно получают бесценные навыки решения проблем, которые пригодятся им в любой ситуации, чем бы они ни занимались. И в любой карьере, которую бы они ни выбрали. Подробнее об этом мы рассказывали в статье «Почему вашему ребенку нужно уметь программировать».


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


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


Завершим нашу статью такой мыслью: можно не знать математику и стать хорошим программистом, но великолепным программистом без этих знаний стать не получится.