Педагогика. Современные методы преподавания

доц., к.ф.н. В. В. Лидовский

 

МАТИ Российский государственный технологический университет имени К.Э.Циолковского, Россия

 

               Новая образовательная технология продолжение разработки открытого ПО  проект XLife

 

Для инженерного образования очень важно наличие практической возможности для учащегося применять полученные теоретические знания. В случае с программированием, одной из лучших практических учебных методик является участие в разработке достаточно большого и сложного проекта, где необходимо использовать значительный диапазон средств: компилятор, отладчик, профайлер, программы сборки проекта, программы для работы с шаблоном сборки проекта, системы версионного контроля, кросс-средств, подходящий и соответственно настроенный текстовый редактор и множество программ-утилит. Кроме того, в процессе развития проекта необходимо подключение средств, обеспечивающих интеграцию создаваемого ПО в существующие системы. Необходимо достаточно оптимально определить место для размещения основного сетевого кодового репозитория системы версионного контроля и установить подходящие проекту правила администрирования. Также важно определиться со средствами оповещения о проекте. Относительно несложными являются вопросы размещения публикуемых версий программы как в бинарном виде для разных ОС, так и в исходниках. Выбор ОС для разработки может решаться каждым участником проекта индивидуально, но по многим причинам предпочтителен выбор GNU Linux.

Существует довольно большое количество программ с открытыми исходниками, разработка которых прекращена авторами. Среди таких программ нередко оказываются такие, которые по некоторым показателям являются лучшими в своём классе. Иногда их разработка связана с деятельностью известных в мире ИТ личностей. Как правило, такие "неразвиваемые программы" открыты для продолжения разработки заинтересовавшимися лицами.

Рассмотрим конкретный пример использования в учебном процессе инженерного вуза работы по продолжению разработки открытого ПО.

С 1989 по 1991 силами нескольких студентов университета Карнеги-Меллона (Carnegie Mellon University, CMU) была разработана программа XLife для ОС Unix, одна из лучших до конца 90-х программ для проведения экспериментов с клеточными автоматами. С 1992 по 1999 её усовершенствованиями занимались несколько известных исследователей и программистов, в частности, Эрик C. Раймонд (Eric S. Raymond) и Аким Фламменкамп (Achim Flammenkamp). До 2010 эта программа сопровождалась на уровне поддержки соответствия современным компиляторам и аппаратуре, в частности, в ведущих дистрибутивах Линукс Debian и Ubuntu, а также для ОС Open BSD. Программа XLife распространяется с открытым кодом, по лицензии, допускающей её дальнейшую разработку любыми заинтересованными лицами. Для работ по модернизации использовались версии 3.5, 5.0 и 5.3 программы, разработанные во второй половине 90-х.

На кафедре "Моделирование систем и информационные технологии" Российского государственного технологического университета имени К. Э. Циолковского (МАТИ) эта программа была выбрана как основа для будущего проекта, цели которого:

1.                   изучение кодов и документации;

2.                   исправление найденных ошибок;

3.                   расширение функциональности в соответствии с выросшими возможностями вычислительной техники;

4.                   внедрение принципиально новых механизмов, выводящих программу в лидеры в своём классе ПО;

5.                   всестороннее тестирование;

6.                   корректировка старой и написание новой документации;;

7.                   портирование в различные ОС;

8.                   внедрение проекта в популярные репозитории ПО, в частности, некоторые дистрибутивы ОС Linux.

XLife была написана на си произведён перенос всех кодов в си++. Используются компиляторы из коллекции GCC. В частности, для портирования программы в среду Microsoft Windows используется MinGW. В этой коллекции есть всё необходимое для работы программиста, т.е. помимо компиляторов есть и отладчик, и профайлер-оптимизатор, и другие необходимые средства. Некоторые вспомогательные утилиты пишутся на наиболее подходящих по назначению языках, например, перл, рубин, бэш, аук и др.

Для генерации по шаблону сборки продолжена работа с imake. В перспективе возможен переход на средства autoconf и automake. Сборка проекта производится программой make.

