АЛГОЛ W - ALGOL W

АЛГОЛ W
ПарадигмыМультипарадигма: процедурный, императив, структурированный
СемьяАЛГОЛ
РазработаноНиклаус Вирт, Тони Хоар
Впервые появился1966; 54 года назад (1966)
Печатная дисциплинаСтатический, сильный
ОбъемЛексический
Язык реализацииPL360
ПлатформаIBM System / 360
Операционные системыLinux
Под влиянием
АЛГОЛ 60
Под влиянием
Паскаль, Модула-2

АЛГОЛ W это язык программирования. Он основан на предложении по АЛГОЛ X к Никлаус Вирт и Тони Хоар как преемник АЛГОЛ 60 в Международная федерация обработки информации (ИФИП) Рабочая группа 2.1 ИФИП по алгоритмическим языкам и исчислениям, которые указан, поддерживает и поддерживает языки ALGOL 60 и АЛГОЛ 68.[1] Когда комитет решил, что предложение является недостаточным продвижением по сравнению с АЛГОЛОМ 60, оно было опубликовано как Вклад в развитие АЛГОЛА.[2] После внесения небольших изменений в язык[3] Вирт руководил качественной реализацией IBM System / 360 в Стэндфордский Университет это было широко распространено.[4]

Он представляет собой относительно консервативную модификацию АЛГОЛА 60, добавляя нить, битовая строка, комплексное число и ссылка к записывать типы данных и вызов по результату прохождение параметры, представляя пока заявление, заменяющее выключатель с кейс заявление, и вообще ужесточение языка.

Реализация была написана на PL360, похожий на АЛГОЛ язык ассемблера разработан Виртом. Реализация включает влиятельную отладку и профилирование способности.

Синтаксис и семантика

АЛГОЛ W синтаксис построен на подмножестве EBCDIC кодировка символов набор. В АЛГОЛ 60, зарезервированные слова являются отдельными лексическими элементами, но в АЛГОЛе W они представляют собой только последовательности символов, и их не нужно застегнутый. Зарезервированные слова и идентификаторы разделяются пробелами.[4] Этим синтаксис ALGOL W напоминает синтаксис Паскаль и более поздние языки.

В АЛГОЛ W Описание языка[5] определяет АЛГОЛ W в аффиксная грамматика это напоминает Форма Бэкуса – Наура (БНФ). Этот формальная грамматика был предшественником Грамматика Ван Вейнгаардена.[2][6]

Большая часть семантики АЛГОЛА W определяется грамматически:[5]

  • Идентификаторы различаются по их определению в текущем объем. Например, ⟨Идентификатор процедуры⟩ - идентификатор, который был определен в объявлении процедуры, «Идентификатор метки» это идентификатор, который используется как идти к метка.
  • В типы из переменные и выражения представлены аффиксами. Например ⟨Τ идентификатор функции⟩ синтаксическая сущность для функции, которая возвращает значение типа τ, если идентификатор был объявлен как целочисленная функция в текущей области видимости, то он расширяется до ⟨Целочисленный идентификатор функции⟩.
  • Типовые ошибки - это грамматические ошибки. Например, «Целое выражение» / «целое выражение» и «Реальное выражение» / «реальное выражение» являются действительными, но разными синтаксическими объектами, которые представляют выражения, но Реальное выражение⟩ DIV целое выражение⟩ (т.е. целочисленное деление, выполняемое для значения с плавающей запятой) является недопустимой синтаксической сущностью.

Пример

Это демонстрирует АЛГОЛ W записывать тип объекта.

