Журнал «Компьютерра» № 6 от 14 февраля 2006 года - Компьютерра. Страница 29
К моему большому удовольствию, несмотря на прагматичное название, в основном конференция была посвящена не софту как таковому, а гораздо более общим и интересным вопросам. Тон обсуждению задал первый же доклад под заголовком «Какая информатика нужна информатикам?». Николай Николаевич Непейвода, профессор Удмуртского государственного университета, рассказал о проблемах, неизбежно возникающих всякий раз, когда речь идет о подготовке высококвалифицированных ИТ-специалистов, а не «кодеров». Отсутствие системного подхода к построению учебного курса и ориентированность на конкретные «модные» технологии приводят к тому, что к моменту выпуска знания студентов успевают значительно устареть. Усугубляют ситуацию и сами студенты, зачастую научившиеся кое-как писать код еще в школе и считающие себя «крутыми спецами» с первого курса: изучать базовые понятия им не интересно, не говоря уже о таких «устаревших» языках, как Pascal или Lisp.
Решение видится (и реализуется на практике в УдГУ) в создании сбалансированного учебного плана, включающего в себя как весьма серьезную базовую подготовку в логике, математике[Отдельный большой вопрос, обсуждавшийся на конференции, но выходящий за рамки статьи,– какая именно математическая база нужна ИТ-специалисту? Пока ограничусь ссылкой, но надеюсь, что мы к этому вопросу еще вернемся: Непейвода Н.Н., " Какая математика нужна информатикам?", Открытые системы, 2005, #9,] и computer science, так и знакомство с современными технологиями разработки (индустриальное и экстремальное программирование), методами проектирования и управления программистскими коллективами, а также освоение конкретных продуктов – именно в таком порядке. Например, параллельно идущие в самом начале обучения курсы традиционного и нетрадиционного программирования (сентенционального, событийного, функционального) действуют на многих «продвинутых» студентов как холодный душ, показывая истинный масштаб их (не)знания.
Близким темам были посвящены и другие доклады. Андрей Столяров с ВМК МГУ рассказал о выборе инструмента для преподавания функционального программирования. Использование для этих целей современных языков (например, OCaml) и даже многих диалектов Lisp приводит к излишнему акцентированию внимания на особенностях конкретных реализаций, уводя студента от основ. В то же время само функциональное программирование и тем более простые диалекты Lisp отторгаются студентами как неприменимые в практической жизни. Бороться с этим можно по двум направлениям: с одной стороны, показывая возможности функционального подхода для решения соответствующих задач (например, символьные вычисления), а с другой– используя Lisp в связке другими технологиями, где он может получить реальное применение.
Рассказам об использовании конкретного открытого софта в образовании, конечно, тоже нашлось место: начиная с построения учебного процесса на базе Linux и заканчивая использованием свободного ПО в моделировании металлургических агрегатов. Часть докладов носила характер «историй успеха» (success story),– например, Евгений Алексеев из Донецка рассказал об опыте преподавания курса информатики с элементами численных методов для студентов общеинженерных специальностей с помощью пакета Scilab: начиная с азов программирования и заканчивая (в перспективе) сложными специальными расчетами. Другие участники рассказывали скорее о теоретических возможностях: так, Вадим Житников поведал о Maxima– свободной системе компьютерной алгебры (кстати, первой в своем роде), не уступающей по функциональности Maple и Mathematica– но, увы, пока уступающей по простоте освоения и удобству использования.
Говоря о преимуществах применения открытого софта в образовательных учреждениях, часто рассуждают в терминах противостояния: «свободное ПО против ворованного проприетарного». Однако такая формулировка не вполне корректна и не очень продуктивна. Свободный софт– это больше чем бесплатная альтернатива дорогим коммерческим продуктам. Это в первую очередь сообщество пользователей и разработчиков, это процесс, это идея, а не набор программ. И эффективное использование свободных разработок невозможно без участия в деятельности сообщества, без общения с другими участниками, без выкладывания в открытый доступ собственных достижений– даже если они не кажутся завершенными. Пока же этого почти не происходит, и отдельные преподаватели действуют скорее в одиночку: пишут методички, создают курсы, адаптируют софт и т.д. Вопрос «ну а где на ваши решения можно посмотреть?» звучал после многих докладов– и обычно оставался без ответа. А при таком подходе потенциал open source не работает.
Отдельная тема, в которой принципы свободного софта проявляются наиболее ярко,– возможность участия студентов в работе над реальными проектами. Например, учащийся может опубликовать свои разработки, сделанные в рамках курсового или дипломного проекта, под открытой лицензией– и тем самым уменьшить вероятность его «умирания» после формальной сдачи. С другой стороны, как было замечено многими участниками конференции, вместо создания собственного проекта зачастую разумнее подключиться к уже существующему[Список задач в open source-проектах можно найти, например, на сайте Google Summer of Code]. Открытые коды и подробная документация, сопровождающая большинство успешных open source-проектов, значительно упрощают их изучение– чего нельзя сказать о проприетарных продуктах. Положительный эффект от подобной деятельности очевиден: студент не только учится понимать чужой код и грамотно писать свой, но и приобретает бесценный опыт работы в команде, своими глазами видит, как проектируются и развиваются сложные продукты. К тому же доработка существующих решений приносит ощутимый, видимый невооруженным взглядом результат, что должно отчасти решить распространенные проблемы с мотивировкой.
Тем не менее этот путь не выглядит столь уж привлекательным с точки зрения самого студента: разбираться в чужом коде и встраиваться в процесс разработки довольно трудно, и кажется, что проще все сделать самостоятельно, с чистого листа. Да и фраза «я проектирую свою операционку» звучит гораздо лучше, чем «пишу патч к модулю ядра Linux». Вряд ли будет правильно принуждать студента к сотрудничеству, но если сразу планировать его проект как публичный и поощрять контакты с другими людьми, работающими в той же области, вкус работы в сообществе и желание присоединиться к чему-то большему должны появиться естественным образом.
Все вышесказанное относилось к обучению по специальностям, которые принято называть техническими. Однако информационные технологии могут существенно помочь и специалистам в гуманитарных областях. Впрочем, в настоящий момент ситуация здесь скорее плачевная.
Кирилл Маслинский (ALT Linux) в своем докладе проанализировал методы работы с компьютерной техникой в нескольких сообществах профессиональных филологов. Несмотря на то что решение многих задач в этой области поддается автоматизации (по крайней мере, частично), никакого общеизвестного инструментария найти не удалось – ни проприетарного, ни свободного. Специалисты используют какие-то отдельные разработки, вовремя попавшиеся под руку, но обмена информацией на эту тему практически не происходит. В результате «за бортом» остаются многие полезные программы и утилиты, известные специалистам-компьютерщикам, которые вполне можно применять и в далеких от ИТ областях: начиная от регулярных выражений, значительно упрощающих автоматическую обработку текстов, и заканчивая системами контроля версий, позволяющими работать со множеством редакций одного документа.
Эти проблемы наводят на следующий вопрос: какая информатика нужна гуманитариям? По мнению Маслинского, курс информатики в этом случае должен в первую очередь рассказывать о возможностях автоматизации их задач и о круге доступного для этого ПО, вместе с навыками по его поиску. Что может понадобиться для этого дополнительно и какие знания будут достаточными– вопросы пока открытые.