dd27b0956bd4c60d9c53cfb2f800cf7a.ppt
- Количество слайдов: 39
А. А. Бурцев, С. А. Сидоров НИИСИ РАН, НИЛ ЭВМ МГУ История создания и развития ДССП: от “Сетуни-70” до троичной виртуальной машины
Аннотация n n ДССП, первоначально созданная в НИЛ ЭВМ МГУ под руководством Брусенцова Н. П. , на протяжении ряда лет была реализована на минии микрокомпьютерах самой разнообразной архитектуры и в различных операционных средах.
План доклада 1. Общая характеристика системы 2. Первая версия ДССП 3. ДССП для компьютеров унифицированной архитектуры 4. Распространение ДССП на другие компьютерные платформы 5. ДССП для 32 -разрядных микрокомпьютеров 6. Мобильная версия ДССП/С 7. ДССП в мире науки и современной компьютерной техники 8. ДССП для троичной виртуальной машины 9. Заключение 10. Библиография 11. Приложения. Примеры программирования на ДССП
1. Общая характеристика системы создана в НИЛ ЭВМ МГУ под руководством Брусенцова Н. П. итог развития миникомпьютерной архитектуры: Сетунь => Сетунь-70 => ДССП программно эмулируемый стековый процессор 1) два стека: арифметический и управляющий 2) команды структурированного управления (от Сетуни-70) 3) сшитый (threaded) код для внутреннего представления программы 4) внутренний интерпретатор сшитого кода интегрированная среда разработки: 1) легко доступная для освоения пользователю-непрофессионалу 2) диалоговый режим на всех стадиях работы 3) словарная организация как в системе ФОРТ (Forth) 4) простота расширения системы основные компоненты базового ПО системы: - словарь ядра - внутренний интерпретатор - внешний интерпретатор - компилятор - редактор текстов - отладчик
Словарная организация системы слово - любая последовательность печатных символов (без пробелов) словарь - совокупность слов, понимаемых системой (язык ДССП) предложение – последовательность слов, разделенных пробелами основной цикл работы системы – исполнение команд-предложений любое действие системы – выполнение слова. виды слов: примеры: 1) слова для выполнения вычислений + – * 2) слова для манипуляции с данными в стеке E 3 C 2 D 3) слова для доступа к памяти и переменным @W !W ! ‘ 4) слова для организации ветвлений и циклов IF+ BR- BRS DW DO RP EX 5) слова для построения тел новых слов : VAR VALUE , ; 6) слова, управляющие словарём FORGET : : CLEAR 7) слова для загрузки и сохранения системы LOAD SAVE программирование в ДССП – это наполнение словаря SAVE – сохранение словаря и состояния системы LOAD – загрузка исполняемых команд-предложений из файла пример диалога: * : ^2 C * ; [новое слово для возведения в квадрат] * 5 ^2. 25 * VAR X [ новая переменная ] * 7 ! X [X: =7] * [вычислим X^2+3 X+8] X ^2 X 3 * + 8 +. 78 *
Характерные черты ДССП и ФОРТа диалоговые интерпретируемые системы словарная организация системы относятся классу систем, функционирующих на основе интерпретации сшитого кода двухстековая архитектура - арифметический стек для хранения обрабатываемых данных - управляющий стек для сохранения адресов возвратов из процедур Бесскобочная запись арифметических выражений X Y – Z V + * [ (X-Y)*(Z+V) ] ( польско инверсная запись - ПОЛИЗ ) Отличительные черты ДССП (от ФОРТа) свой ассортимент слов базового словаря специфическая процедурная версия структурированных команд управления поддержка пошаговой нисходящей разработки программы принцип компоновки внутреннего представления “слово в слово”: одно слово исходного текста переводится в одно слово машинного кода
Команды структурированного управления поддерживают структурированное программирование на уровне сшитого кода нет команд перехода по меткам, только команды вызова процедур в качестве процедуры можно вызвать любое слово словаря параметрами процедуры служат значения, помещаемые в стек безусловные вызовы процедур: 1) это обычный (прямой) вызов слова 2) предусмотрена также и команда косвенного вызова слова, адрес которого передан через стек : ‘‘ PROC. . . [ адрес слова PROC ] EXEC [ вызывается слово PROC ] условные вызовы процедур – это команды ветвлений : - одиночное ветвление IF- IF 0 IF+ - двойное ветвление BR- BR 0 BR+ - тройное ветвление BRS - множественное ветвление BR многократные вызовы процедур – это команды циклов : - циклы с условием DW DO- LOOP - циклы с экстренными выходами DO RP EX EX- EX 0 EX+ эти команды способствуют структуризации программы, т. к. требуют тела ветвлений и циклов оформлять как процедуры, т. е. записывать их в тексте программы в виде отдельных слов
Поддержка нисходящей разработки программ Определение нового слова как процедуры: : P P 1 P 2 P 3 … Pn ; [ определение новой процедуры с именем P ] ● в ФОРТе слова P 1 P 2 P 3 … Pn должны быть уже известны ● а в ДССП слова P 1 P 2 P 3 … Pn могут быть определены и позднее ФОРТ вынуждает строить программу только снизу-вверх ДССП позволяет определять слова в любом порядке и тем самым разрешает строить программу, сочетая методы сверху-вниз и снизу-вверх ДССП позволяет в тексте отразить древовидную структуру программы : : P PA PB … PX ├─: PA PA 1 PA 2 │ ├─: PA 1 a │ ├─: PA 2 a │ │. . . │ └─: PAka ├─: PB PB 1 PB 2 │ ├─: PB 1 a │ ├─: PB 2 a │ │. . . │ └─: PBma │. . . └─: PX PX 1 PX 2 ├─: PX 1 a ├─: PX 2 a │. . . └─: PXna ; [ определение главной процедуры P всей программы ] … PAk ; [ определение процедуры PA 1 -го уровня ] PA 1 b … PA 1 z ; [ определение процедуры PA 1 2 -го уровня ] PA 2 b … PA 2 z ; [ определение процедуры PA 2 2 -го уровня ] PAkb … PAkz ; [ определение процедуры … PBm ; [ определение процедуры PB 1 a … PB 1 z ; [ определение процедуры PB 2 a … PB 2 z ; [ определение процедуры PAk PB PB 1 PB 2 2 -го уровня ] 1 -го уровня ] 2 -го уровня ] PBmb … PBmz ; [ определение процедуры PBm 2 -го уровня ] … PXn ; [ определение процедуры PX 1 a … PX 1 z ; [ определение процедуры PX 2 a … PX 2 z ; [ определение процедуры PX PX 1 PX 2 1 -го уровня ] 2 -го уровня ] PXnb … PXnz ; [ определение процедуры PXn 2 -го уровня ]
2. Первая версия ДССП-НЦ 1980 -1982 г. Златкус Г. В. “Электроника-НЦ-03 Д” Сшитый код двойной косвенности (для поддержки нисходящей разработки программы) Характерные черты “Сетуни-70” : - троичное ветвление BRS - цикл по условию DWON
3. ДССП для компьютеров унифицированной архитектуры ДССП-80 1982 -1984 г. Руднев И. А. , Захаров В. Б. , Сидоров С. А. “Электроника-НЦ 80” (LSI-11, PDP-11) прямой сшитый код JSR @R 5+ (NEXT) циклы с экстренными выходами RP DO EX EX- EX 0 EX+ унифицированный набор префиксных операций для работы с переменными и массивами различных типов ! ‘ !+ !- !+1 !-1 !!! DIM? SIZE? словарь разбит на подсловари и секции : : CLEAR GROW FORGET [Захаров В. Б. ] встроенный ассемблер [Чанышев Н. А. ] компоновщик [Сидоров С. А. ] целевой компилятор [Руднев И. А. ]
Экспериментальная версия ДССП-РВ (реального времени) 1982 -1983 г. Борисов А. В. “Электроника-НЦ 80” (PDP-11) прямой сшитый код JSR @R 5+ (NEXT) сопрограммный механизм New. Process Transfer переход на сопрограмму по прерыванию IOTransfer построение разнообразных средств организации и взаимодействия параллельных процессов на основе сопрограммного механизма средства модульного построения программы (блоки, модули, мониторы)
Экспериментальная версия ДССП-ПМ (периферийный монитор) 1982 -1983 г. Бурцев А. А. “Электроника-НЦ 80” (PDP-11) прямой сшитый код JSR @R 5+ (NEXT) цикл с условием WHILE УСЛОВИЕ DW ТЕЛО типы данных для доступа к флагам и полям периферийных регистров механизм обработки исключительных ситуаций SITUATION ON_ RERAISE _NOTIFY _ESCAPE _RETRY ( TRAP ON EON RON ) средства организации и взаимодействия параллельных процессов механизм прерываний на уровне сшитого кода
ДССП в среде операционных систем для компьютеров унифицированной архитектуры 1985 -1988 Чанышев Н. А. ДВК-3, ДВК-4. СМ-3, СМ-4 (PDP-11) ДССП-80 в ОС РАФОС (RT-11) ДССП-80 в ОС РВ (RSX-11) команды для взаимодействия со службами используемой ОС команды для работы с файлами базовой ОС
Методическое обеспечение программирования в ДССП 1987 -1988 методические пособия для студентов и школьников: Брусенцов Н. П. , Захаров В. Б. , Руднев С. А. , Сидоров С. А. , Чанышев Н. А. Развиваемый адаптивный язык РАЯ диалоговой системы программирования ДССП. М. : Изд-во Моск. Ун-та, 1987 г. – 80 с. Брусенцов Н. П. , Захаров В. Б. , Руднев С. А. , Сидоров С. А. , Чанышев Н. А. Методические указания по программированию в ДССП. Ротапринт НИВЦ МГУ, 1988 г. – 40 с.
4. Распространение ДССП на другие компьютерные платформы начало 90 -х годов ДССП в НИИСИ РАН разработка внутреннего ПО компьютерных модулей на основе микропроцессоров MC 68020, R 3000, Intel 80386 Лякина Е. Н. , Пшеничный К. А. , Сидоров С. А. , Шумаков М. Н. Система внутреннего программного оснащения DPROM. НИЛ ЭВМ МГУ + НИИСИ РАН = совместное развитие ДССП к середине 90 -х годов ДССП функционирует на платформах: PDP-11, Intel 8080, Intel 8086, Motorola 68020, VAX, R 3000 в операционных средах: RT-11, RSX-11, UNIX, CP/M, MS-DOS, MS Windows
5. ДССП для 32 -разрядных микрокомпьютеров 1990 -1996 г. ДССП-32 для Intel 8086 в MS-DOS Волынец Р. В. ДССП-32 p для Intel 80386 в MS-DOS + DOS 4 gw (под управлением ДОС-экстендера) преодолено ограничение по памяти (640 Кб) 1997 -1998 Бурцев А. А. Модификация ядра ДССП-32 p : 1) полная версия механизма ситуаций 2) цикл с условием DW 2) механизм прерываний на уровне сшитого кода 3) сопрограммный механизм 4) создание разнообразных мониторов для организации параллельных процессов и их взаимодействия на языке ДССП
6. Мобильная версия ДССП/С 1998 -1999 г. Бурцев А. А. , Франтов Д. В. , Шумаков М. Н. ядро ДССП на языке Си знаковый сшитый код с относительной адресацией (примитив = номер Си-функции ядра) мобильность программ на уровне сшитого кода в операционных средах: 1) MS Windows 2) MS-DOS + DOS-extender DOS 4 gw 3) LINUX 4) ОС Solaris для Ultra Sparc модифицирован унифицированный механизм работы с данными (переменными и массивами) добавлены средства ООП [ Бурцев А. А. ] (объектно-ориентированного программирования) CLASS: SUBCLASS METHOD ; CLASS
7. ДССП в мире науки и современной компьютерной техники итог 20 -летнего развития ДССП-НЦ ==> ДССП-80 ==> ДССП-32 p ==> ДССП/С к концу XX века ДССП – среда программирования с широким спектром современных методов структурированной разработки сложных программных систем ДССП включает средства для - структурированного программирования - модульного программирования - объектно-ориентированного программирования - параллельного программирования - структурированной обработки исключительных ситуаций почему ДССП не получила широкого распространения ? на рынке систем программирования для микрокомпьютеров возобладали интегрированные системы программирования на основе языков Си и Паскаль
Примеры применения ДССП Программное оснащение автоматизированной системы обучения “Наставник”. Система автоматизированной подготовки учебных курсов для АСО “Наставник”. Кросс-система для микропроцессора К 580 в ДССП. Продукционная система в ДССП-80. Адаптируемая отладочная система разработки микроконтроллерных устройств. Система внутреннего программного оснащения DPROM. Система компьютеризации булевой алгебры в ДССП. DED – экранный отладчик и редактор в стиле “микромир”. курсовые и дипломные работы в МГУ и других ВУЗах
Кандидатские диссертации, связанные с развитием ДССП 1983 Златкус Г. В. Диалоговая Система Структурированного программирования (ДССП) для микрокомпьютеров. 1986 Руднев И. А. Исследование путей и реализация на основе ДССП целевой компиляции программ для встраиваемых микропроцессоров. 1987 Сидоров С. А. Исследование мобильности ДССП и разработка средств её переноса. 1988 Захаров В. Б. Средства разработки программ в ДССП. 1991 Грачёв А. Ю. Структурирование данных в диалоговой системе программирования ДССП. 1996 Бурцев А. А. Расширение языков программирования средствами обработки исключительных ситуаций.
Информация о ДССП в научном мире регулярные публикации статей в отечественных журналах и научных сборниках трудов ( например, в серии совмеcтных сборниках МГУ+СПГУ “Вычислительная техника и вопросы кибернетики” ) доклады на междунарожных конференциях (например, на Euro. Forth conferences в 1996 -1999 гг. ) ДССП распространялась как свободное ПО с 1996 г. сайт о ДССП в Интернете: [ Шумаков М. Н. , Локтев Н. М. ] по адресу: www. dssp. msk. ru с 1998 г. по адресу: www. forth. org. ru/~dssp на сайте виртуального компьютерного музея: по адресу: www. computer-museum. ru/histsoft/dssp. htm
8. ДССП для ТВМ – троичная виртуальная машина 2010 -2011 гг. Сидоров С. А. имитационная модель троичного процессора программный комплекс (на языке Си), включающий: + ассемблер ТВМ + имитатор исполнения троичных программ + диалоговый монитор, позволяющий следить за процессом исполнения программы в режиме отладки: - прокрутка по шагам, точки останова, - просмотр и модификация регистров, стеков, памяти особенности архитектуры: + двухстековая (арифметический стек и управляющий стек) + система счисления: троичная симметричная (-1, 0, +1) + команды структурированного управления IF- IF 0 IF+ BR- BR 0 BR+ BRS DW + система команд нацелена на прямое исполнение ДССП-программ, представленных в сшитом коде + адрес = команда вызова процедуры => сшитый код = процедурный код при реализации на двоичных машинах трит представляется парой битов: (1, 0)= +1 (0, 0)= 0 (0, 1)= -1
ДССП для троичной виртуальной машины ДССП-ТВМ 2010 -2011 гг. Бурцев А. А. кросс-система разработки программ для ТВМ на языке ДССП-Т (троичном варианте языка ДССП) ДССП-ТВМ включает: + кросс-компилятор с языка ДССП-Т на язык ассемблера ТВМ + стандартный препроцессор (языка Си) + ассемблерное ядро для исполнения ДССП-программ + библиотека стандартных модулей на языке ДССП-Т + диалоговый командный монитор для прогона ДССП-программ особенности языка ДССП-Т : + основа = подмножество базового языка ДССП-80 + операции троичной логики и арифметики вместо двоичных + операции доступа к трайтам и троичным словам памяти + добавлен ряд полезных возможностей других версий ДССП: (цикл с условием DW, механизм ситуаций, сопрограммный механизм) + нет средств, чтобы создавать новые компилирующие слова соблюдается ДССП-принцип “слово в слово” внутреннее представление ДССП-программы = сшитый (процедурный) код, который напрямую исполняет ТВМ
9. Заключение ДССП почти 30 лет ДССП = как результат эмуляции двухстековой архитектуры Сетуни-70 с поддержкой управляющих команд структурированного программирования + словарная организация ДССП для двоичных машин: ДССП-НЦ ==> ДССП-80 ==> ДССП-32 p ==> ДССП/С ==> ДССП-ТВМ как основная система разработки программ для создаваемой троичной машины следующий этап развития ДССП : создание полноценного интерпретатора языка ДССП, способного функционировать на создаваемой троичной машине в качестве резидентной системы программирования интерпретатор ДССП на ТВМ (на языке ДССП-Т)
10. Библиография 1. Брусенцов Н. П. , Златкус Г. В, Руднев И. А. ДССП - диалоговая система структурированного программирования. // Программное оснащение микрокомпьютеров. М. : Изд-во МГУ, 1982, с. 11 -40. 2. Брусенцов Н. П. , Рамиль Альварес Х. Структурированное программирование на малой цифровой машине. // Вычислительная техника и вопросы кибернетики. Вып. 15. М. : Изд-во МГУ, 1978, с. 3 -8. 3. Златкус Г. В. Принципы построения системы структурированного программирования для микрокомпьютеров. // Вычислительная техника и вопросы кибернетики. Вып. 19. М. : Изд-во МГУ, 1982, с. 73 -76. 4. Захаров В. Б. , Златкус Г. В. , Руднев И. А. , Сидоров С. А. Реализация диалоговой системы структурированного программирования на микрокомпьютере “Электроника НЦ-03 Д”. // Архитектура и программное оснащение цифровых систем. М. : Изд-во МГУ, 1984, с. 10 -17. 5. Златкус Г. В. Ассемблер малой ЦМ “Сетунь-70”. // Вычислительная техника и вопросы кибернетики. Вып. 17. М. : Изд-во МГУ, 1981, с. 26 -34. 6. Брусенцов Н. П. , Захаров В. Б. , Руднев И. А. , Сидоров С. А. Диалоговая система структурированного программирования ДССП-80. // Диалоговые микрокомпьютерные системы. М. : Изд-во МГУ, 1986, с. 3 -21.
Библиография 7. Бурцев А. А. Периферийный монитор – развитие архитектуры ввода/вывода ДССП. // Диалоговые микрокомпьютерные системы. М. : Изд-во МГУ, 1986, с. 42 -51 8. Борисов А. В. Диалоговая система структурированного программирования в реальном времени – ДССП-РВ. // Диалоговые микрокомпьютерные системы. М. : Издво МГУ, 1986, с. 51 -62. 9. Чанышев Н. А. Язык встроенного ассемблера для ДССП-80. // Диалоговые микрокомпьютерные системы. М. : Изд-во МГУ, 1986, с. 21 -27. 10. Захаров В. Б. , Мельникова Е. А. Организация словаря в ДССП-80. // Диалоговые микрокомпьютерные системы. М. : Изд-во МГУ, 1986, с. 38 -42. 11. Сидоров С. А. Исследование переносимости ДССП. // Диалоговые микрокомпьютерные системы. М. : Изд-во МГУ, 1986, с. 30 -37. 12. Руднев И. А. Целевая компиляция ДССП-программ. // Диалоговые микрокомпьютерные системы. М. : Изд-во МГУ, 1986, с. 28 -30. 13. Брусенцов Н. П. , Захаров В. Б. , Руднев С. А. , Сидоров С. А. , Чанышев Н. А. Развиваемый адаптивный язык РАЯ диалоговой системы программирования ДССП. М. : Изд-во Моск. Ун-та, 1987 г. – 80 с. 14. Брусенцов Н. П. , Захаров В. Б. , Руднев С. А. , Сидоров С. А. , Чанышев Н. А. Методические указания по программированию в ДССП. Ротапринт НИВЦ МГУ, 1988 г. – 40 с.
Библиография 15. Чанышев Н. А. ДССП на персональных компьютерах в операционной среде RT-11. // Программное оснащение персональных компьютеров. М. : Изд-во Моск. ун-та, 1990, с. 28 -32. 16. Чанышев Н. А. ДССП в операционной среде ОС-РВ. // Математические проблемы информатики. М. : Изд-во Ленингр. ун-та, 1987, с. 40 -44. 17. Лякина Е. Н. , Пшеничный К. А. , Сидоров С. А. , Шумаков М. Н. Система внутреннего программного оснащения DPROM. // Вопросы кибернетики. Сб. статей под ред. В. Б. Бетелина. М. , 1999. с. 77 -86. 18. Сидоров С. А. , Шумаков М. Н. ДССП как открытая система. // Дискретные модели. Анализ, синтез и оптимизация. Спб. : Спб. ГУ, 1998. с. 191 -201. 19. Волынец Р. В. Реализация ДССП для микропроцессоров Intel 80386. // Дискретные модели. Анализ, синтез и оптимизация. Спб. : Спб. ГУ, 1998. с. 201 -227. 20. Бурцев А. А. Механизм прерываний для интерпретатора сшитого кода. // Вопросы кибернетики. Сб. статей под ред. В. Б. Бетелина. М. , 2005. с. 177 -191. 21. Бурцев А. А. , Шумаков М. Н. Сопрограммный механизм в ДССП как основа для построения мониторов параллельных процессов. // Вопросы кибернетики. Сб. статей под ред. В. Б. Бетелина. М. , 1999. с. 45 -63. 22. Волынец Р. Диспетчер параллельных процессов в ДССП-32 р. // Интегрированная система обучения, конструирования программ и разработки дидактических материалов. М. : Изд-во факультета ВМи. К МГУ, 1996. с. 70 -80.
Библиография 23. Бурцев А. А. , Франтов Д. В. , Шумаков М. Н. Разработка интерпретатора сшитого кода на языке Си. // Вопросы кибернетики. Сб. статей под ред. В. Б. Бетелина. М. , 1999. с. 64 -76. 24. Бурцев А. А. , Рамиль Альварес Х. Средства объектно-ориентированного программирования в ДССП. // Программные системы и инструменты. Тематический сборник № 4, М. : Изд-во факультета ВМК МГУ, 2003. с. 166 -175. 25. Бурцев А. А. ДССП – среда структурированной разработки программ как сложных систем. // Вторая Международная конференция “Системный анализ и информационные технологии” САИТ-2007 (10 -14 сентября 2007 г. , Обнинск, Россия): Труды конференции. Изд-во ЛКИ, 2007. т. 2. с. 190 -194. 26. Брусенцов Н. П. , Маслов С. П. , Рамиль Альварес Х. Микрокомпьютерная система обучения “Наставник”. –М. : Наука, Гл. ред. физ. -мат. лит. , 1990. гл. 4. с. 115 -145. 27. Лозовая Е. А. Система автоматизированной подготовки учебных курсов для МСО “Наставник”. // Дискретные системы и их программное обеспечение. Л. : Изд-во Ленингр. Ун-та, 1990. с. 149 -154. 28. Сидоров С. А. Кросс-система для микропроцессора К 580 в ДССП. // Автоматизация разработки и моделирование вычислительных и микропроцессорных систем: Материалы семинара. М. , 1983. с. 119 -122. 29. Грачев А. Ю. Продукционная система в ДССП-80. // Программное оснащение персональных компьютеров. М. : изд-во МГУ, 1990, с. 51 -63.
Библиография 30. Лобанов В. И. , Локтев Н. М. Адаптируемая отладочная система разработки микроконтроллерных устройств (МКУ) в среде ДССП. (http: //trinary. ru/kb/b 072 e 4 dddefd-46 a 7 -ae 2 e-7180 d 31 eb 98 c). 31. Владимирова Ю. С. Конструктная реализация булевой алгебры. // Интегрированная система обучения, конструирования программ и разработки дидактических материалов. М. : Изд-во факультета ВМи. К МГУ, 1996. с. 44 -69. 32. Sidorov S. A. , Shumakov M. N. DSSP and Forth. Compare analysis. // Euro. Forth’ 96 conference proceedings. St. Peterburg, Russia, 1996. (11 pp). 33. Frantov D. V. , Shumakov M. N. DED (DSSP Editor + Debugger). // Euro. Forth’ 97 conference proceedings. Oxford, England, 1997. p. 145 -153. 34. Sidorov S. A. Data in DSSP – prefix access in postfix language. // Euro. Forth’ 97 conference proceedings. Oxford, England, 1997. p. 35 -41. 35. Sidorov S. A. Top-down thinking and top-down writing in DSSP. // Euro. Forth’ 98 conference proceedings. Schloss Dagstuhl, Germany, 1998 (5 pp. ). 36. Burtsev A. A. Interrupt mechanism for threaded code interpreter. // Euro. Forth’ 99 conference proceedings. St. Peterburg, Russia, 1999. (8 pp).
11. ПРИЛОЖЕНИЯ Примеры программирования на ДССП
П 1. Структурированные команды ветвления Одиночные ветвления или условные вызовов процедуры : [ T ] IF- P 1 [ ] [ вызов процедуры P 1, если вершина стека (T) <0 ] [ T ] IF 0 P 1 [ ] [ вызов процедуры P 1, если вершина стека (T) =0 ] [ T ] IF+ P 1 [ ] [ вызов процедуры P 1, если вершина стека (T) >0 ] Двоичные ветвления или вызовы одной из двух процедур : [ T ] BR- P 0 P 1 [ ] [ вызов процедуры P 0, если T<0, иначе вызов P 1 ] [ T ] BR 0 P 1 [ ] [ вызов процедуры P 0, если T=0, иначе вызов P 1 ] [ T ] BR+ P 0 P 1 [ ] [ вызов процедуры P 0, если T>0, иначе вызов P 1 ] Троичное ветвление или вызов одной из трёх процедур : [ T ] BRS PN PZ PP [ ] [ вызов одной из процедур: или PN (T<0) или PZ (T=0) или PP (T>0) ] Множественное ветвление или вызов одной из многих процедур : [ T ] BR V 1 P 1 V 2 P 2 … VX PX ELSE P 0 [ ] [ вызов процедуры Pi (если T=Vi), иначе P 0 ]
П 2. Примеры применения команд ветвлений словесное описание алгоритма программа на языке ДССП функция Abs(X) : если X<0 то X: = -X; Abs: =X; : Abs [X] C IF- NEG [|X|] ; функция Min(X, Y): если X<Y то Z: =X; иначе Z: =Y; Min: =Z; : Min [X, Y] C 2 < [X<Y? ] BR+ D E 2 D [Z] ; функция Sign(X): если X<0 то Z: =-1 иначе если X=0 то Z: =0 иначе Z: =1 Sign: =Z; : Sign [X] BRS -1 0 1 [Z] ; { выполнение арифметической операции по заданному символу } функция Oper(X, Y, Ch): выбор при Ch=‘+’ : Z: =X+Y; при Ch=‘-’ : Z: =X-Y; при Ch=‘*’ : Z: =X*Y; при Ch=‘+’ : Z: =X/Y; иначе : Z: =0; всё Oper: =Z; [ выполнение арифметической операции по заданному символу ] : Oper [X, Y, Ch] [Ch] BR #+ + [X+Y] #- - [X-Y] #* * [X*Y] #/ /D [X/Y] ELSE DD 0 [ 0 ] [Z] ; : /D [X, Y] / [Цел, Ост] D [X/Y] ; : DD 0 [X, Y] D D 0 [0] ;
П 3. Структурированные команды циклов Цикл с параметром счётчиком: [ N ] DO- BODY [ ] [ многократный вызов процедуры BODY ( N раз ) ] [ параметр T (значение вершины стека) уменьшается на 1 каждый раз ] [ перед очередным вызовом процедуры BODY, т. е. T= N-1, N-2, …, 1, 0 ] [ вызовы прекращаются, когда этот параметр становится <0 ] Цикл с предусловием: [ ] COND [ T ] DW BODY [ ] [ многократный вызов процедуры BODY пока условие COND истина ] [ вызовы процедуры BODY прекращаются, когда после ] [ очередного вызова слова COND значение вершины стека (T) становится =0 ] Бесконечный цикл: [ ] LOOP BODY [ ] [ многократный безусловный вызов процедуры BODY ] [ такой цикл может быть прекращен специальной командой выхода ]
П 4. Примеры применения команд циклов словесное описание алгоритма программа на языке ДССП функция Fact(N): {Факториал} F: =1; для k от N-1 до 0 повт нц F: = F*(k+1); кц Fact: =F; : Fact [N] [ Факториал ! ] 1 E 2 [1, N] DO- FI [N!] ; : FI [F, k] [при k=N-1, . . , 1, 0] E 2 C 2 1+ * E 2 [F*(k+1), k] ; { вычисление значения полинома, заданного массивом коэффициэнтов A[0: n] по схеме Горнера } функция Plnm (X): S: = A[n]; для i от N-1 до 0 повт нц S: = S*X+A[i]; кц Plnm: = S; [ вычисление значения полинома, заданного массивом коэффициэнтов A(0: n) по схеме Горнера ] : Plnm [X] n A [A(n)] n [X, A(n), n] DO- PI [P(X)] ; : PI [X, S, i] E 2 C 3 * [X, i, S*X] C 2 A + [S*X+A(i)] E 2 [X, S, i] ; функция NOD(X, Y): пока X<>Y повт нц если X<Y то Y: =Y-X; иначе X: =X-Y; кц NOD: = X : NOD [X, Y] X<>Y? DW Dec. XY D [NOD(X, Y)] ; : X<>Y? [X, Y] C 2 - ; : Dec. XY [X, Y] C 2 < [X<Y? ] BR+ Y-X X-Y [X, Y] ; : X-Y [X, Y] E 2 C 2 - E 2 [X-Y, Y] ; : Y-X [X, Y] C 2 - [X, Y-X] ;
П 5. Команды структурированной обработки исключительных ситуаций новые ситуации объявляются в ДССП как новые слова особого типа: SITUATION S! FR [ объявление нового слова-ситуации с именем S! ] вызов такого слова S! означает возбуждение ситуации, которое запускает механизм поиска реакции на ситуацию для ее обработки. в каждой процедуре можно задать свою реакцию на любую ситуацию реакция задаётся спец. командой в теле процедуры, возможны три типа реакций: ● 1) ON_ S! _NOTIFY My. R или кратко: ON S! My. R предлагает продолжить исполнение процедуры (с места возникновения ситуации в ней) ● 2) ON_ S! _RETRY My. R или кратко: RON S! My. R предлагает повторить процедуру (начиная с этой самой команды в её теле) ● 3) ON_ S! _ESCAPE My. R или кратко: EON S! My. R предлагает завершить процедуру (и продолжать программу) В слове-реакции My. R можно повторно возбудить ситуацию командой RERAISE Пример использования ситуации для экстренного выхода: SITUATION EXIT! : . EXIT!. ” ситуация EXIT! ” BYE ; : P EON EXIT! NOP. . . PA PB. . . PX ; : PA PA 1 PA 2 … PAk ; : PB PB 1 PB 2 … PBm ; : PX PX 1 PX 2 … PXn ; . . . : PA 2 … IF+ EXIT! [ экстренный выход из процедуры P ] … ; обеспечивается возможность возбуждать ситуацию по прерыванию и по воздействию от другого параллельного процесса
П 6. Модульное построение программы и словаря логически обособленные компоненты программы ● модули (Модула-2), ● пакеты (АДА), ● юниты (Турбо Паскаль) в ДССП оформляются как именованные подсловари операции с подсловарями: GROW NAME – открыть подсловарь NAME на наполнение (наращивание) USE NAME – сделать подсловарь NAME доступным для использования CLEAR – очистить текущий подсловарь, оставив лишь видимые извне слова разделение подсловаря на видимую и скрытую части: : : – этим словом помечаются (перед их определением) видимые слова, т. е. те слова, которые останутся в подсловаре и после его очистки пример оформления модуля Турбо Паскаля как подсловаря в ДССП: UNIT Queue; { Видимая ая часть } const Max=1000; procedure Init; procedure Put(x: TItem); function Get: TItem; IMPLENENTATION { Скрытая часть } var n, k: 0. . Max; T: array[0. . Max-1]of TItem; { реализация Init, Put, Get }. . . END. GROW Queue [объявления видимых слов] : : 1000 VALUE Max : : : Init. . . _Init. . . ; : : : Put. . . _Put. . . ; : : : Get. . . _Get. . . ; [объявления всех остальных скрытых слов] VAR n VAR k Max 1 - TItem VCTR T [ реализация вспомогательных слов ]. . . [ _Init, _Put, _Get ] CLEAR
П 7. Средства параллельного программирования двухуровневый ассортимент средств в духе языка Модула-2 Н. Вирта 1 -ый уровень – сопрограммный механизм с операциями: ● NEWCONTEXT – создания контекста новой сопрограммы; ● TRANSFER – переключения с одного сопрограммного контекста на другой; 2 -ой уровень – построенные на основе сопрограммного механизма мониторы, управляющие развитием параллельных процессов: Простой монитор SPMON предоставляет операции: ● START – запустить процесс ● STOP – остановить процесс ● DELAY – задержать процесс на заданное время ● PAUSE – приостановить процесс, чтобы возобновить следующий по очереди все процессы в этом мониторе равноправны (одного приоритета) Монитор с приоритетами PPMON предоставляет дополнительно операции: ● WAIT – задержать процесс в ожидании сигнала ● SEND – послать сигнал для возобновления процесса ● PRIO! – изменить приоритет текущего процесса исполняется процесс с наивысшим приоритетом, а если таковых несколько, то процессор регулярно переключается между ними по прерыванию от таймера любую операцию с процессами можно выполнять по прерыванию
П 8. Механизм прерываний на уровне интерпретатора сшитого кода не на уровне машинного кода, а на уровне интерпретатора сшитого кода Это означает, что назначенную процедуру обработки прерывания интерпретатор ДССП/C начинает исполнять не в сам момент прерывания, а только по завершении текущей ДССП-команды, т. е. примитивной процедуры (примитива) гибкий (универсальный) механизм прерываний позволяет в процедуре обработки прерывания исполнять любые ДССП-команды, в том числе: ● возбуждать ситуацию ● переключать сопрограммный контекст ● запускать новый процесс ● посылать сигнал для возобновления задержанного процесса
П 9. Средства ООП (Объектно-Ориентированного Программирования) поддерживается упрощенная концепция ООП (= в языке Турбо Паскаль) ● простое наследование (только от одного класса) ● полноценный полиморфизм с возможностью перекрытия любого метода ( все методы виртуальные ) ● инкапсуляция посредством управления видимостью имён в подсловарях ( : : CLEAR ) на языке ДССП на языке Турбо Паскаль type My. Class= object(TClass) CLASS: My. Class SUBCLASS TClass p 1: type 1; … pk: typek; type 1 VAR p 1 … typek VAR pk procedure Mt 1(…); virtual; METHOD Mt 1 … procedure Mtn(…); virtual; … METHOD Mtn end; ; CLASS procedure My. Class. Mt 1; begin…end; My. Class : M: Mt 1 [P] … ; procedure My. Class. Mtn; begin…end; My. Class : M: Mtn [P] … ; var My. Obj: My. Class; … var x: type 1; My. Class VAR My. Obj … type 1 VAR X … My. Obj. Init(…); {инициализация} … CONSTRUCT My. Obj {иници-ация} … My. Obj. Mt 1(…); … My. Obj. Mtn(…); … Mt 1 My. Obj … Mtn My. Obj … x: =My. Obj. p 1; … My. Obj. p 1: =x; … My. Obj p 1 ! X … X My. Obj ! p 1 procedure My. Class. Mt 0; begin … TClass. Mt 0(…); … end; procedure Exec. Mt 0(P: TClass); begin … P. Mt 0(…); … end; My. Class : M: Mt 0 [P] … … [P] Mt 0 AS TClass … ; : Exec. Mt 0 [P] … … [P] Mt 0 SELF … ;
dd27b0956bd4c60d9c53cfb2f800cf7a.ppt