О вычислительном обеспечении практикума по программированию на младших курсах
Сутырин П. Г., Курячий Г. В.
- АННОТАЦИЯ
- В докладе дается обзор методики проведения семинарских занятий по практикуму на первом курсе очного отделения специалистов факультета ВМК МГУ им. М.В. Ломоносова. Основное внимание уделяется принципам и особенностям использования вычислительной техники и программного обеспечения, в том числе свободного.
Проведение семинарских занятий по практикуму
Вначале дадим обзор программистских дисциплин, изучаемых на первом курсе отделения специалистов. В первом семестре это основы теории алгоритмов (машины Тьюринга, нормальные алгоритмы Маркова), основы алгоритмизации с использованием языка программирования Паскаль (стандарт ISO 7185), динамические структуры данных и алгоритмы их обработки.
Во втором семестре изучаются основы архитектуры ЭВМ и язык ассемблера для машины на основе ЦП Intel 8086 (MASM4). Вначале изучается концепция машин фон Неймана (кодирование команд, хранимая программа, последовательность выполнения команд) на примере модельных машин с разной системой команд (одно-, двух- и трехадресные машины, безадресные стековые машины), затем систематически изучается язык ассемблера процессора 8086, а также язык макроассемблра (все это на примере MASM 4.0).
Семинарские занятия проходят частично в аудиториях с решением задач у доски, частично в машинном зале, где каждый студент практикуется в программировании на отдельной машине.
Решение задач в машинном зале в рамках семинарских занятий предполагает определенные требования к соответствующему вычислительному обеспечению.
Требования к обеспечению учебного процесса
На время каждого занятия в машинном зале каждый студент должен работать за своей машиной, в типовом программном рабочем окружении. Его личные файлы должны быть недоступны для других студентов. Кроме этого, преподаватель группы должен иметь доступ в каталоги студентов, чтобы раскладывать им общие или индивидуальные задания, а также просматривать (и даже дополнять своими комментариями) их решения. Каждому студенту должны быть доступны инструменты разработки, отвечающие изучаемым темам.
Требования к программному обеспечению
В случае с первым курсом в настоящее время актуальным является следующий перечень требований и соответствующих программных инструментов:
- Реализация машины Тьюринга и нормальных алгоритмов Маркова.
- чаще всего используется студентами самостоятельно в первые недели, когда теоретически изучаются эти формализмы
- Реализация ISO Pascal (или его расширения, но с возможностью контроля используемого диалекта языка)
- Варианты:
- Borland Pascal 7.0 (DOS-окно)
- интегрированная среда с редактором и отладчиком;
- библиотеки для построения текстового UI.
- GNU Pascal
- хорошо поддерживает ISO Pascal и другие диалекты (BP, Free Pascal, и еще несколько);
- реализует свое расширение Паскаля, достаточно полезное для практического программирования;
- увы, последние несколько лет не разрабатывается (есть проблемы с современными версиями GCC).
- Free Pascal
- имеет IDE, аналогичный BP;
- хорошо интегрируется в современные ОС (но это не нужно для первого семестра);
- увы, компилятор языка содержит грубые расхождения даже с базовым стантдартом;
- не поддерживается ограничение ISO Pascal.
- Реализация ассемблера и макроассемблера.
- MASM 4.0 (DOS-окно)
- использовался произвольный редактор, не специализированный для текстов программ (чаще всего из Norton Commander, т.к. дело происходило в DOS-окне).
- отладка программ отягощалась крайне лаконичной и однообразной диагностикой системы на чаще всего допускаемые ошибки (неправильный доступ к памяти).
- MASM 4.0 (DOS-окно)
Опыт использования инструментария, в т.ч. основанного на СПО
В рассматриваемый период времени (с 2000 года) использовались два варианта обеспечения.
- Решение на основе Windows NT4 + Novell Netware, трудоемкое в администрировании и несовместимое с новой аппаратурой. Инструменты разработки запускались в режиме совместимости DOS-приложений для Windows.
- Загрузочный образ на основе FreeBSD, по возможности сохраняющий исходные инструменты (посредством запуска в эмуляторе DOSBox).
В процессе эксплуатации загрузочного образа FreeBSD было выявлено объективных и субъективных недостатков:
- слабая поддержка внешних носителей (не все флешки студентов определялись, и приходилось тратить семинарское время на решение проблем);
- пришлось запретить мультилогин с разных машин, т.к. студенты быстро догадались, что во время решения задач на зачете можно из соседнего машинного зала отредактировать файл в домашнем каталоге у товарища и помочь ему сдать зачет;
- Некоторые примеры из методических разработок при компиляции в Free Pascal дают не соответствующие стандарту (и ?правильному ответу?) результаты;
DosBOX ?из коробки? не вполне подходит для работы в Borland Pascal (например, по Alt+F9 в BP происходит запуск программы, а в DosBOX ? полный останов эмулятора; необходима русификация);
- Некоторое постоянно используемое ПО из комплекта FreeBSD, например, большинство оконных диспетчеров, по умолчанию непригодны для использования в практикуме без предварительной настройки.
Вместе с тем, сама мультизагрузочная среда (вполне стандартно реализованная на базе FreeBSD) позволила:
- синхронизовать управление пользователями с общим реестром;
- существенно упростить профилирование клиентских ОС;
- полностью исключить необходимость администрирования ПО и ОС на клиентских машинах;
- обеспечить загрузку произвольного количества подготовленных загрузочных образов;
- создать базу для перехода учебного процесса на СПО.
Загрузочный образ на основе ALT Linux 6.0
Предлагаемый загрузочный образ (для краткости ? ?прошивка?) сделан на базе LiveCD дистрибутива семейства ALT Linux 6.0 Centaurus. Технология создания описана в статье ?Сетевая установка и сетевая загрузка?, существенных изменений не претерпела. Особенности прошивок такого типа:
- автоматическая адаптация к широкому спектру аппаратного обеспечения;
- работа без монтирования физической файловой системы на запись (позволяет полностью исключить модификацию со стороны клиента);
простота модификации и обновления ?прошивки? (после chroot <корень_прошивки> на сервере администратор попадает в обычное окружение с работающей сетью, пакетным диспетчером и т. п.)
Эти особенности предопределили особенности поддержки учебного процесса:
- Отказ от персональных аккаунтов в пользу вики-движка с хранением всей необходимой информации, включая персональные странички пользователей и их файлы
- Унификация рабочего окружения. Зачастую начинающие пользователи настраивают свои рабочие места до полной неработоспособности. Теперь достаточно только перезагрузить компьютер.
- Хранение постоянно используемых файлов и методических материалов в едином информационном пространстве провоцирует привлечение внимания к методически материалам
- Модификация рабочего окружения в реальном времени. При необходимости что-то изменить в окружении всех рабочих мест (например, положить на рабочий стол файл, донастроить IDE и т. п.) достаточно скопировать нужные файлы на сервер (в домашний каталог пользователя внутри ?прошивки?) и перезагрузить рабочие места.
- Широта и гибкость применения. Можно подготовить любое количество ?прошивок? с любым содержанием, модификация прошивки (при условии заранее сделанной резервной копии) ? безопасная операция, допустимая в учебном процессе, в отличие от локальной переустановки ОС и ПО
В частности, последнее свойство позволяет расширить список ПО, устанавливаемого в прошивку, предлагать различные варианты, экспериментировать. Так, помимо ?старых? инструментов для DOS, в новом загрузочном образе используются:
Для обеспечения практикума по машине Тьюринга ? разработка с сайта ?cmcmsu.no-ip.info?
Для обеспечения практикума по нормальным алгорифмам Маркова ? еще одна разработка с сайта ?cmcmsu.no-ip.info? и более сложный вариант с сайта Йорга С. Мейера
- Для обеспечения практикума по Pascal ? Free Pascal (планируется GNU Pascal)
- Для обеспечения практикума по Ассемблеру ? NASM (планируется также JWASM, имеющий совместимый с MASM синтаксис)
Кроме того, предполагается вынести на суд преподавателей ?промежуточный? вариант с использованием DOS-овских компиляторов, запускаемых в режиме командной строки из Linux-IDE (например, Geany).
В обеспечении учебного процесса важную роль предполагается отвести т. н. сайту практикума, на котором будут размещены учебно-методические и справочные материалы (либо ссылки на них), а также заведены персоналдьные страницы учащихся для хранения файлов. Требования к работе этого сайта (например, определение прав доступа преподавателя и студентов к файлам и страничкам, запрет доступа на запись во время зачета и т. п.) будут определены в дальнейшем, после согласования с преподавателями.
Нелишне заметить, что загружаемый образ на базе ALT Linux третий год используется для проведения практических занятий в Вечерней Математической Школе при ВМиК МГУ (программирование на языке Python, с этого года ? также и на C).
Выводы
Технология бездискового клиента, использованная в ?прошивке? на базе ALT Linux, позволяет создавать и видоизменять произвольное унифицированное окружение для проведения широкого спектра практических занятий. Для эффективной организации учебного процесса необходимо соблюдение трех требований:
- наличие актуальных Linux-версий используемого в учебном процессе ПО (добавление и/или удаление работоспособного ПО не составляет даже технической проблемы);
- достаточное информационное наполнение
- технического обеспечения учебного процесса (сеанс работы пользователя, работа с файлами, запуск компиляторов и т. п.),
- методического обеспечения (задачи и примеры, работающие в данном окружении);
- готовность учебного персонала к переходу, в немалой степени достигается сохранением ?старых? программных средств с использованием и предварительной настройкой эмуляторов.
Список литературы
ANSI ISO Pascal (http://standardpascal.org/)
Сайт кафедры алгоритмических языков с некоторыми материалами и комплектами ПО для практикума (http://al.cs.msu.su/classes.html)
Практикум 1 курса (неофициальный, но весьма полный сборник материалов) (http://cmcmsu.no-ip.info/1course/)
Курячий Г. В. ?Сетевая установка и сетевая загрузка? (http://uneex.ru/FrBrGeorge/BookP5/NetworkInstall)