автореферат диссертации по информатике, вычислительной технике и управлению, 05.13.11, диссертация на тему:Расширяемый алгоритмический язык АБВ и его реализация

кандидата физико-математических наук
Селюн, М.И.
город
Москва
год
1984
специальность ВАК РФ
05.13.11
цена
450 рублей
Диссертация по информатике, вычислительной технике и управлению на тему «Расширяемый алгоритмический язык АБВ и его реализация»

Оглавление автор диссертации — кандидата физико-математических наук Селюн, М.И.

ВВЕДЕНИЕ

ГЛАВА. I. ЯЗЫК АБВ

1.1. Основные понятия .* •

1.1.1. Действия

1.1.2. Вицы

1.1.3. Выполнение действий. Завершение. Прекращение. Прерывание

1.1.4. Память

1.2. База

1.2Л. Последовательное действие. Прерывание

Возобновление

1.2.2. Параллельное действие. Прерывание, Возобновление

1.2.3. Альтернативное действие. Выполнение. Прерывание

1.2.4. Имена. Синонимы

1.2.5. Операторы базы

1.2.6. Операции базы

1.3. Вычислитель

1.3.1. Параметры

1.3.2. Виды вычислителя

1.3.3. Действия вычислителя.

1.3.3.1. Операции вычислителя

1.3.3.2. Операторы вычислителя.

1.3.3.3. Составное действие вычислителя

1.4. Анализатор

1.4.1. Строка. Длина строки.

1.4.2. Форматы.

1.4.3.Действия анализатора ••••.•

1.4.3.1. Генератор строк

1.4.3.2. Операция значение-формат.

1.4.3.3. Операторы анализатора

ГЛАВА. 2. РЕАЛИЗАЦИЯ ЯЗЫКА АБВ.

2.1. Организация памяти

2.2. Представление данных

2.3. Таблица идентификаторов.

2.4. Реализация базы

2.4.1. Последовательное действие.

2.4.2. Операторы ВСИН, ЛИКВ.

2.4.3. Завершение последовательного действия. Составное значение

2.4.4. Прерывание действий. Выполнение реакций

2.4.5. Параллельное действие

2.4.6. Операция ПОД

2.4.7. Оператор ОСВПАМ. Операция ПАМ

2.4.8. Стандартные црерывания

2.5. Реализация анализатора.

2.5.1. Операция СЦЕПЛ.

2.5.2. Операция КАВЫЧ

2.5.3. Операция СНКАВ

2.5.4. Оператор ВХОВД

2.5.5. Оператор ВЬЩ

2.6. Сборка мусора

Введение 1984 год, диссертация по информатике, вычислительной технике и управлению, Селюн, М.И.

Процесс расширения старых и возникновения новых областей применения вычислительной техники приводит к необходимости создания новых специализированных языков программирования, предназначенных для описания задач из этих областей»

