# Преподавание программирования в качестве общеинженерной дисциплины

Леонид Александрович Ашкинази

Преподавание программирования в качестве общеинженерной дисциплины


В СССР подготовка инженеров во многих вузах состояла в основном в сообщении некоторой теоретической информации и решении учебных, то есть формализованных, задач - конструирования изделий или частей изделий на основе этой информации. В некоторых вузах студенты глубже знакомились с реальным производством, в некоторых все ограничивалось экскурсиями. Однако необходимость серьезной практики была понятна всем, ибо деятельность практикующего инженера состоит не в конструировании "с нуля", а, в значительной мере, в использовании готовых блоков, работе с прототипом, своим или чужим (иногда - краденым), с описанием или без, работающим или нет. А когда изделие очередной раз "готово" - в его испытаниях, в осознании, почему оно не работает и внесении изменений. Кроме того, существенную часть работы инженера составляют поиск информации и взаимные консультации с коллегами. Во многих случаях ничего из этого "молодой специалист" не умел, и все понимали, что первые несколько лет на работе его будут учить.


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


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


Причина разрыва между вузом и заводом-КБ-НИИ была исторической - вузы и производство изначально существовали отдельно, и организация тесного контакта требовала больших усилий и вложений. Обеспечить их в стране с мобилизационной экономикой могло только государство и только под сверхзадачу. По-другому могло бы оказаться, если вуз и производство возникали в одно время и росли, взаимодействуя, или если вуз вырастал понемногу из ПТУ при производстве.


Радикально иная ситуация сложилась в компьютинге, причем примерно в те же годы. Любой средний вуз имел средние ЭВМ, а крупный мог себе позволить и БЭСМ-6. То есть у вуза в части компьютинга было свое реальное "производство". И вузы начали делать конкретные "изделия", то есть программы, имевшие заказчиков. А студенты, занятые этой деятельностью, работали в условиях, не столь сильно отличавшихся от работы после окончания вуза. С появлением доступных персональных ЭВМ ситуация развилась дальше.


Сегодня обучение программированию в вузе если и обязательно, то во многих случаях к нему относятся как к чему-то не очень нужному, причем даже на компьютерных специальностях. Иногда в качестве оправдания приводят тезис, что программирование как таковое - техническая специальность, и учить ему должны в ПТУ. В принципе, это было бы правильно, но у обучения программированию в ВУЗах может быть свое специфическое назначение.


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


Предположим, однако, что сегодня и здесь у нас возникает задача усовершенствовать именно инженерное образование. Можно ли это сделать? Решение перейти на бакалавриат и магистратуру внешне выглядит привлекательно. За время бакалавриата мы попробуем научить каким-то основам школьника, потерявшего на ЕГЭ два года и отученного этим натаскиванием думать. А дальше - либо пусть идет "к станку" и с глаз долой, либо - если он хочет получить более приличную подготовку - пусть поступает в магистратуру. Магистратуру вузы должны организовывать вместе с "НИИ и КБ", причем широкого профиля. Однако у этих "НИИ и КБ" ни денег, ни сил лишних нет, гарантий, что вложения в образование вернутся, у них тоже нет. Поэтому в сегодняшней ситуации вкладываться в магистратуру им нет резона. Фирм, настолько богатых, чтобы поддерживали высшее образование, сегодня в России, кажется, нет. Более того, в проект, который если что-то и принесет, то через десять лет, даже богатая фирма в России вкладываться не будет - не настолько они верят в стабильность.


Естественная идея - попользоваться западной образовательной системой, используя, отчасти, традиционно, их наивность, отчасти, опять же, традиционную тягу значительной доли молодых россиян к стабильной и предсказуемой жизни на том самом Западе. Причем сделать это можно двумя способами - приглашая преподавателей оттуда и помогая студентам получить там часть образования. По этому пути идет НИУ ВШЭ, и логика здесь есть - если хоть четверть поехавших за продолжением образования на Запад вернется, то все расходы окупятся, потому что люди получат то самое современное образование, которого им негде получить сегодня в России. Заметим, что по этому пути вроде бы идет и Китай, причем для китайца с западным образованием установлены весьма большие по китайским меркам льготы; в России пока ограничились призывами. Однако для взаимодействия с Западом нужны, опять же, серьезные вложения - как для приглашения преподавателей, так и для делегирования студентов. Так что пойти по этому пути может только вуз, имеющий соответствующий доступ к бюджету.


Для всех остальных можно рекомендовать именно введение тотального преподавания программирования. Разумеется, это должен быть не ПТУшный, а достаточно специфический ВУЗовский курс. С одной стороны, он должен опираться на соответствующие уровень мышления, психологию и мотивацию обучаемых. С другой стороны, он должен давать более широкую, как в идеологическом (различные парадигмы), так и в практическом плане подготовку, причем за ограниченное время. Подготовку, нацеленную на развитие именно общеинженерных и общенаучных навыков - поиска информации, взаимодействия с коллегами, построения моделей, работы с прототипами и блоками, тестированию, поиску и исправлению ошибок.


В соавторстве с Марией Гришкиной