Образование свободы
АрхивЭта статья — самый настоящий долгострой: рассказать о применении свободного ПО и связанных с ним идей в образовании я порываюсь уже полтора года. Однако все мои попытки написать что-нибудь восторженно-захватывающее по этому поводу упирались в банальную нехватку материала: по большому счету, писать было почти не о чем.
Эта статья - самый настоящий долгострой: рассказать о применении свободного ПО и связанных с ним идей в образовании я порываюсь уже полтора года. Однако все мои попытки написать что-нибудь восторженно-захватывающее по этому поводу упирались в банальную нехватку материала: по большому счету, писать было почти не о чем. Ситуация кардинально изменилась буквально за два дня: в конце января в Переславле-Залесском прошла конференция "Свободное ПО в вышей школе", организованная ALT Linux совместно с рядом российских вузов. И материал сразу появился - за что хочется поблагодарить организаторов и всех участников[Cо сборником тезисов конференции можно ознакомиться здесь].
О базисе
К моему большому удовольствию, несмотря на прагматичное название, в основном конференция была посвящена не софту как таковому, а гораздо более общим и интересным вопросам. Тон обсуждению задал первый же доклад под заголовком "Какая информатика нужна информатикам?". Николай Николаевич Непейвода, профессор Удмуртского государственного университета, рассказал о проблемах, неизбежно возникающих всякий раз, когда речь идет о подготовке высококвалифицированных ИТ-специалистов, а не "кодеров". Отсутствие системного подхода к построению учебного курса и ориентированность на конкретные "модные" технологии приводят к тому, что к моменту выпуска знания студентов успевают значительно устареть. Усугубляют ситуацию и сами студенты, зачастую научившиеся кое-как писать код еще в школе и считающие себя "крутыми спецами" с первого курса: изучать базовые понятия им не интересно, не говоря уже о таких "устаревших" языках, как 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) в своем докладе проанализировал методы работы с компьютерной техникой в нескольких сообществах профессиональных филологов. Несмотря на то что решение многих задач в этой области поддается автоматизации (по крайней мере, частично), никакого общеизвестного инструментария найти не удалось - ни проприетарного, ни свободного. Специалисты используют какие-то отдельные разработки, вовремя попавшиеся под руку, но обмена информацией на эту тему практически не происходит. В результате "за бортом" остаются многие полезные программы и утилиты, известные специалистам-компьютерщикам, которые вполне можно применять и в далеких от ИТ областях: начиная от регулярных выражений, значительно упрощающих автоматическую обработку текстов, и заканчивая системами контроля версий, позволяющими работать со множеством редакций одного документа.
Эти проблемы наводят на следующий вопрос: какая информатика нужна гуманитариям? По мнению Маслинского, курс информатики в этом случае должен в первую очередь рассказывать о возможностях автоматизации их задач и о круге доступного для этого ПО, вместе с навыками по его поиску. Что может понадобиться для этого дополнительно и какие знания будут достаточными - вопросы пока открытые.
Это не все!
Уместить весь круг обсуждаемых сюжетов в формат краткого репортажа без применения архиваторов представляется совершенно невозможным. Однако я надеюсь, что мы еще не раз будем возвращаться к этой теме и осветим все то, что осталось за рамками сегодняшнего рассказа. Я также буду рад получить ваши замечания и комментарии. Пишите!