Поэтому проблема поиска новых, цростых и эффективных методов реализации специализированных языков программирования не теряет своей актуальности, несмотря на существование универсальных языков программирования 8, 32, 37, 39J . Одним из направлений такого поиска является разработка расширяемых языков программирования* В данной диссертационной работе предлагается универсальный расширяемый язык АБВ [ 28 J в качестве основы для реализации специализированных систем црограмиирования.

Язык разрабатывался в ВЦ АН СССР под руководством С*С*Лаврова при непосредственном участии автора и был реализован им на ЭВМ БЭСМ-б[ 17, 20, 35 J •

Основной смысл расширяемости заключается в том, чтобы дать пользователю возможность в рамках одной универсальной системы программирования определять новые языковые средства, или даже новый алгоритмический язык, который более соответствует конкретной области применения и даёт возможность цриспосабли-ваться к изменяющимся требованиям 23, 24, 25, 40, 41, 43, 44jf.

Такие свойства алгоритмических языков стали объектом активных исследований начиная с 60-х годов. Те или иные средства расширений, такие как процедуры, описания новых структур данных и новых операций, присутствуют и в некоторых языках црограмиирования, которые не рассматриваются как явно расширявмые [i, 8, 32, 37, 39J .

Только в процессе разработки собственно расширяемых систем сформировался ряд вопросов, относящихся к этой проблеме:

- какие языковые средства должны быть расширяемыми ;

- каковы должны быть механизмы расширений ;

- каким должен быть "начальный" шш базовый язык»

При всём разнообразии подходов к разработке расширяемых систем программирования, как правило, ядром такой системы является некоторый базовый язык в совокупности со средствами расширений. Предполагается, что исходное ядро может быть расширено в нужном направлении самим пользователем или системным программистом посредством введения в язык новых синтаксических конструкций и семантических понятий, обусловленных требованиями выбранного направления расширения [ 45, 59, 63 ] . Дальнейшие расширения могут базироваться как на том же ядре, так и на более ранних расширениях £ 19, 29 3*

Базовый язык должен содержать только те понятия и средства, которые позволяют ему служить основой для удобного и эффективного расширения изобразительной мощи языка с целью применения его к задачам той или иной специальной области исследований» В существующих расшщ>яемых системах базовые языки отличаются большим разнообразием свойств и возможностей. В качестве базовых выбираются языки от машинных и автокодов до языков высокого уровня или целого набора базовых языков различной мощности £ 10, 16 , 30 , 31, 36 , 43 , 57 , 58J .

Целый ряд исследований посвящён попыткам добавить некоторые свойства расширяемости к уже существующим языкам (часто таким языком является Алгол-60) [48, 49, 50 J .

Средства расширения должны обеспечивать следующие возможности:

- расширение или модификация синтаксиса ;

- оцределение новых структур и типов данных, новых операций ;

- описание новых управляющих структур.

Среди способов оцределения механизмов расширения южно отметить несколько наиболее важных. Одним из таких способов, представленным большим числом разработок, является использование средств макротехники как в языках ассемблера, так и в языках высокого уровня "[а, 46, 51, 52, 62J•

Различаются текстовые и синтаксические макросредства. Текстовые макросы фактически только сокращают тексты программ и не дают никаких принципиально новых возможностей расширения.

В отличие от текстовых^синтаксические макросредства позволяют описывать синтаксис макровызова на основе базового языка, включая и синтаксис параметров. Таким образом, они могут быть использованы для описания новых типов операторов и новых структур данных.

Попытки нарастить Алгол-60 и некоторые другие языки новыми понятиями привели, видимо, к пониманию того, что ни один из этих языков не может явиться подходящей основой для построения расширяемой системы^ ввиду отсутствия у этих языков некоторых специфических свойств. Это послужило толчком к работам по созданию новых языков программирования с принципиально новыми возможностями расширяемости.

Качественно новым этапом в разработке расширяемых систем явилось создание собственно расширяемых языков, в которых воцросы описания структур данных и операций над ними, и само понятие типа данных стали объектом особо пристального внимания.

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

В 1967 году Т.А.Стэндшем [ 66 ] была предложена схема определения типов данных, ставшая классической. В базовом языке фиксируется набор встроенных базисных типов, а также фиксируется набор так называемых конструкторов видов. Каждый конструктор задаёт один фиксированный способ формирования некоторой новой структуры данных на основе базисных типов или типов, уже введённых ранее посредством этих же самых конструкторов. Набор конструкторов более или менее стандартен. Это указатели, записи,массивы, цроцедуры, последовательности и пр.

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

Природа конструкторов и их число в языке всегда строго фиксированы, что ограничивает гибкость таких способов определения новых типов данных и новых операций.

Эти идеи были реализованы в ряде языков^ предназначенных быть основой расширяемой системы £ 42, 60, 61, 64, 65 J, а также в ряде известных универсальных языков £ 8, 12, 39 J .

Принципиально новые способы описания типов данных основаны на идее абстракции данных.

Она состоит в том, что тип отождествляется с множеством определённых для него операций. Цель абстракции данных заключается в том, чтобы для типов, вводимых программистом, так же как для базисных типов, обеспечить абстракцию от представления в памяти машины.

Конструкция, описывающая смысл некоторой абстракции типа данных, как правило, содержит абстрактное описание операций, определяющих поведение объекта данного типа, и самого объекта. Объект такого типа доступен программисту только через операции - представление объекта в памяти и реализация операций остаются скрытыми. Идеи абстракции данных в той или иной степени воплощены в некоторых языках и системах [з, 9, 13, 42, 53, 54, 55J с помощью таких конструкций как классы, кластеры, формы, модуль-пакеты и пр.

Следует отметить, что в понятии абстрактных типов данных ограничены или полностью отсутствуют возможности описания динамического поведения? столь характерного для реальных объектов.

Язык АБВ, описанный в первой главе, предлагает новый подход к рассматриваемой проблеме.

Язык АБВ не предназначен непосредственно для описания прикладных алгоритмов, основная цель его разработки - дать основу для реализации новых средств описания алгоритмов. Он является ядром системы программирования, предназначенной для построения • на её основе специализированных систем программирования, каждая из которых рассматривается как некоторое расширение этого ядра. Несмотря на различие областей цримене-ния таких систем и их входных языков, для каждой из них решаются такие общие задачи, как анализ текста программ и исходных данных, отображение в памяти машины структуры этих программ и данных и их семантики, генерирование машинных программ и их взаимодействие, диагностика ошибок, ввод/вывод. Если эти задачи уже реализованы в некоторой программе, то, не решая их заново, можно расширить (дополнить) такую программу до нужной специализированной системы программирования.

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

Синтаксис языка должен быть как можно более простым для обеспечения простоты синтаксического анализа программ, написанных на языке АБВ.

Расширения ядра языка АБВ могут быть чисто синтаксическими, либо включать новые конструкции, требующие определения их семантики. Никаких ограничений на синтаксис расширений не накладывается.

В язык-ядро должны быть включены: а) средства для построения семантических моделей предметных областей ; б) средства для обработки и анализа текстов расширений ; в) средства, предоставляющие возможность использовать основные особенности (операции) современных ЭВМ для реализации новой семантики.

Поэтому в языке АБВ явно выделены три составные части: база, анализатор и вычислитель. В зависимости от функций, дам выполнения которых предназначена каждая из этих частей, они отличаются возможностями и средствами. База является наиболее общей частью языка. Её основное назначение - предоставлять средства для построения семантических моделей конкретных областей исследований. В базу включено минимальное число основных понятий системного программирования таких как значение, вид, имя, объект, действие, црерывание. База обеспечивает также взаимодействие всех трёх частей языка.

Имя объекта объединяет все способы его именования. Аппарат имён позволяет связывать с каждым идентификатором кроме активного имени некоторую совокупность пассивных имён.

Виц объекта, имеющего структурное значение, в языке АБВ понимается как ссылка на действие, порождающее этот объект. Действия, а также имена, считаются значениями соответствующих видов и, следовательно, как всякие значения могут быть связаны с некоторыми именами. Таким образом, чтобы описать в АБВ-програм-ме новый ввд или новую операцию, не требуется никакого специального аппарата - используется общий механизм введения имени и присваивания ему значения. Вводимые вицы порожцают значения сколь угодно сложной иерархической структуры, в которой могут быть динамически изменены количество, порядок, ввд любых её подструктур на любом уровне.

Действия базы делятся на простые и составные. Операторы и операции базы являются простыми действиями. Среди составных действий базы различаются последовательные, параллельные и альтернативные действия. Программа в языке АБВ является последовательным действием.

Важнейшими понятиями базы являются также прерывание и реакция на прерывание. Выполнение действия может быть прервано и запущено действие-реакция, предварительно описанное в программе и связанное с соответствующим именем. Выполнение реакции приводит к одной из трёх возможных ситуаций: а) реакция завершается, после чего происходит возврат к прерванному действию,выполнение которого возобновляется с того "места", где возникло црерывание ; б) после завершения реакции выполнение црерванного действия не возобновляется, а запускается то действие, которое следует за действием, создавшим данную реакцию ; в) реакция в свою очередь прерывается, и запускается уже другая реакция на црерывание с аналогичными возможными последствиями.

