- DBMS -
Home page NIKA_ROOT INDEX Списки Y СУБД Clipper 5.0 =>
Clipper 5.0 ОписаниеР-Т
    Эта новая версия СУБД Clipper [13,14,15,62,76] компили-
    рующего типа поставляется фирмой Nantucket Corp. с осени
    1990 г. и может эксплуатироваться на ПЭВМ IBM PC/XT и AT,
    PS/2, IBM 3270. Ее разработка была обусловлена необходи-
    мостью преодоления некоторых критичных ограничений, присущих
    версии Clipper'87, а также стремлением к дальнейшему разви-
    тию системного инструментария, включению в него ряда новых
    возможностей.
         В новой версии системы появился препроцессор языка
    программирования, с функциональной точки зрения полностью
    аналогичный препроцессорам языка "C". Вообще нужно заметить,
    что нововведения в версии Clipper 5.0 в значительной мере
    приблизили стиль языка и технологии программирования системы
    к системам программирования, основанным на языке "C", на ко-
    тором реализован и сам Clipper.
         Исполнение препроцессора "прозрачно" для пользователя.
    Он вызывается автоматически при обращении к компилятору и
    прежде, чем компилятор начинает обработку исходного текста
    программы, препроцессор включает в него предписанные заголо-
    вочные файлы, обрабатывает определения констант и псевдо-
    функций, предложения условной компиляции.
         Разработан новый компилятор, обеспечивающий исключение
    неиспользуемых фрагментов программы, улучшенную оптимизацию
    кода. Предусматриваются возможности использования переменных
    среды операционной системы для управления компиляцией, а
    также большой набор параметров управления режимами работы
    компилятора.
         Одним из наиболее важных новшеств рассматриваемой вер-
    сии системы является включение в нее нового редактора связей
    — RTLink [35], позволяющего преодолеть главную трудность
    предыдущей версии — большой размер генерируемых системой
    загрузочных программных модулей. Существовавшая ранее воз-
    можность конструирования загрузочных модулей статической
    оверлейной структуры также не позволяла в полной мере решить
    эту задачу, так как размер корневого сегмента модуля с овер-
    лейной структурой все равно не мог быть меньше 110 Кбайт.
         Новый динамический редактор связей — загрузчик основан
    на механизмах виртуальной памяти. Благодаря этому он позво-
    ляет обходиться без использования статической оверлейной
    структуры при создании больших программных модулей. Появля-
    ется возможность компоновать модули динамической структуры и
    тем самым существенно снижать требования к ресурсу памяти на
    стадии исполнения за счет некоторого увеличения времени ис-
    полнения.
         Разработана также новая версия системного отладчика
    программ. Отладка программ осуществляется в терминах исход-
    ного текста. В прежней версии системы для использования от-
    ладчика нужно было приредактировать его к отлаживаемой прог-
    рамме. В Clipper 5.0 это делать не обязательно. Отлаживаемая
    программа может просто запускаться "из-под" отладчика.
         Система поставляется с новым компонентом — редактором
    для работы с исходными текстами программ. Реализованный
    средствами самой системы, он выполняет, однако, весьма огра-
    ниченные функции и, скорее, демонстрирует возможности языка
    программирования системы, чем служит полезным инструментом
    для пользователя.
         Значительные изменения осуществлены в самом языке прог-
    раммирования системы. В ее новой версии концепция открытой
    архитектуры получила дальнейшее развитие. Если ранее пользо-
    ватели (программисты — разработчики прикладных систем) могли
    пополнять язык программирования новыми функциями, то теперь
    они могут расширять язык новыми командами или изменять суще-
    ствующие его команды. Благодаря этому можно формировать диа-
    лекты языка, удобные для программирования специфических
    классов задач.
         Для внесения в язык таких изменений модифицированные
    определения имеющихся команд и/или описания новых команд на
    специальном метаязыке записываются в стандартный заголовоч-
    ный файл, где содержатся описания всех существующих в языке
    команд, или помещаются в некоторый новый заголовочный файл.
    Имя этого файла должно указываться в числе параметров компи-
    лятора при компиляции программ, использующих эти новые ко-
    манды.
         Введены новые классы переменных — локальные и статичес-
    кие. Областью их действия является процедура или программный
    файл, где они были объявлены. Продолжительность жизни ло-
    кальных переменных ограничивается сроком жизни соответствую-
    щего ей объекта. Статические переменные сохраняются в тече-
    ние всего времени исполнения программы.
         Время доступа к локальным и статическим переменным зна-
    чительно сокращается по сравнению с переменными других клас-
    сов в связи с тем, что разрешение ссылок на них производится
    на стадии компиляции.
         Статус локальных переменных можно придать формальным
    параметрам функций и процедур, если в определениях этих объ-
    ектов указать список формальных параметров, заключенный в
    скобки, после имени функции или процедуры.
         Аналогичным образом статус "статическая" может быть
    придан функции, определяемой пользователем, или процедуре. В
    этом случае они могут вызываться только теми процедурами или
    функциями, которые определены в том же самом программном
    файле.
         В языке новой версии допускается использование вложен-
    ных и многомерных массивов. Они могут иметь динамически из-
    меняющиеся размеры. С точки зрения синтаксиса идентификация
    элементов массивов полностью совпадает с используемой в язы-
    ке "C".
         В некоторой мере упорядочена в языке работа с неопреде-
    ленными значениями переменных. С этой целью введен новый тип
    данных — NIL. Домен значений переменных данного типа включа-
    ет единственное значение "NIL". Введение этого типа позволя-
    ет в некоторых случаях избежать возникновения ошибочной си-
    туации на стадии исполнения при попытках оперировать неини-
    циализированными переменными.
         Тип NIL автоматически приписывается опущенным парамет-
    рам функций и процедур, а также элементам массивов и боль-
    шинству видов переменных при их объявлении. Переменные этого
    типа могут быть аргументами операций сравнения, присваивания
    значений другим переменным, но не полям записей файлов базы
    данных, фактическими параметрами некоторых функций.
         Введение типа NIL, однако, оставляет по-прежнему откры-
    той проблему поддержки и распознавания неопределенных значе-
    ний полей записей файлов базы данных.
         Еще один новый тип данных — кодовые блоки [26]. Кодовый
    блок специфицируется как список выражений с заданным, воз-
    можно пустым, набором параметров. Он компилируется на стадии
    компиляции и поэтому исполняется более эффективно, чем фраг-
    мент исходного кода, интерпретируемый с помощью оператора
    макроподстановки (&). Вместе с тем кодовые блоки могут хра-
    ниться как литерные строки в файлах базы данных. При необхо-
    димости использования такой кодовый блок может быть скомпи-
    лирован с помощью оператора макроподстановки и присвоен
    какой-либо переменной с тем, чтобы далее многократно его ис-
    пользовать.
         Кодовые блоки в языке трактуются как значения. Их можно
    присваивать переменным и элементам массивов, использовать
    как значения фактических параметров функций и процедур. В
    языке предусмотрены функции, позволяющие выполнить кодовый
    блок с заданным набором значений фактических параметров, для
    каждого элемента заданного массива или для каждой записи не-
    которого файла базы данных.
         В новой версии системы значительно расширены возможнос-
    ти оператора ввода-вывода данных GET, имеются развитые сред-
    ства просмотра и редактирования данных в табличной форме,
    расширены возможности оператора макроподстановки и добавлены
    некоторые новые операторы.
         Значительные перспективы развития системы связаны с
    возможностью подключения замещаемых драйверов базы данных.
    Благодаря таким механизмам реализованные на языке Clipper
    прикладные системы становятся независимыми от конкретного
    способа организации базы данных и методов доступа к ней. Это
    могут быть и не dBase-совместимые базы данных. В перспектив-
    ных направлениях развития системы фирма Nantucket Corp. объ-
    явила о намерении создать модули связи, позволяющие работать
    с системой Clipper как с внешним интерфейсом (front end) для
    некоторых SQL-серверов.
         В Clipper 5.0 нашли воплощение и некоторые элементы об-
    ъектно-ориентированного подхода. Однако, как полагают сами
    авторы, это лишь малое подмножество парадигмы такого подхо-
    да. Объекты понимаются здесь как совокупности значений дан-
    ных заранее заданной структуры, обладающие множеством пове-
    дений. Каждый объект принадлежит некоторому классу объектов,
    однородных по их структуре и поведению.
         Поставляемая система поддерживает несколько классов
    объектов, называемых стандартными. Предусмотрены, в частнос-
    ти, стандартные классы для обработки ошибок на стадии испол-
    нения, для ввода и редактирования значений данных, для прос-
    мотра и редактирования таблиц. Создание средствами системно-
    го языка новых классов или подклассов, а также поддержка от-
    ношений между ними не обеспечиваются.
         Для каждого встроенного класса имеется функция порожде-
    ния, служащая для создания новых объектов, называемых экзем-
    плярами объектов этого класса. Обращение к объектам осущест-
    вляется с помощью ссылок на них. Ссылка на новый объект воз-
    вращается функцией создания и может присваиваться каким-либо
    переменным. Экземпляр объекта существует до тех пор, пока
    существует хотя бы одна ссылка на него в системе.
         Для каждого класса устанавливается множество допустимых
    операций над его объектами. Операция над экземпляром объекта
    инициируется посылкой ему сообщения. Для некоторых классов
    допускаются, в частности, операции экспорта-импорта значений
    переменных, связанных с данным экземпляром объекта.
         Еще одно важное новшество — создание машинно-ориентиро-
    ванной документации "The Guide to Clipper", к которой возмо-
    жен доступ в режиме on-line с помощью Norton Instant Access
    Engine.
         Новая версия популярной СУБД Clipper существенно разви-
    вает возможности системы. Однако наряду с "врожденными" де-
    фектами, свойственными всем dBase-совместимым системам, не-
    решенной проблемой остается пока создание комфортной среды
    для разработчика приложений.