Эта статья — самый настоящий долгострой: рассказать о применении свободного ПО и связанных с ним идей в образовании я порываюсь уже полтора года. Однако все мои попытки написать что-нибудь восторженно-захватывающее по этому поводу упирались в банальную нехватку материала: по большому счету, писать было почти не о чем. Ситуация кардинально изменилась буквально за два дня: в конце января в Переславле-Залесском прошла конференция «Свободное ПО в вышей школе», организованная ALT Linux совместно с рядом российских вузов. И материал сразу появился — за что хочется поблагодарить организаторов и всех участников[Cо сборником тезисов конференции можно ознакомиться на
www.heap.altlinux.ru/pereslavl2006 ].К моему большому удовольствию, несмотря на прагматичное название, в основном конференция была посвящена не софту как таковому, а гораздо более общим и интересным вопросам. Тон обсуждению задал первый же доклад под заголовком «Какая информатика нужна информатикам?». Николай Николаевич Непейвода, профессор Удмуртского государственного университета, рассказал о проблемах, неизбежно возникающих всякий раз, когда речь идет о подготовке высококвалифицированных ИТ-специалистов, а не «кодеров». Отсутствие системного подхода к построению учебного курса и ориентированность на конкретные «модные» технологии приводят к тому, что к моменту выпуска знания студентов успевают значительно устареть. Усугубляют ситуацию и сами студенты, зачастую научившиеся кое-как писать код еще в школе и считающие себя «крутыми спецами» с первого курса: изучать базовые понятия им не интересно, не говоря уже о таких «устаревших» языках, как Pascal или Lisp.
Решение видится (и реализуется на практике в УдГУ) в создании сбалансированного учебного плана, включающего в себя как весьма серьезную базовую подготовку в логике, математике[Отдельный большой вопрос, обсуждавшийся на конференции, но выходящий за рамки статьи, — какая именно математическая база нужна ИТ-специалисту? Пока ограничусь ссылкой, но надеюсь, что мы к этому вопросу еще вернемся: Непейвода Н.Н., "Какая математика нужна информатикам?
", Открытые системы, 2005, #9,] и computer science, так и знакомство с современными технологиями разработки (индустриальное и экстремальное программирование), методами проектирования и управления программистскими коллективами, а также освоение конкретных продуктов — именно в таком порядке. Например, параллельно идущие в самом начале обучения курсы традиционного и нетрадиционного программирования (сентенционального, событийного, функционального) действуют на многих «продвинутых» студентов как холодный душ, показывая истинный масштаб их (не)знания.Близким темам были посвящены и другие доклады. Андрей Столяров с ВМК МГУ рассказал о выборе инструмента для преподавания функционального программирования. Использование для этих целей современных языков (например, OCaml) и даже многих диалектов Lisp приводит к излишнему акцентированию внимания на особенностях конкретных реализаций, уводя студента от основ. В то же время само функциональное программирование и тем более простые диалекты Lisp отторгаются студентами как неприменимые в практической жизни. Бороться с этим можно по двум направлениям: с одной стороны, показывая возможности функционального подхода для решения соответствующих задач (например, символьные вычисления), а с другой— используя Lisp в связке другими технологиями, где он может получить реальное применение.