Описанные механизмы прерываний и аппарат имён базы АБВ обладают достаточной общностью и дают мощные средства для описания важнейших конструкций языков программирования, нацример, таких как отсутствующие в базе АБВ операторы перехода, операторы цикла, процедуры, соцрограммы, записи и другие структуры данных и управления[18, 19, 22]. Анализатор предоставляет программисту средства обработки строк. Эти средства позволяют, в частности, анализировать и формировать тексты программ, цредставленных в виде строк. Таким образом, в процессе выполнения АБВ-программ могут быть сформированы тексты, представляющие описания некоторых действий на языке АБВ или на одном из уже имеющихся расширений. Затем эти тексты могут быть динамически оттранслированы и полученные программы выполнены. Следовательно, выполнение АБВ-программы в общем случае состоит в чередовании выполнения, генерирования и трансляции кусков программы.

Третья часть ядра АБВ-вычислитель. Вычислитель предназначен для перевода алгоритмов, написанных на АБВ, на язык современных вычислительных машин, а такжё их эффективного выполнения.

В вычислителе отражены все основные свойства этих машин, введено понятие памяти нескольких уровней, включены операции над числовыми данными, шкалами, логическими значениями. Никакие неявные приведения в операциях вычислителя не допускаются. Несколько операций и операторов вычислителя могут быть объединены в составное действие вычислителя, в котором можно использовать обычные операции условного и безусловного перехода. Чтобы полнее учитывать возможности различных вычислительных машин, некоторые характеристики вычислителя и анализатора считаются параметрами. Для каждого параметра в языке зафиксирован свой идентификатор, однако значения параметров в языке не задаются. Параметры должны получать значения при каждой конкретной реализации языка АБВ, а возможно, при каждой трансляции программы с языка АБВ на машинный язык. В данной реализации значения параметров могут использоваться программой, но не могут быть ею изменены. Все эти возможности языка АБВ цредусматривают его использование для определения и реализации новых средств описания алгоритмов. Специализированный язык, рассматриваемый как расширение языка АБВ, должен быть описан в терминах ядра АБВ или предыдущих расширений. Исходный текст программы, написанный на языке некоторого расширения, представляется в виде строки. Затем средствами анализатора проводится лексический и синтаксический анализ этой строки, и выявляются новые синтаксические конструкции. Найденные конструкции, если это возможно, заменяются конструкциями ядра или одного из более ранних расширений. В противном случае определяется семантика новых конструкций также в терминах ядра или предыдущих расширений.