ЗАПИСЫВАТЬ ЧЕЛОВЕК (    НИТЬ(20) ИМЯ;     ЦЕЛОЕ ВОЗРАСТ;     ЛОГИЧЕСКИЙ МУЖЧИНА;     ССЫЛКА(ЧЕЛОВЕК) ОТЕЦ, МАТЬ, МОЛОДОСТЬ, СТАРШИЕ);ССЫЛКА(ЧЕЛОВЕК) ПРОЦЕДУРА МОЛОДОЙ (ССЫЛКА(ЧЕЛОВЕК) р);    НАЧАТЬ        ССЫЛКА(ЧЕЛОВЕК) п, M;        п := МОЛОДОСТЬ(ОТЕЦ(ОТЕЦ(р)));        ПОКА (п ¬= НОЛЬ) И (¬ МУЖЧИНА(п)) ИЛИ ЖЕ (п = ОТЕЦ(р)) ДЕЛАТЬ            п := СТАРШИЕ(п);        M := МОЛОДОСТЬ(МАТЬ(МАТЬ(р)));        ПОКА (M ¬= НОЛЬ) И (¬ МУЖЧИНА(M)) ДЕЛАТЬ            M := СТАРШИЕ(M);        ЕСЛИ п = НОЛЬ ТОГДА             M         ЕЩЕ ЕСЛИ M = НОЛЬ ТОГДА             п         ЕЩЕ             ЕСЛИ ВОЗРАСТ(п) < ВОЗРАСТ(M) ТОГДА п ЕЩЕ M    КОНЕЦ

Выполнение

Большая часть ALGOL W, насчитывающая примерно 2700 карт, была написана на PL360 Вирта. Интерфейсный модуль для IBM Операционная система (ОС) в использовании (ОС, ДОС, МТС, ОРВИЛ ) был написан на ассемблере IBM и насчитывал менее 250 карт. [1]

В среде ОС на 360/67 с буферными файлами ввода и вывода компилятор перекомпилирует себя примерно за 25 секунд. Компилятор составляет примерно 2700 изображений карточек. Таким образом, когда время планировщика ОС вычитается из времени выполнения, указанного выше, видно, что компилятор работает со скоростью, превышающей 100 карт в секунду (для плотного кода).

В среде DOS на 360/30 компилятор ограничен только скоростью устройства чтения карт. Компилятор успешно перекомпилировал себя на 64K 360/30 со скоростью 1200 карт в минуту (скорость кардридера). Это впечатляет по сравнению со временем, которое требуется ассемблеру DOS для сборки интерфейсного модуля, состоящего из менее чем 250 карт. Когда макрокоманды раскрываются, интерфейс DOS имеет 972 изображения карточек, а сборщику требуется 15 минут для сборки.

Рекомендации

  1. ^ Swierstra, Doaitse; Гиббонс, Джереми; Меертенс, Ламберт (2 марта 2011 г.). "ScopeEtc: IFIP21: Foswiki". Фосвики. Получено 7 октября 2020.
  2. ^ а б Вирт, Никлаус; Хоар, К.А.Р. (Июнь 1966 г.). «Вклад в развитие АЛГОЛА». Коммуникации ACM. 9: 413–432. Получено 7 октября 2020 - через Ассоциация вычислительной техники.
  3. ^ Вирт, Никлаус (сентябрь 1966 г.). "Дополнительные примечания к" Вклад в развитие АЛГОЛА"". Бюллетень Алгола. 24: 13–17. Получено 7 октября 2020 - через Ассоциация вычислительной техники.
  4. ^ а б Бауэр, Генри Р .; Беккер, Шелдон I .; Graham, Susan L .; Форсайт, Джордж Э .; Саттертуэйт, Эдвин Х. (март 1968 г.). Номер технического отчета: CS-TR-68-89. Кафедра компьютерных наук (Отчет). Стэндфордский Университет. (Различные документы по реализации Стэнфордского университета в 1972 г. ALGOL W; этот отчет включает АЛГОЛ W Описание языка.
  5. ^ а б Бауэр, Генри Р .; Беккер, Шелдон I .; Graham, Susan L .; Саттертуэйт, Эдвин Х .; Сайты, Ричард Л. (июнь 1972 г.). АЛГОЛ W Описание языка (PDF) (Отчет). Архивировано из оригинал (PDF) 19 ноября 2012 г.
  6. ^ ван Вейнгаарден, Адриан (22 октября 1965 г.). Ортогональный дизайн и описание формального языка: MR76 (PDF) (Отчет). Амстердам, Нидерланды: Математический центр. Получено 7 октября 2020 - через Ernst-Abbe-Hochschule Йена, Университет прикладных наук, Германия.

внешняя ссылка