ГД/Л
Эта статья нуждается в дополнительных цитатах для проверки . ( октябрь 2010 г. ) |
![]() | |
Парадигмы | Мультипарадигмальность : процедурная , императивная , структурированная. |
---|---|
Семья | АЛГОЛ |
Разработчик | Общие данные |
Впервые появился | 1978 год |
Платформа | Нова , Затмение , Затмение/МВ |
ТЫ | РДОС, АОС , АОС/ВС |
Под влиянием | |
АЛГОЛ 60 |
DG/L — это язык программирования , разработанный Data General Corp для Nova , Eclipse и Eclipse/MV семейств миникомпьютеров в 1970-х и начале 1980-х годов.
Было две отдельные версии:
- «Старый» Алгол, который работал и генерировал код для серии 16-битных компьютеров Nova. Компилятор лишь немного оптимизировал. Он был доступен только в операционных системах семейства RDOS .
- DG/L, который был разработан путем значительной модификации оптимизирующего компилятора Fortran 5 . Этот компилятор работал только на компьютерах семейства Eclipse и Eclipse/MV, но генерировал оптимизированный код для семейства Nova, Eclipse и Eclipse/MV (Eagle). Он был доступен на RDOS, AOS и AOS/VS.
Сам язык представлял собой расширенную версию Алгола 60 . Он поддерживал целые числа, числа с плавающей запятой одинарной и двойной точности, а также комплексные числа, а также строки фиксированной и произвольной точности. (BCD) арифметику произвольной точности Он также поддерживал двоично-десятичную со строками. Он имел множество удобных функций управления потоками программ , но, будучи разработанным в середине 70-х годов, в нем отсутствовали структуры данных , определяемые пользователем .
На тот момент у DG/L была обширная библиотека времени выполнения , которая использовалась для системного программирования как внутри, так и за пределами Data General.
Первоначально называвшийся Algol/5, продукт был переименован в DG/L незадолго до первого коммерческого выпуска в 1978 году. Официально название не имеет смысла, но, очевидно, оно должно было означать «Общий язык данных». После первого коммерческого выпуска, ориентированного на 16-битные Eclipse и Nova, было выпущено несколько последующих обновлений и основных версий, примерно по одному в год.
Сравнение с Алголом 60 [ править ]
Приложение A к Справочному руководству по языку DG/L, 093-00229-01, редакции Data General от 1982 года, описывает DG/L как основанный на языке программирования ALGOL 60, но дает «типы данных, операции и операторы, которых нет в ALGOL 60». Конкретные различия заключаются в следующем:
Функции Algol 60 не поддерживаются в / DG L
Особенность Алгола 60 | Как описано в отчете Algol 60. [1] абзац | Генеральный директор/примечания |
---|---|---|
Звонок по имени | к. 4.7.3.2 | DG/L позволяет использовать параметры процедуры типа PROCEDURE, что позволяет передавать процедуры по имени другим процедурам. |
Вложенные кавычки в литералах | 2.6.1 и 2.4.1 | |
Нет ограничений на длину идентификаторов | Имена идентификаторов DG/L должны быть уникальными в пределах первых 32 символов. | |
Два оператора отделения | 3.3.4.2 | DG/L использует «/» как для вещественного, так и для целочисленного деления; целое число, разделенное на другое целое число, подразумевает целочисленное деление (например, 1/4 равно 0), если не используется глобальный переключатель /R компилятора |
Обозначение 10 <целое число> | 2.5.1 | DG/L использует E <integer> (или D <integer> для двойной точности) для «научных» обозначений, чтобы показать степени десяти. |
Программа, состоящая только из <составного оператора> | 4.1.1 | |
Символы, отличные от ASCII, ⋀,⋁,¬,⊃,≡,≤,≥,≠ как логические операторы | 3.4.6.1 | Вместо этого DG/L допускает: AND, OR, NOT, IMP, EQV, <= (или =<),>= (или =>) и <> (или ><), а также XOR. |
Включение кода, не являющегося Алголом, в процедуры Алгола. | 4.7.8 | Помимо математической библиотеки FORTRAN 5, документация для внешних процедур предполагает, что будут подключены только другие процедуры DG/L. |
Расширения [ править ]
Некоторые расширения стандарта Algol 60, представленные в DG/L или перенесенные из предыдущей реализации Algol от Data General 1971 года:
Строковые операции [ править ]
- SUBSTR — подстрока
- ИНДЕКС - позиция подстроки
- ДЛИНА - длина строки
- SETCURRENT — устанавливает текущую длину строки, например setcurrent(str,length(str)-1);
- Оператор конкатенации: "!!"
- Строковая арифметика (например, «123,45» + «0,01» )
- Преобразование типов (логическое, целое, вещественное, указатель, бит)
- Восьмеричные числа и некоторые специальные символы, заключенные в скобки, для обозначения символов ASCII.
Ввод и вывод [ править ]
- Полностью форматированный вывод, неформатированный ввод и вывод для всех поддерживаемых типов данных.
- Data General. Полный интерфейс для системных вызовов RDOS , AOS и AOS/VS
- Управление кэш-памятью (с опцией виртуальной памяти).
- Интерфейс к базам данных CLRE и INFOS II
Другие расширения [ править ]
- Условная компиляция участков кода с использованием /**буква-цифра-строка <оператор> */
- комментарии в конце строки с использованием символа % и /* комментария */
- расширенный синтаксис do , for и if (например, WHILE <boolexp1> DO <statement> UNTIL <boolexp2> )
- Типы: BIT, BYTE, 16-битные и 32-битные целые числа, 32-битные и 64-битные действительные числа и арифметика произвольной точности.
- Литералы, например LITERAL C (299792.458)
- Глобальные данные
- Перехват ошибок
- Внешние процедуры и данные
- Объявление кластера... очень похоже на модули Pascal (позволяет кластеризовать процедуры и данные в отдельном скомпилированном исходном коде).
- Указатель -> символ и переменные BASED всех типов
- Оператор исключающего ИЛИ (XOR)
- Многозадачность
Ссылки [ править ]
- ^ Наур, Питер (январь 1963 г.). «Пересмотренный отчет об алгоритмическом языке АЛГОЛ 60» . Коммуникации АКМ . 6 :1–17. дои : 10.1145/366193.366201 .
- Справочное руководство по компилятору DG/L, Data General Corp, 1978 г.
- Справочное руководство по времени выполнения DG/L, Data General Corp, 1978 г.