УНИВЕРСИТЕТ ИТМО
Кафедра «Технологии программирования»



Главная

Новости
 Новости науки
 Важное
 Почетные доктора
 Инновации
 Культура
 Люди
 Разное
 Скартел-Yota
 Стрим
 Смольный
Учебный процесс
 Образование
 Дипломы
 Курсовые проекты
 Лабораторные работы
 Учебные курсы
 Визуализаторы
 Unimod-проекты
 Семинары
 Стипендии
Наука
 События и факты
 Госконтракты
 Статьи
 Диссертации
 Книги
 Презентации
 Свидетельства
 Сотрудничество
Исследования
 Автоматы
 Верификация
 Геном
 Искусственный интеллект
 Генетические алгоритмы
 Движение
 UniMod
 Роботы и агенты
 Нейронные сети
 ФЦП ИТМО-Аалто
 Разное

О нас
 Премии
 Сертификаты и дипломы
 Соревнования по программированию
 Прорыв
 Автографы
 Рецензии

Беллетристика
 Мотивация
 Мысли
Медиа
 Видео
 Фотографии
 Аудио
 Интервью

English
 Home

 Articles
 Posters
 Automata-Based Programming
 Initiatives
 Projects
 Presentations
 UniMod
 UniMod Projects
 Visualizers


Поиск по сайту

Яndex



   Главная / Статьи / Искусство программирования лифта. Объектно-ориентированное программирование с явным выделением состояний (версия для печати)


Искусство программирования лифта. Объектно-ориентированное программирование с явным выделением состояний



Статья опубликована в журнале «Информационно-управляющие системы». 2003. №6, с. 38—49.

© 2004 Л.А.Наумов, А.А.Шалыто

Статья в формате PDF
Демонстрационная программа Lift
Исходные тексты демонстрационной программы Lift
Исходные тесты ядра программы, перенесённого на микроконтроллер

Уже около сорока лет, одним из примеров, на котором Д. Кнут обучает «Искусству программирования», является задача управления лифтом. Он на основании невнятного технического задания, используя только словесное описание алгоритмов, на многих страницах книги приводит в окончательной форме программу на языке низкого уровня, откомментированную не более внятно, чем было сформулировано задание.

В предисловии к третьему изданию «Искусства программирования» приводятся слова Б. Гейтса: «За последние двадцать лет мир изменился». Настоящая работа призвана показать справедливость этого высказывания на примере задачи управления лифтом.

В этой книге Д. Кнут, кроме математических основ программирования, пытается обучать также и искусству прикладного программирования. С этой целью он создает виртуальную машину MIX, для программирования которой он разработал язык ассемблера. Одним из самых «больших» и подробно рассмотренных примеров, демонстрирующих «искусство программирования по Кнуту», является разработка программного обеспечения для системы управления лифтом.

Из этого примера следует, что искусством программирования Д. Кнут обладает, так как настоящее искусство не предполагает обоснования процесса создания произведения. Возникает ситуация, не удовлетворявшая Э. Дейкстру, который говорил, «что программы часто приводятся в форме готовых изделий, почти без упоминания тех рассуждений, которые проводились в процессе разработки и служили обоснованием для окончательного вида завершенной программы».

Настоящая работа призвана продемонстрировать преимущества подхода, названного «автоматное программирование с явным выделением состояний», на примере задачи управления лифтом. Кроме того, приводится методика преобразования объектной программы, написанной в рамках предлагаемого подхода, в процедурную программу для последующего выполнения ее на микроконтроллере.

Выполненная работа показывает, что использование автоматного программирования обеспечивает создание хорошо документированного и легко модифицируемого проекта. Преобразование объектно-ориентированной программы в процедурную позволяет, отладив первую из них, достаточно легко перенести ее в управляющее устройство на базе микроконтроллера.

Авторы надеются, что, ознакомившись с объектно-ориентированным программированием с явным выделением состояний, читатели согласятся со словами Б. Гейтса, что «за последние двадцать лет мир изменился», по крайней мере, в области искусства программирования лифта.


© 2002—2017 По техническим вопросам сайта: vl.ulyantsev@gmail.com