автореферат диссертации по информатике, вычислительной технике и управлению, 05.13.11, диссертация на тему:Исследование и разработка инструментальных редакторов программ
Автореферат диссертации по теме "Исследование и разработка инструментальных редакторов программ"
РГ6 од
МОСКОВСКИЙ ОРДЕНА ЛЕНИНА, ДПР 1993ОРЯЕНА ОКТЯБРЬСКОЙ РЕВОЛЮЦИИ И ОРДЕНА ТРУДОВОГО КРАСНОГО ЗНА№'ЧИ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ им. М.В.ЛОМОНОСОВА
На правах рукописи
ПОДОЛЬСКАЯ Нина Аркадьевна
УЖ 681.03.06
ИССЛЕДОВАНИЕ И РАЗРАБОТКА ИНСТРУМЕНТАЛЬНЫХ РЕДАКТОРОВ ПРОГРАММ
Специальность 05.13.II - математическое и программное обеспечение вычислительных машин и систем
Автореферат
дисс&рташш на соискание ученой степени кандидата физико-математических, наук
шичжБа юао
Работа выполнена на механико-математическом факультете МГУ им. М.В.Ломоносова
Научный руководитель:
кандидат физико-математических наук,
доцент А.Г.Кушниренко
Официальные оппоненты:
доктор физико-математических наук В.Б.Ботелин
кандидат физико-математических наук П.Л.ЕруеилоБский
Ведущая организация; Институт математических проблем
биологии г АН (г. Пущине-)
Защита состоится "ЛЗ" СЬМу^С^^*Л 1993 г. в И часов на заседании Специализированного совета Д.053.05.38 при МГУ по адресу: 119899, Москва, Ленинские горы, МГУ, факультет вычислительной математики и кибернетики, аудитория .
С диссертацией можно ознакомиться в библиотеке факультета ВМиК МГУ.
Автореферат разослан "ЛЗ" 1993 г.
• Ученый секретарь Специализированного соЕета
Л.05° 05.38, профессор Н.П.Трифонов
ОБЩАЯ ХАРАКТЕРИСТИКА ДИССЕРТАЦИИ
АКТУАЛЬНОСТЬ ТЕШ. Развитие процессов информатизации общества, рост потребностей в программном обеспечении требует увеличения производительности труда программистов.
Число массово используемых в настоящее время языков программирование невелико. Предоставляемые ими возможности не могут удовлетворить все разнообразие потребностей пользователей.
Для того, чтобы расширить возможности языков, широко применяются препроцессоры. Хорошо известны недостатки такого подхода :
а) необходимость работать с двумя представлениями исходного текста;
б) увеличение количества файлов;
в) увеличение времени компиляции.
Компиляторы ряда языков программирования (МАЖО-П, С, РЬ/1) имеют встроенный механизм препроцессирования. Использование этого механизма позволяет избежать недостатков а), б). Однако недостаток в) по-прежнему имеет место.
В настоящей диссертации предложен практически применимый . подход, который снимает часть недостатков препроцессирования.
, Этот подход состоит в применении так называемых редакто-роь-препроцессоров, которые выполняют инкрементальное препроцессирование в течение сеанса редактирования "ри этом в каждый момент ужо готов результат препроцессирования редактируемого в этот момент текста.
Описываемый подход позврляет в любой момент редактирования по запросу пользователя визуализировать результат препроцессирования. По окончании же сеанса редактирования действия по
препроцессированию оказываются уже выполненными. Следовательно, время компиляции не увеличивается из-за необходимости препроцессирования.
Поскольку препроцессирование может быть полезно при работ< с различными языками программирования и потребности в расширении языка выясняются в процессе разработки программы пользователем, целесообразно иметь механизм встраивания в редактор различных препроцессоров. Такой механизм описан в настоящей работ« под названием "генератор редакторов-препроцессоров".
По сравнению с традиционной парой "редактор текстов н препроцессор" единый редактор-препроцессор обладает рядом преимуществ:
1) Возможность в основном работать с (одним) исходным (дс препроцессирования) текстом программы.
2) Уменьшение времени оборота за счет совмещения по времени процесса редактирования и препроцессирования.
3) Возможность контроля исходного текста в процессе редактирования, выдача диагностики б терминах исходного языка. .
4) Возможность визуализации результат? препроцессированш в любой момент редактирования.
Разработка настраиваемых редакторов-препроцессоров требует решения ряда взаимосвязанных проблем, б том числе исследование и разработки:
.- эффективных методов и алгоритмов переработки йнформаши в процессе препроцессирования, совмещенного с редактированием;
- построение теории возвратных конечных преобразователей, применяемой в указанн-ых алгоритмах;
- специальных алгоритмов визуализации результатов препроцессирования ;
- методов синтаксического редактирования, ориентированных на задачу препроцессирования.
ЦЕЛИ РАБОТЫ состоят в следующем:
- анализ современных подходов к повышению эффективности разработка программ на традиционных языках программирования;
- разработка типочнх структур данных и методов их реализации для задач редактирования-препроцессирования;
- расширение теории конечных преобразователей для применения ее к задачам диалогового препроцессирования;
- разработка генератора инструментальных редакторов-препроцессоров, применимого, в частности, к распространенным языкам п р о г р а мм и р о вл н 11 я;
- генерация конкрет..ых редакторов-препроцессоров для ми.... ОИЧА .. ^^ ... ..... „ ... ...... ГЛИ
ПИ-.-'ь-¡VI, ни¡л.-^палыжл VI и!Г имглил ..'ит .
Г'УчпАЯ НОВИЗНА. Расширена теория конечных преобразователей. Предложен и реализован новый тип инструментального средства: настраиваемый редактор-препроцессор.
ПРАКТИЧЕСКАЯ ЗНАЧИМОСТЬ. Предложен новый подход к разра-Зотке инструментальных редакторов программ. Разработан и реализован практически генератор редакторов-препроцессоров, проведе-ш генерация редакторов-препроцессоров для расширений языков ЛАКРО-П, Фортрана, Си и других.
ылчтшго гг..«...........~
шшдгшш, продлилоппми о д«и;(;о1)шции гвпврахир ¡)влаыи-
юв-препроцессоров* использовался при разработке программного збеспечения учебного процесса на механико-математическом <|п-
кулыетб МГУ, б частности, с его помощью были разработаны три синтаксически-орибнтйроБаппкх редактора для языков MACRO-II, Фортран и С. Кроме того, был сгенерирован редактор-препроцессор для структурного программирования на Ассемблере школьной ЭВМ УКНЦ. Редактор-препроцессор для MACK0-II используется в ряде организаций страны.
АПРОБАЦИЯ РАБОТЫ. Материалы работы докладывались на:
- Ломоносовских чтениях в МГУ (1987,1988,1989);.
- на ежегодной научной конференции НИВ". АН СССР (Пушино, 1987, 1988);
- на научных семинарах механико-математического факультета МГУ (1987-1992);
- на Всесоюзных семинарах "Разработка и применение программных средств ПЭВМ в учебном процессе" (1988, 1989).
ПУБЛИКАЦИИi Основные результаты диссертации изложены в работах [1-5].
СТРУКТУРА И СОДЕРЖАНИЕ РАБОТЫ
Диссертация состоит из введения, 5 глав, .приложения и списка литературы из 53 наименований. Общий объем диссертации -134 страниц, из них 120 страниц основного текста, 7 страниц приложений.
ВО ВВЕДЕНИИ (3 ст£,) обосновывается актуальность исследования проблем разработки редакторов-препроцессоров. Излагается структура диссертации и основные полученные результаты.
В ПЕРВОЙ ГЛАВЕ (20 стр.) проводится исследование возможностей ускорения разработки программного обеспечения на базе совмещения процессов редактирования и препроцессирования.
Основное внимание при этом направляется на решение задачи ускорения разработки программ за счет ускорения процессов кодирования и гтлчдки.
Исследуется 3 пути ускорения этих этапов разработки программ:
1. Совершенствование языков программирования (п. 1.1 диссерта-
......\
ипп / .
2. Совершенствования интерфейса редакторов (п.1.2).
3. Сокращение времени оборота программ (п.1.3).
Производится исследование этих путей. В частности, в п. 1.1. в качестве наиболее широко распространенного способа совершенствования языков программирования указывается использование препроцессоров. Приводится перечень недостатков такого подхода.
В п.1.2 анализируется интерфейс редакторов: текстовых, синтаксически ориентированных и синтаксически направленных. В синтаксически направленных редакторах возможен ввод програ»1мн как текста или командами. Рассматриваются преимущества и недос-татк« обоих способов. Делаются предложения по методу работы с синтаксическими конструкциями и по сочетанию синтаксически направленного редактирования с текстовым в синтаксически направленных редакторах.
В п. 1.3 при рассмотрении методов сокращения времени оборота предлагается способ преодоления части недостатков использования препроцессоров, указанных в п.1.1, - совмещение процессор. редактирования и препроцессирования.
- е -
На основании пр^ведеыюгс лгл'л&лоыпи'г: в п. 1.4 ставит-задача совмещения процессов редлктироьания и преп, онессиров. ния. Использование получаемых при таком совмещении редакт' ров-препроцессоров дает все преимущества использования прещи Цбссоров, но лишено многих его недостатков.
В п.1.5 рассматриваются дополнительные возможности, воэн] каюшие при совмещении редактирования с препроцессированием, частности, это
1. Совершенствование интерфейса редактора (отвечающее зада1 ускорения разработки программ), в сторону еинтаксичес! ориентированного редактирования, возможности которого анг лиэируются б п. 1.2.
2. Проверка синтаксической правильности Не. этапе редактировг ния,- позволяющая сократить время оборота программы (чт также отвечает задаче ускорения):
3. Использование механизма подключения прикладных програмл задаваемых пользователем, что также позволяет улучшить ш терфейс редактора и сократить время оборота программы.
ВО ВТОРОЙ ГЛАВЕ (16 страниц) разрабатывается и исследуетс практическая модель редактора-препроцессора:' редактор-препрс цессор для MACR0-.II, поддерживающий пакет макроопределем "Макро-85".
В п. 2.1 обосновывается выбор редактора и пакета макроог ределений, описывается внешний проект редактора-препроцессора В соответствие с п.1.5, описывается следующий дополнительнь сервис, реализованный ъ этом редакторе-препроцессоре:
I) элемента синтаксически ориентированного редактирования а) вставка шаблонов конструкций и удаление всего текст
- 7 -
энструкций с помощью функциональных клавиш; - б) автоматическое форматирование прогрчмы;
в) облегченное редактирование колонки комментариев;
2) элементы синтаксически направленного редактирования -лагностика синтаксических ошибок при оформлении конструкций;
3) прьлх шные программы, облегчающие работу с разделяемыми эременнкми: средство редактирования этих переменных и контроль а правильным их использованием.
Проведен анализ требований к редактору-препропяссору: к иособу хранения исходного текста и результата препроцессирова-ия, к визуализации результатов препроцессирования, к интерфей-/ с пользователем.
Приведены примеры текста, созданного редактором-препроцес-ором, и протокола сеанса редактирования.
В п.2.7 описывается архитектура редактора-препроцессора, в оторой удается сохранить четкое разделение на редактирующую и репро:,ассирующую части.
Приведенные в п. 2.8 результаты измерений времени компиля-ии и времени оборота программы для препроцессора и редакто-а-препроцессора свидетельствуют о том, что использование р£-актора-препроцессора дает выигрыш в 2-3 раза во времени компи-яции и в 1,5-2 раза во времени оборота по сравнению с исполь-ованием стандартного препроцессора.
В ТРЕТЬЕЙ ГЛАВЕ (25 стр.) исследуются функции перевода, озвратные конечные -преобразователи и задача диалогового преп-оцессированля.
Пусть X*- пространство всех конечных последовательностей
.-„ „ —„. ...... —.. V
Перевод можно рассматривать как функцию р: X ->У
Препроцессирование можно рассматривать как перевод одной (входной)
последовательности с имволов в другую (выходную).
Поскольку препроцессирование происходит путем последовательного чтения входной последовательности и "появления символов к выходной последовательности, то задача препроцессирования сводится к построению такой функции перевода, которая по символу, добавленному ко входной по; ледовательности, перевнчисляла Оы выходную последовательность.
Такие функции в работе ^ называются индуктивными. В п. 3.1 приводятся определения и утверждения из этой работы, касающиеся индуктивных функций, а также проверяется индуктивность и строятся индуктивные расширения для нескольких функций перевода.
Задача диалогового препроцессирования сложнее задачи препроцессирования. Так как входная последовательность читается при ее редактировании и вперед, и назад, то надо построить функцию, которая умеет перевычислять выходную последовательность не только при добавлении символа во входную последовательность, но и при удалении последнего символа входной последовательности.
Такие функции в п. 3.2 названы возвратно-индуктивными. Для функций, не являющихся возвратно-индуктивными, в п. 3.2 вводится понятие возвратно-индуктивного расширения. Формулируется и доказывается критерий возвратной индуктивности, проверяется возвратная индуктивность и строятся возвратно-индуктивные расширения для нескольких функций перевода.
I) Кушнирекко А.Г., Лебедев Г.В. Программирование для математиков. - Издательство "Наука", 1988.
Функции перевода тесно связаны с синтаксически управляемн-ш (СУ) переводами. В п. 3.3 приводятся некоторые определения и 'тверждения из работы , касашиеся СУ-переводов и простых У-первводов, вводится понятие соответствия некоторой функции геревода некоторому переводу, рассматривается несколько приме-юв. Доказывается утверждение о том, что область определения »тношения соответствия функций перевода и СУ-переводов является [©собственным подмножеством функций перевода, а множество зна-гений этого отношение является несобственным подмножеством мно-соства СУ-перевопов.
Это же утверждение доказывается и для простых переводов.
В терминах теории конечных преобразователей (см. ) :репроцессор есть ни что иное, как некий конечный преобразова-ель. Задача препроцессирования полностью укладывается в рамки еории конечных преобразователей. В п. 3.4 приводятся взятые из аботк ^ определения конечных преобразователей, определяемых ми переводов, МП-преобразователеи и определяемых ими перевода, теорема о связи простых СУ-переводов и МП-преобразовате-ей.
Формулируется и доказывается
Утверждение 4.Т. Отношение функций перевод.', с простыми У-переводами эквивалентно отношению функций перевода с МП-пре-бразователями.
Формулируется и доказывается утверждение о том, что об-асть определения отношения соответствия функций перевода и П-преобразователей (преобразователей с магазинной памятью) яв-
I) Ахо А., Ульман Дж. Теория синтаксического анализа, пе-
.. .. А. |Я . тппо
сшила VI . — IV!. . 1'11'1 у , ±.у ! .
ляегся несобственным подмножеством функций перевода, а множество значений Зтого отношения является несобственным подмножеством множества МП-преобразователей.
Для решения задачи диалогового препроцессирования в п..3.5 проводится обобщение теории конечных преобразователей. Вводится понятие возвратного конечного преобразователя:
Определение 5.1. Конечный преобразователь М=(0,ХД,<3,40,10 называется возвратным, если существует отображение с1Ь:С)х(-> ОхУ* , т.ч. если с1(ц,а)=(г .г), у=хг, то с1Ь(г ,у,а)=и,х),
Формулируется и доказывается
Утверждение 5.1. (критерий возвратности) Конечный преобразователь М=(0,Х,У,с1 является возвратным тогда и только тогда, когда для любых' 41^2^0, а^Х, убУ* из равенств <1(д1,а)=(г ,21), с1(ц2,а)=(г ,г2), у=хШ=х2г2 следует ц1=ц2, г!=г2.
Для конечных преобразователей, не являющихся возвратными, вводится понятие возвратного расширения:
Определение 5.2. Возвратным расширением конечного преобразователя М=(0,Х,У,с1,д0,Р) называется возвраттШ конечный преобразователь М'^О.ХД'.с!\qO.F), если существует функция р:С1хУ'* -> ОхУ* такая, что для любых д^О, а£Х, выполнено
(Кд.аЬрЫЧч'.а)).
Доказывается
. Тоорема 5.1. Для любого конечного преобразователя М можно построить его возвратное расширение.
В п. 3.6 результаты п. 3.5 расширяются на МП-преобразователи.
Вг-о.сию.я понятие возвратного МП-иреобразователя:
- II -
"Определение 6.1. МП-преобразователь Р=(0,Х,Г,У,(М0,20,Р) называется возвратным, если существует отображение аь:0к(у Г\{е)г)хГ -> ОхУ%Г*, т.ч. если сЗ(п,а,2)=(г,г,у), у=хг, то с!Ь(г ,г ¿у ,а)=(п ,х,2),
Дается определение возвратного расширения МП-преобразователя. .
Определение 6.2. Возвратным расширением МП-преобразователя Р=(0,Х,Г,У,с!,с10,г0,Р) называется возвратный конечный преобразователь Р'-(0,Х-,Г,У ',(3\пОДО,Р), если существует функция р;0хУ -> ОхУ такая, что для любых ч^О, а£Х, Ъ6Т, выполнено сН ц ,а,2)=р(й '(ц ).
Доказывается
■ . Теорема 6.1. Для любого МП-преобразователя Р можно построить его возвратное расширение Р .
' В п. 3.7 на базе полученных результатов доказывается возможность построения редактора-препроцессора для некоторого класса препроцессоров, а точнее, для тех препроцесоров, функция перевода которых соответствует какому-либо синтаксически-управ-ляемому переводу. ' •
При доказательстве автор исходит из того, что| в силу утверждения 4.1, функция перевода такого препроцессора соответствует некоторому МП-преобразователю. На основании теоремы 6.1 для этого МП-преобразователя можно построить возвратное расширение.
Излагается метод построения редактора-препроцессора на базе этого возвратного расширения.
Приводятся алгоритмы, связывающие препроцессор с редактором для'построения редактора-препроцессора. Описывается стратегии препроцессирования тек~:тз. при ого .
I' I
л —
Редактор-препроцессор, построенный по описываемой технологии, будет работать неэффективно. В п. 3.8 описываются разработанные автором методы оптимизации редактора-препроцессора. Приведены соответствующие алгоритмы.
В п. 3.9 исследуется понятие состояния препроцессора кар МП-преобразователя. Состояние рассматривается как совокупное™ состояний некоторых объектов. Эти объекты разбиваются на трь класса: постоянные, транзитные и локальные. Описывается метод, позволяющий использовать это рг .(биение для оптимизации обработки выходной последовательности редактора-препроцессора при изменении редактируемого текста.
В ЧЕТВЕРТОЙ ГЛАВЕ (23 стр.) описывается генератор редакторов-препроцессоров, разработанный автором на основании результатов, полученных в Главах 2 и 3.
Генератор редакторов-препроцессоров реализован как система, получающая на входе пакет с информацией о нужном пользователю редакторе-препроцесоре и дающая на выходе требуемый редактор-препроцессор.
Пакет с информацией о редакторе-препроцессоре (или пакет настройки) описывает препроцессирующую и редактирующую части генерируемого редактора-препроцессора. Он .содержит описания входного языка препр^..,осора, алгоритма препроцессирования, формата файлового представления текста и дополнительных функция редактора.
Генератор работает следующим образом. Он переводит паке! во внутреннее представление, представляющее собой текст на базовом языке пакета настройки, подает этот текст на вход пакет-|*ого компилятора и собирает полученный на выходе компилятора
объектный модуль с базовым модулем редактора-препроцессора.
Пакет настройки должен содержать описание МП-преобразователя в смысле Главы 3, которому соответствует препроцессор,, информацию для оптимизации и прикладные сведения, позволяющие сделать интерфейс редактирования более удобным.
Приводится подробное описание разделов пакета настройки, а именно:
1) Описание макроопределений:
а) процедура распознавания макровызова;
б) список имен макрокоманд;
в) описание расширения макровызовов.
2) Формат файлового представления.
3) Сведения об организации макроопределений:
а) абстрактное синтаксическое дерево макровызовов;
б) информация о зависимости текстов макрорасширений;
в) начальные значения транзитных объектов;
г) список постоянных объектов.
4) Прикладные возможности:
а) формат экр£ шого представления;
б) шаблоны;
в) прикладные программы.
В п. 4.2 описывается интерфейс редактирования в генерируемых редакторах-препроцессорах, которые являются синтаксически направленными редакторами. Редактирование исходного текста возможно в двух режимах: синтаксическом и текстовом. Переключение режимов может быть выполнено во время сеанса редактирования.
При работе в редакторе-препроцессоре пользователь может перейти к редактированию файлового представления редактируемого текста, причем также в синтаксическом и текстовом ¡чжиг/лх.
- 14 -
В п. 4.3 рассматриваются некоторые вопросы реализации генератора редакторор-препроцессоров, а именно:
1. Внутреннее представление пакета настройки;
2. Используемые редактором-препроцессором об'ектн;
3. Механизм макрогенерации;
4. Алгоритм определения зоны переразбора при изменениях редактируемого текста.
В ПЯТОЙ ГЛАВЕ (30 стр.) описывается процесс генерации автором конкретных редакторов-препроцессоров для следующих препроцессоров: препроцессор к Фортран-компилятору РАТФОР, пакет макроопределений "Макро-85", тур.бо-верификатор С-программ, препроцессор к Фортран-компилятору "Алгебра-88". Приведено подробное изложение пакетов • настройки вместе с алгоритмами прикладных программ.
В ПРИЛОЖЕНИИ (7 стр.) описываются пакет макроопределений "Макро-85" и препроцессоры "КАТРОЯ" и "Алгебра-88".
ОСНОВНЫЕ РЕЗУЛЬТАТЫ РАБОТЫ '
1. На основании проведенного анализа современных подходов к повышению эффективности разработки' программ на традиционных языках программирования предложен подход к разработке программ на основе совмещения процессов редактирования и препроцессирования. Разработаны типовые структуры данных и алгоритмы их обработки для.задач диалогового препроцессирования.
2. Разработан генератор и"струментальных редакторов-препроцессоров, применимый, в частности, к распространенным языкам
программирования.
3. Сгенерированы конкретные редакторы-препроцессоры для мини-ЭВМ, персональных и школьных ЭВМ.
Разработанное автором программное обеспечение используется
в ряде организаций страны. Получено 10 актов о внедрении.
Основные результаты диссертационной работы опубликованы в
следующих работах:
1. Подольская H.A. Редактор-препроцессор для MAKP0-II. М., 1988, 19 е., Деп. в ВИНИТИ 20.01.88, 487-В88.
2. Подольская H.A. Инструментальные редакторы-препроцессоры на малых ЭВМ. - Материалы IV Всесоюзного семинара "Разработка и применение программных средств'ПЭВМ в учебном процессе". М., 1988, с. 78-80.
3. Подольская H.A. Настраиваемый редактор-препроцессор. - Материалы V Всесоюзного семинара "Разработка и применение программных средств ПЭВМ в учебном процессе". М.,.1989, с. 78.
4. Подольская H.A. Разработка программного обеспечения для УК Ш.//Информатика и образование, 1992, N 2.
5. Подольская H.A. Конечные преобразователи и задача диалогового препроцессирования. М., 1993, 19 е., Деп. в ВИНИТИ 19.01,93, II2-B93.
П'агисано в щчать yjT03-S*
Формат G0X8I/I6. Oijv-тиая печать. Овьем / п л.
3al.J3 Тира* /ОС
!к\'.лтра^ичсское пргдпрпятш rADinr.pi» .Чисто iciail l2;S.iUH. Mmiij, 3 « Сплина-,, ur> , 3'
-
Похожие работы
- Принципы интеграции прикладного и инструментального программного обеспечения в системе программирования QUASIC-3
- Исследование методов формальной спецификации программно-аппаратных систем, обеспечивающих надежность систем и повторное использование спецификаций
- Автоматизация разработки и применения пакетов программ для исследования динамики сложных управляемых систем
- Инструментальная поддержка методов обучения алгоритмизации
- Разработка и исследование моделей, методов и средств редактирования информационного наполнения компьютерных банков знаний
-
- Системный анализ, управление и обработка информации (по отраслям)
- Теория систем, теория автоматического регулирования и управления, системный анализ
- Элементы и устройства вычислительной техники и систем управления
- Автоматизация и управление технологическими процессами и производствами (по отраслям)
- Автоматизация технологических процессов и производств (в том числе по отраслям)
- Управление в биологических и медицинских системах (включая применения вычислительной техники)
- Управление в социальных и экономических системах
- Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей
- Системы автоматизации проектирования (по отраслям)
- Телекоммуникационные системы и компьютерные сети
- Системы обработки информации и управления
- Вычислительные машины и системы
- Применение вычислительной техники, математического моделирования и математических методов в научных исследованиях (по отраслям наук)
- Теоретические основы информатики
- Математическое моделирование, численные методы и комплексы программ
- Методы и системы защиты информации, информационная безопасность