В результате в качестве выходной программы формируется текст на АБВ, представляющий собой описание операционной семантики исходной программы. Таким образом, особенностью языка АБВ является то, что он используется одновременно и как инструментальный и как выходной язык.

Следует отметить, что на разработку языка АБВ оказали влияние идеи,содержащиеся в работах[i, 13, 15, 26, 32, 47, 49, 55, 56^ .

Во второй главе описывается реализация языка АБВ для машины БЭСМ-6. Компилятор одноцроходный, и в силу особенностей языка объектный код содержит много обращений к интерпретирующим программам.

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

При выполнении объектного кода функционирует ряд магазинов. Для каждого последовательного действия создаётся магазин, и информация обо всех этих магазинах фиксируется в специальном магазине. Для каждого идентификатора также создаётся свой магазин. Кроме того, используются ещё два магазина: магазин возвратов и магазин компилятора и административной системы. Все магазины, кроме последнего, реализованы в виде списков.

Во второй главе изложены также воцросы реализации прерываний и возобновлений, организации выполнения параллельных действий и диагностики ошибок.

Система АБВ-БЭСМ-6 может быть использована как в пакетном режиме, так и в терминальном через систему ПУЛЬТ [[б, 6, 7 J * В приложении I приводится синтаксис языка АБВ, В приложении П даны цримеры на языке АБВ»

Автор выражает глубокую признательность своему научному руководителю С.С.Лаврову за большое внимание и помощь, оказанные при выполнении работы.

Заключение диссертация на тему "Расширяемый алгоритмический язык АБВ и его реализация"

ЗАКЛЮЧЕНИЕ

В диссертационной работе получены следующие основные результаты.

1. Исследованы архитектуры существующих расширяемых языков и выбраны основные цринципы построения языка АБВ и требования к нему.

2. Рассмотрены возможные варианты конструкций языка АБВ и выбраны те из них, которые наилучшим образом отвечают поставленным требованиям.

3. Проанализированы способы реализации АБВ на ЭВМ БЭСМ-6, выбраны способы в наибольшей степени удовлетворяющие требованиям.

4. Написан транслятор с языка АБВ для ЭВМ БЭСМ-6; а) разработана и реализована схема аппарата имен; б) разработана и реализована схема поиска областей определения реакций на прерывания; в) разработана и реализована схема запуска и возобновления реакций-атрибутов; г) разработана и реализована схема очередей прерываний и возобновлений цри выполнении параллельных действий.

