Pull to refresh

Структурированное программирование

Reading time 3 min
Views 5.4K
В начале 80-х годов XX века, в недрах проблемной лаборатории электронных вычислительных машин Московского государственного университета им. М.В.Ломоносова началась работа над необычным, по нынешним меркам, языком, а вернее системы, или даже сказать идеологии программирования.

ДССП


Результатом стала ДССП — диалоговая система структурированного программирования.

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

Основу ДССП составляет эмулируемый на компьютерах стековый процессор с тщательно разработанными средствами конструирования структурированных программ (ДССП-процессор).

Прототипом этого процессора послужила созданная в ПНИЛ ЭВМ МГУ в конце 60-х годов экспериментальная троичная цифровая машина «Сетунь 70».

Диалоговое управление ДССП-процессором осуществлено на внешнем (символьном) языке при помощи словаря и компилятора по образцу системы FORTH, но с возможностью компиляции процедур в нисходящей последовательности и удаления излишних словарных входов.

РАЯ


Базовый язык ДССП — Развиваемый Адаптивный Язык (РАЯ) является языком низкого уровня в том смысле, что в нем представлены объекты, типичные для языка ассемблера (биты, байты, машинные слова и элементарные операции над ними). От традиционного языка ассемблера РАЯ отличается постфиксным синтаксисом, строгой дисциплиной управления и наличием эффективных средств пополнения и развития языка. Таким образом, ДССП составляет альтернативу ассемблерным системам программирования, обладающую рядом важных преимуществ:
  • легкость освоения,
  • значительное повышение производительности труда программиста и качества создаваемых программ, развиваемость,
  • адаптивность,
  • мобильность.

Примеры


F1 — вычисляет 3*X*X-4*X+2

: F1 [X] C [X,X] 3 * [X,3*X] 4 - [X,3*X-4] * [3*X*X-4*X] 2 + [3*X*X-4*X+2] ;

использование F1
* 25 F1 . D вк 1777
* -9 F1 . D вк 281


F2 — вычисляет A2*X*X-A1*X+A0

: F2 [A0,A1,A2,X] C E4 E3 [A0,X,A1,X,A2] * + [A0,X,A2*X+A1] * + [A2*X*X-A1*X+A0] ;

использование F2
* 1 2 3 4 F2 . D вк 57
* 1 2 -3 4 F2 . D вк -39


FG — факториал N, если N>0, иначе 0

: FG [N] C BR+ FCT T0 [N! или 0] ;
[FCT - факториал N]
: FCT [N] C 1- C DO P D [N!] ;
: P [F,K] E2 C2 [K,F,K] * E2 1- [F*K,K-1] ;


использование FG
* -5 FG . D вк 0
* 5 FG . D вк 120


НОД — наибольший общий делитель натуральных чисел M,N

: НОД [N,M] RP ЦД D [НОД] ;
[ЦД - от делимого и делителя к делителю и остатку]
: ЦД [делимое,делитель] E2 C2 / [делитель,частное,остаток] E2 D [делитель,остаток] C EX0 ;


использование НОД
* 48 72 НОД . D вк 24
* 225 650 НОД . D вк 25


ДИАЛОГ: вопрос — ответы — резюме

B8
: ДИАЛОГ [] ВОПРОС ОТВЕТЫ-РЕЗЮМЕ [] ;
: ВОПРОС [] CR ."Как Вы предполагаете использовать ДССП?
1. Для вычислений
2. Для управления
3. Для обработки текстов" [] ;
: ОТВЕТЫ-РЕЗЮМЕ [] RP AR [] ;
[AR - получение ответа и выдача резюме]
: AR [] CR ." Дайте номер ответа - " TIB BR #1 R1 #2 R2 #3 R3 ELSE R4 [] ;
: R1 [] CR ."ДССП не ориентирована на вычисления" EX [] ;
: R2 [] CR ."Вы на верном пути" EX [] ;
: R3 [] CR ."ДССП поможет Вам!" EX [] ;
: R4 [] CR ."Такой ответ не предусмотрен" [] ;
B10


использование ДИАЛОГ
* ДИАЛОГ
Как Вы предполагаете использовать ДССП?
1. Для вычислений
2. Для управления
3. Для обработки текстов
Дайте номер ответа - 7
Такой ответ не предусмотрен
Дайте номер ответа - 3
ДССП поможет Вам!


Реализации


  • Компьютеры и платформы: Intel 80x86, MC68020, R3000, VAX, PDP-11, INTEL 8080, SparcSUN.
  • Операционные системы: MSDOS, MSDOS-extenders, UNIX, RT-11, RSX, OS9, CPM

Вместо заключения


К сожалению, на данный момент разработка языка официально прекратилась, последние новости датируются 2002 годом.

Однако все желающие могут опробовать свои силы в структурированном программировании:
  1. git clone git://github.com/ingeniarius/DSSP-32.git
  2. следуем инструкциям из INSTALL

Сбор системы займет всё лишь несколько минут… Enjoy!

Дополнительные материалы по ДССП



P.S. Будем рады всем заинтересованным в поддержке и развитии этой необычной и интересной системы.
Tags:
Hubs:
+16
Comments 47
Comments Comments 47

Articles