Введение в архитектуру компьютеров

Специализированные системы программирования


Клу (Clu) – для разработки больших программных комплексов с использованием абстрактных типов данных (АТД). Требование практического программирования в повышении модульности, надежности и наглядности программ позволило в начале 70-х годов Н. Вирту, О. Далу, Ч. Хоару сформулировать принципы АТД. Суть концепции АТД состоит в том, что создание и обработка объектов некоторого (абстрактного) типа возможны лишь через определенный набор операций, связанных с этим типом. Таким образом, программист абстрагируется от конкретного представления объектов данного типа и от реализации операций. Они недоступны (инкапсулированы в определении типа). Аксиоматика, определяющая свойства типа и любой его реализации как элемент концепции АТД, часто описывается неформально, в виде комментариев.

Практическое применение концепции АТД сдерживалось до недавнего времени, видимо, в основном из-за:

· отсутствия реализаций языков с АТД (элементы АТД встречались в языках АДА; МОДУЛА-2 и др.);

· семантического разрыва между языками программирования и архитектурой ЭВМ, что сдерживает реализацию (или делает ее неэффективной) современных средств ЯП, в частности АТД;

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

Одним из наиболее емких и сравнительно простых в реализации ЯП с концепцией АТД является язык Clu, созданный коллективом Массачусетского технологического института (США). Это язык модульного программирования. Программа на нем состоит из группы модулей: процедур (абстракций исполнения), кластеров (абстракций данных) и итераторов (абстракций управления). Кластерные модули, к примеру, определяют класс родственных абстрактных типов данных как список с произвольным типом элементов t (параметром кластера). Над АТД данного класса определяются некоторые операции. Массивы в языке Клу могут динамически расширяться и сокращаться с обоих концов, в связи с чем границы массива в обозначении типов не указываются.



Содержание раздела