Исследования по пунктам I и 2 выполнены совместно с С.С.Лавровым и Е.Н.Капустиной. С.С.Лавров учавствовал в выборе принципов построения языка (до 1971 г.) и в обсуждении его вариантов.

По теме диссертации опубликованы следующие работы:

I. Лавров С.С., Капустина Е.Н., Селюн М.И. Расширяемый алгоритмический язык АБВ. - В сб.: Обработка символьной информации, вып. 3. М.: ВЦ АН СССР, 1976, с. 5 - 53.

2. Капустина Е.Н., Селюн М.И. Расширяемый язык АБВ. Материалы УТ конференции по эксплуатации вычислительной машины БЭСМ-6. Тбилиси, 1976, с. 171- 173.

3. Капустина Е.Н., Лавров С.С., Селюн М.И. Схема расширений и основные принципы реализации аппарата процедур языка ПАСКАЛЬ в языке АБВ. - В сб.: Обработка символьной информации, вып. 4. М.: ВЦ АН СССР, 1978, с. 5 - 10.

4. Селюн М.И. О реализации последовательного действия в языке АБВ. - В сб.: Обработка символьной информации. М.: ВЦ АН СССР, 1984, С. 87 - 94.

5. Капустина Е.Н., Селюн М.И. База языка АБВ и ее реализация. - В сб.: Прикладная информатика. 1985, № 2 (в печати).

Библиография Селюн, М.И., диссертация по теме Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей

1. Алгоритмический язык АЛГ0Л-60. Пересмотренное сообщение, М,: Мир, 1965,

2. Автокод БЕМШ (Описание языка). Математическое обеспечение БЭСМ-6. М.: ИПМ АН СССР, 1970,

3. Бабаев И.О., Лавров С.С,, Новиков Ф.А,. Петрушина Т.И, Специализированное обеспечение прикладных исследований,- В сб,: Методы математической логики в цроблемах искусственного интеллекта и математическое црограммирова-ние. Вильнюс, 1980, с, 7-25.

4. Браун П, Макропроцессоры и мобильность программного обеспечения, М.: Мир, 1977,

5. Брябрин В.М., Еселев Г.И., Пирин С.И., Сафонов В.И., Селюн М.И, и др. Система ПУЛЬТ 78. М.: ВЦ АН СССР, 1978.

6. Брябрин В.М. и др. Архив и редактор системы ПУЛЬТ- БЭСМ-6. М,: ВЦ АН СССР, 1974.

7. Брябрин В.М. и др. Трансляция и отладка программ в режиме непосредственного доступа. М.: ВЦ АН СССР, 1974.