В качестве системы версионного контроля была выбрана программа Subversion. Репозиторий проекта размещен на базе ресурсов, предоставляемых sourceforge.net одного из самых больших в мире веб-сайтов для разработчиков открытого программного обеспечения. Для доступа к репозиторию используется протокол ssh+svn, обеспечивающий высокую скорость и надежность. Утилита sshpass обеспечивает удобную работу при аутентификации.

Для оповещении о проекте используется сайт XLife на freecode.com, являющийся основной точкой доступа к ресурсам проекта.

При изучении кодов и документации были обнаружены множественные ошибки. Практически все они уже исправлены.

Удалось значительно расширить диапазон клеточных автоматов, поддерживаемых XLife. Теперь можно работать с любыми автоматами с двумя состояниями и с автоматами с правилами "Поколения" (до 256 состояний) в соседстве Мура. Для автоматов, задаваемых таблицами, теперь можно использовать не только вращательную симметрию, но и отражательную или отсутствие симметрии. Для этих типов автоматов стало возможным использовать, помимо соседства фон Неймана, ещё и соседство Мура. Максимальное число состояний табличных автоматов увеличено с 8 до 64.

Стало возможным использовать тороидальную и прямоугольную топологии. Улучшен механизм поиска осцилляторов. Добавлены средства для записи истории развития образца.

Алгоритмы для работы с некоторыми автоматами (Generations, WireWorld, Life with History) написаны специализировано для получения максимальной скорости вычисления. Для всех видов автоматов, кроме связанных с задачей "Дилемма заключённого", стало возможным использовать несколько режимов хэш-алгоритма, обеспечивающего во многих случаях очень высокую скорость вычислений.

Интерфейс программы стал более дружественным: добавлена поддержка соответствующих диалоговых окон и других подобных средств.

Документация была значительно расширена и обеспечен её автоматический перевод в формат html.

Для портирования программы в ОС Microsoft Windows была использована распространяемая свободно "обёртка" (wrapper) для перевода вызовов системных функции X Window в вызовы функции графики Microsoft API. Эту "обёртку" пришлось модифицировать для обеспечения её соответствия текущему состоянию программы XLife. Кроме того, проверена возможность автоматического портирование через систему Cygwin. Портирование в родственные ОС, такие как различные варианты Linux, FreeBSD, NetBSD и т.п. проходит также автоматически.

Ближайшие планы развития проекта включают:

                      Устранение недоделок;

                      Совершенствование хэш-алгоритма и средств для работы с ним;

                      Привязка к дистрибутивам популярных ОС;

                      Создание дополнительных веб-ресурсов с демонстрацией возможностей программы.

Xlife используется в учебном процессе двояко. С одной стороны как демонстрационный материал, помогающий студентам создавать небольшие программные разработки, моделирующие некоторые клеточные автоматы.

С другой стороны для заинтересовавшихся студентов предоставляется возможность в рамках курсовой или дипломной работы принять участие в совершенствовании Xlife. Студент Ярослав Зотов (специальность Автоматизированные системы обработки информации и управления), например, в рамках курсовой работы портировал Xlife в среду Microsoft Windows, а в рамках дипломной работы реализовал хэш-алгоритм. Последнюю работу нужно отметить особо, так как она является редким примером эффективной реализации этого непростого алгоритма. В настоящее время это одна из трёх известных реализаций, помимо программ Golly и Cafe au Life, с поддержкой визуализации результатов расчётов.

В текущем состоянии Xlife является одной из лучших программ своего класса, незначительно уступая лидеру (Golly) по совокупности возможностей и превосходя его для некоторых частных применений.

Всего по работе в связи с проектом Xlife в разной степени удалось привлечь более десятка студентов, что показывает актуальность рассматриваемой технологии.

Кроме образовательных задач, пример XLife, продемонстрировал возможность проведения некоторых научных исследований, например, проведения сравнительного анализа различных алгоритмов, реализующих клеточные автоматы.

Сетевой адрес проекта - http://freecode.com/projects/xlife. Версия 6.7.5 программы распространяется также с дистрибутивами Fedora Linux 18, 19 и 20.