Журнал «Компьютерра» № 19 от 23 мая 2006 года - Страница 33
– Все это рассуждение похоже на то, что вы прошли эту математику, а теперь вам обидно, если кто-то назовет себя программером, и не пройдя всю эту хренотень.
Для себя я точно уяснил, что математика для программистов – это, может быть, и было необходимостью лет 20 назад (я не пытаюсь сказать, что она не нужна, но читать каждому талмуды Кнута – маразм), теперь это нужно только узкому кругу программеров, а не всем подряд. Со всей ответственностью могу сказать, что я не изучал всякие теории автоматов, но это не помешало мне получить признание и квалификацию в сфере разработки софта, а также и поощрение в неплохом количестве удушенных енотов.
Ну объясните мне, как знание глубин математического программирования поможет мне лучше спроектировать интернет-систему для работы в кластере, например?
Сверстать какой-нибудь «хоум пейдж» или переставить «винду» сможет любой мало-мальски смышленый гуманитарий. Спорить с этим не станут даже математические снобы, болезненно воспринимающие каждую удачу нематематика. Значит, человек без фундаментального математического образования легко устроит добрую половину российских работодателей. Разумеется, софтверные компании, провайдеры и прочие «требовательные» конторы в расчет можно не брать. Сейчас ИТ-зависимой является почти каждая организация, только запросы ее в большинстве случаев весьма скромны: поддерживать в работоспособном состоянии несколько компьютеров да помогать бухгалтеру мучить «1С».
Да и сами «корочки» в ИТ утратили свою магическую силу. Знакомый админ рассказывал, что удачно нашел себе помощника среди выпускников техникума. До этого ему пришлось пообщаться с десятком «специалистов», демонстрировавших вузовские дипломы и претендовавших на хорошие деньги. Однако их квалификация сильно не дотягивала до «парнишки из техникума». Таким образом, верить пенсионерке – системе образования – все опаснее: слишком уж неустойчива против ошибок стала комбинация из консерватизма и низкой зарплаты преподавателей.
Даже самые поверхностные тенденции на рынке труда заставляют задуматься о пользе математики. Зачем годами просиживать над решением дифференциальных уравнений, если эти знания окажутся мертвым грузом? Стоит ли проходить все круги «математического ада», если в дальнейшем придется конкурировать с каким-нибудь доморощенным кулхацкером?
Автор одного из учебников по такому сложному языку программирования, как С++, Ален Голуб, так говорит о роли гуманитарного и, в частности, лингвистического знания в процессе создания программ: «Программирование требует организаторских способностей и языковой подготовки, а не абстрактного мышления, необходимого для занятий математическим анализом». Далее Голуб развивает мысль в следующем направлении: зачастую в процессе подготовки специалистов в этой области слишком большое количество времени отводится предметам математического цикла, в то время как для проектирования необходимо как раз иное – «уметь написать последовательность действий на английском языке»[Цитата по php-coder.livejournal.com/22620.html, там же ссылка на оригинал в PDF]. И наконец делается вывод: «тот тип организационного мастерства и аналитических способностей, который нужен для программирования, связан полностью с гуманитарными науками».
Все это математическое богохульство наверняка уже вызвало у читателей-математиков желание отправить автора «фтопку». Программисты-математики в большинстве своем не мыслят жизнь вне «гимнастики ума», тем не менее со стороны эта уверенность кажется мало обоснованной.
Со времен Ломоносова нам известно, что «математика ум в порядок приводит». Однако этот аргумент напоминает больше хрестоматийную фразу. Почему нельзя шлифовать умы «компьютерщиков» чем-нибудь другим, скажем, изучением языков? Ведь сам процесс программирования – это написание кода.
Доступно и просто обосновать ценность математического образования – задача непростая. С ней сталкиваются еще школьные учителя математики, которым приходится втолковывать нерадивым ученикам, что без умения считать им – никуда. И если с младшими классами «прокатывают» примеры с деньгами, которые всем приходится считать во время похода в магазин, то со старшеклассниками, взявшимися за матанализ или геометрию, эта схема начинает давать осечки. Такому самоуверенному народу, как студенты, объяснить мировоззренческую ценность математики, как правило, вообще не удается. Поэтому никто особо и не пытается, следуя старой истине: вырастет – сам поймет.
Большинство удачливых «компьютерщиков», на самом деле, рано или поздно приходят к тому, что никакая математика в их жизни лишней не бывает. Знание это, похоже, чисто интуитивное, однако именно математическая броня есть основополагающее различие между «тяжелой артиллерией» и «криворукой пехотой». Сами преимущества, конечно, не в фундаментальных знаниях математики, а в том, что на этой почве выросло – умение решать нестандартные задачи, упорядоченный взгляд на вещи, склонность к универсальным решениям.
Математика в ИТ оказывается еще и предметом, который полезно изучать «про запас». Никогда не знаешь, когда в предстоящей работе возникнет необходимость в каких-нибудь экзотических математических познаниях. Многие потом с благодарностью вспоминают добросовестно отсиженные «бесполезные» лекции, прежние знания вдруг начинают «всплывать» и перестают казаться откровенным бредом.
Один знакомый чистосердечно признался, что в студенческие годы был не силен в дифференциальном исчислении. Став веб-программистом, он даже представить не мог, что пыльный университетский курс потребуется в одном из проектов. Так жизнь заставила его не просто воспользоваться «непрактичной» математикой, но и разобраться наконец в ее тонкостях.
Хотя, конечно, математика математике рознь. Какие-то разделы этой обширной науки жизненно необходимы в практике программирования, другие – складываются на «депозит», где и покоятся до поры до времени, пока очередной проект не вытащит их на поверхность.
– Математика – это не физкультура, чтобы была «сакцесс стори» о том, как умение подтягиваться помогло работать смотрителем крокодилов. Математические дисциплины необходимы, чтобы человек научился правильно думать. Если ты этому научиться не можешь, то с большой вероятностью не сможешь и разрабатывать софт.
– Научить программированию вообще очень затруднительно, то есть это скорее склад мышления. Математика закладывает основы, без которых очень сложно. Можно привести кучу примеров, когда программисты или еще кто в сфере ИТ, проучившись на матфаке, за всю свою жизнь потом ни разу не решат ни единого дифура. Но можно привести и обратные примеры.
Меж тем град упреков, который по привычке обрушивают на голову консервативной системы образования, вполне возможно, порожден отсутствием ясных альтернатив. Ведь искать виноватого чаще всего начинают тогда, когда ответа на вопрос «что делать?» попросту не существует.
Многие выпускники терзаются подозрением, что учили их не так и не тому. Однако предложить собственное противоядие затрудняются даже опытные айтишники, взирающие на преподавательскую возню с высоты своего практического опыта.
Хотя разрозненные мысли все-таки есть. Понятно, что абитуриенты, не способные мыслить логически, отсеются еще на этапе вступительных экзаменов. Тем не менее в число студентов попадают люди, по-разному знакомые с железом. Кто-то с детства паяльник из рук не выпускал, а кто-то боялся заглянуть в пыльные внутренности компьютера. Просвещать же «темный народ» в университете никто не собирается, а ведь любой мало-мальски квалифицированный человек понимает, что железо – это отдельная и бесконечная песня. Причем успех программ подчас сильно зависит от того, насколько эффективно они используют аппаратные ресурсы компьютера.