8. Вирт Н. Язык программирования Паскаль (пересмотренное сообщение). В сб." Алгоритмы и организация решения экономических задач, вып. 9. М.: Статистика, 1977,с.52-86.

9. Вульф В., Лондон Р., Шоу М. Введение в построение и верификацию программ на языке Альфард. В сб.: Данные в языках программирования. М.: Мщ), 1982, с. 123 - 153.

10. Глушков В.М., Гриценко Н.М., Капитонова Ю.В.,

11. Летичевский А.А. Автоматизация программирования в системе ПРОЕКТ. Кибернетика, I, 1970, & 4, с.1 - 8.

12. Грис Д. Конструирование компиляторов для цифровых вычислительных машин. М.: Мир, 1975.

13. Дал У., Дейкстра Э., Хоор К. Структурное программирование. М.: Мир, 1975.

14. Дал У., Мюрхауг Б., Нюгорд К. СИМУЛА 67. Универсальный язык программирования. М.: Мир, 1969.

15. Инструкция. по црограммированию на БЭСМ-6. М.: ИТМ и ВТ АН СССР, 1967.

16. Камынин С.С., Любимский Э.З. Алгоритмический машинно -ориентированный язык АЛ МО. - Сб.: Алгоритмы и алгоритмические языки, вып. I. М.: ВЦ АН СССР, 1967.

17. Кахро М.И., Мяннисалу М.А., Саан Ю.П., Тыугу Э.Х. Система программирования ПРИЗ. Программирование, 1976, № I, с. 38 - 46.

18. Капустина Е.Н., Селюн М.И. База языка АБВ и ее реализация. В сб.: Прикладная информатика. 1985 Д 2(в печати),

19. Капустина Е.Н. Реализация типов записей языка Паскаль на базе языка АБВ. В сб.: Обработка символьной информации. М.: ВЦ АН СССР, 1984, с. 80 - 86.

20. Капустина Е.Н., Лавров С.С., Селюн М.И. Схема расширений и основные принципы реализации аппарата процедур языка ПАСКАЛЬ в языке АБВ. В сб.: Обработка символьной информации, вып. 4. М.: ВЦ АН СССР, 1978, с. 5 - 10.

21. Капустина Е.Н., Селюн М.И. Расширяемый язык АБВ. Материалы У1 конференции по эксплуатации вычислительной машины БЭСМ-6. Тбилиси, 1976, с. 171 173.

22. Кнут Д. Искусство программирования для ЭВМ. т. I. М.: Мир, 1976.

23. Кубенский А.А., Сафонов В.О. Возможности языка АБВи его реализация. Программирование, 1982, 113, с.64-72.

24. Лавров С.С. Языковая основа применения ЭВМ. IBM и Ш, т II, 1971, J£ 2, с. 498 - 504.

25. Лавров С.С. Универсальный расширяемый язык как базадля создания специализированных систем программирования. Материалы международной дискуссии "Программирование в 70-х годах", ВКП 2. Новосибирск, ВЦ СО АН СССР, 1970, с. 88 - 89.

26. Лавров С.С. СНОБОЛ А язык для обработки строк. М.: ВЦ АН СССР, 1968.

27. Лавров С.С. Расширяемость языков. Подходы и практика. В сб.: Прикладная информатика, вып. 2. М.: Финансы и статистика, 1984, с. 17 - 22.

28. Лавров С.С., Гончарова Л.И. Автоматическая обработка данных. Хранение в памяти ЭВМ. М.: Наука, 1971.

29. Лавров С.С., Капустина Е.Н., Селюн М.И. Расширяемый алгоритмический язык АБВ. В еб.: Обработка.символьной информации, вып. 3. М.: ВЦ АН СССР, 1976, с. 5 - 53.

30. Летичевский А.А. О последовательном.расширении алгоритмических языков. Кибернетика, 1967, $ 6, с. 6 -7.

31. Михелев В.М., Вершубский В.Ю. АСТРА язык для записи алгоритмов системного программирования и трансляции (Прецринт ИПМ АН СССР). М.: ИПМ АН СССР, 1974.

