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