32. Мищенко Н.М. О свойствах расширяющейся системы программирования в системе ПРОЕКТ. Кибернетика, 1975, ^ 2, с. 91 - 95.- но

33. Пересмотренное сообщение об АЛГОЛе 68. М.: Мир, 1979.

34. Пилыциков В.Н. Язык планер. М.: Наука, 1983.

35. Пратт Т. Языки программирования. Разработка и реализация. М.: Мир, 1979.

36. Селюн М.И. О реализации последовательного действия в языке АБВ. В сб.: Обработка символьной информации. М.: ВЦ АН СССР, с. 87 - 94.

37. Тодорой Д.Н. Расширяемые средства машинной графики. М.: Радио и связь, 1983.

38. Универсальный язык программирования PL/L М.: Мир, 1968.

39. Холл П. Вычислительные структуры. Введение в нечисленное программирование. М.: Мир, 1978.

40. Язык программирования Ада. М.: Финансы и статистика, 1981.4© . Brooker R. А., Morris D. A General Translation Program for Phrase Structure Languages. JACM, 1962, V. 9, n. 1, p. 1-10.

41. Brooker R.A. The Compiler Compiler. ARAP, 1963, v. 3.

42. Brosgol В.Ы. An Implementation of-ECL Data Types. -ACM SIGPLAN Notices, 1971, v. 6, n. 12.43* Cheatham Т.Е. The Introduction of Definitional Pacilites into Higher Level Programming Languages. Proc. APIPS,

43. FJCC, 1965, v.29, p. 623 637. 44» Cheatham Т.Е. Motivation for Extensible Languages. - ACM SIGPLAN Notices, 1969, v. 4, n, 8, p. 45 - 48.45» Cheatham Т.Е. The Recent Evolution of Programming Languages. Proc. IFIP Congress, 1971, p. 1 118.

44. Ershow A.P., Rar A.P. SYGMA A symbolic generator and macro-assembier. Proc. IFIP Working Conferense on Symbol Manipulation Languages, 1966.

45. Farber D.J. et al. SNOBOL, a string manipulation language.- JACM, 1964, v. 11, n. 1.

46. Galler B.A. , Perlis A.J. A Proposal for Definition in ALGOL. СACM, 1967, v. 10, n. 4.49* Garwick J.V. GPL, a Fruly General Purpose Language. -СACM, 1968, v. 11, n. 9, p. 634 638.

47. Irons E.T. Experience with an Extensible Language. -САСЫ, 1970, v. 13, п. 1, p. 31 40.

48. Leavenworth B.M. Syntax Macros and Extended Translation.- СACM, 1966, v. 9, n. 11, p. 790 795.

49. Mc. Carthy J. et al. LISP 1.5 programmer's manual. -IvI.I.T. Press, 1965.

50. Steel T.B. tJHCOL; the myth and the fact. ARAP, 1961 , n. 2, p. 325 - 344.

51. Standish. T.A. PPL An Extensible Language that Failed.- ACM SIGPLAU Notices, 1971, v. 6, n. 12.

52. Standish T.A. Some Feature of PPL, a Polymorphic Programming Language. ACM SIGPLAN Notices, 1969, v. 4, n. 8.

53. Strachey C. A General Purpose Macrogenerator. Computer Journal, 1965, v. 8, p. 225 - 241.63» Wasserman A.I. Issues in Programming Language Design

54. An Overview. ACM SIGPLAU Notices, 1975, v.10, n.7, p.10-12.

55. Wegbreit B. An Overview of the ECL Programming System. -ACM SIGPLAU Notices, 1971, v. 6, n. 12.

56. Wegbreit B. The Treatment of Date Types in EL1. CACM, 1974, v. 17, n. 5, p. 251-264 .

57. Jorrand P. Data Types and Extensible Languages. Proc. Int. Symp. Extensible Languages (September, 6-8, 1971), Grenoble, Prance, p. 75 - 83»- из