к оглавлению

Язык шаблонов Clarion

Отличительной особенностью технологии Clarion является язык шаблонов (template language), опирающийся на словарь данных и репозитарий приложения (процедурная модель). С его помощью формируется системный репозитарий на основе языка макрообработки с визуальным интерфейсом, что позволяет генерировать произвольные (!) исходные тексты, а не только тексты на языке Clarion. Специалисты используют эту особенность для создания систем кроссразработки под разные языки и платформы. Язык шаблонов может применяться в компонентном программировании для формирования скелета (component framework), на который "наращивают" различные компоненты (например, ОСХ).

Программные шаблоны - основные строительные блоки, обеспечивающие фундамент как вариантного, так и компонентного программирования. Благодаря механизму программных шаблонов можно почти "на автомате" строить работоспособный макет и, фактически не прибегая к ручному кодированию, без потери логических связей и структуры данных доводить его до нормальной системы. Макетирование - одна из ключевых особенностей Clarion. Это понятие, приобретающее все больший вес в традиционном жизненном цикле программного продукта, развивается и совершенствуется в технологии Clarion с первых дней ее рождения. Именно макет является отправной точкой быстрого построения и удобного сопровождения достаточно сложных информационных систем. Если инструментальная среда позволяет создавать действующие макеты, которые с трудом можно отличить от готовой прикладной системы, то это всегда говорит об огромном потенциале и высоком качестве подобной среды. При работе с технологией Clarion между макетом и готовой системой подчас очень трудно провести грань. Все здесь зависит от того, какие требования вы (или ваш заказчик) предъявляете к конечной системе (исходя, разумеется, из реальных ограничений на время разработки).

При создании в среде Clarion конкретного приложения после постановки задачи и формулировки требований следует проектирование, причем, что весьма важно, не конечного приложения, а информационной модели, с которой этому приложению предстоит в дальнейшем работать. Словарь данных, в котором хранится информационная модель, является отправной точкой для автоматического создания исполняемого файла вашего конечного приложения. При этом вы избегаете явного участия в этапах кодирования, отладки и тестирования. За счет эксперт-программ и механизма шаблонов все они проходят "на автомате". Таким образом, после этапа проектирования вы переходите к макетированию и в результате получаете действующий макет вашего приложения. Если теперь потребуется доведение макета до "товарного вида", то это можно будет сделать за счет корректировки в генераторе приложений (Application Generator) структуры и параметров программы, быть может, даже не прибегая к ручному кодированию отдельных участков на языке Clarion. Замечательное свойство технологии Clarion состоит в том, что если расхождения между автоматически полученным макетом и требуемым приложением достаточно значительны, то, изучив язык шаблонов и накопив немного опыта, вы сможете самостоятельно готовить для себя нужные эксперт-программы, настроенные на специфику решаемых вами задач, а затем просто "штамповать" готовые приложения.

Шаблоны подгоняются друг к другу и к общему каркасу всего приложения таким образом, чтобы дать возможность разработчику использовать их почти столь же легко, как и детали известного детского конструктора LEGO. Давайте теперь попробуем разобраться в том, что же на самом деле представляет собой программный шаблон для среды Clarion.

Шаблон - это параметризованный фрагмент исходного текста, написанный на специальном языке - языке шаблонов (Template Language). Средства языка от целевого исходного текста отделены за счет простых синтаксических соглашений (перед операторами языка ставится префикс #, а перед переменными - префикс %).

Язык шаблонов выполняет следующие функции:

- предоставляет средства (#PROMPT, #VALIDATE, #BUTTON, #IMAGE, #FIELD и др.) для организации внешнего интерфейса с разработчиком (инженером-конструктором) приложения;

- результаты заполнения визуальных форм запоминаются в переменных языка шаблонов;

- через встроенные переменные (%FieldName, %RelationKey, %Target32, %DriveSQL, %LocalData, %ProgramTimeCreated и др.) обеспечивает своеобразный мост со словарем данных, а также с самой инструментальной средой Clarion;

- на основе заданных и встроенных переменных обеспечивает управление процессом генерации исходного текста с использованием операторов ветвления и цикла (#IF, #CASE, #FOR, #LOOP);

- обладает богатыми средствами работы с файлами, которые участвуют в процессе генерации исходных текстов (#INCLUDE, #CREATE, #OPEN, #READ, #REPLACE, #REDIRECT, #APPEND, #EXPORT, #IMPORT и др.);

- управляет генерацией комментария;

- имеет большой набор разных типов шаблонов, начиная от процедурного (#PROCEDURE), кодового (#CODE), диалогового (#CONTROL) и распределенного (#EXTENSION) и заканчивая утилитами (#UTILITY);

- позволяет создавать эксперт-программы (wizard), формирующие различные технологические цепочки для синтеза и анализа программной системы.

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

Итак, шаблон - это особым образом оформленный полуфабрикат (каркас) исходного текста на некоем целевом языке программирования (в нашем случае - на языке Clarion). Одно из самых замечательных свойств языка шаблонов состоит в том, что он позволяет управлять логикой генерации текстов для любых языков (C/C++, Java, Object Pascal, Modula-2, Fortran, Prolog, Lisp и др.) и даже генерацией простых текстовых файлов произвольной структуры (например, HTML, XML).

Шаблоны задают первый уровень (каркасный) компонентного программирования в технологии Clarion. Второй уровень (кодовый) определяют компоненты в традиционном понимании (VBX, OCX, ActiveX-компоненты).

В Clarion активно используются решения объектно-ориентированного программирования в качестве основы исходного текста, что позволяет заменить программные копии на ссылки и еще больше сократить объем генерируемого объектного кода. Фирма TopSpeed заметно продвинулась в этом направлении, переведя в среде Clarion 4 часть своих базовых шаблонов на рельсы ООП и предоставив разработчику на выбор две функционально идентичные архитектуры на основе шаблонов - классическую и объектно-ориентированную. Как известно, новое - это хорошо забытое старое. И в этом смысле шаблоны по своей сути очень близки развитым средствам макропроцессоров, весьма популярным еще в 70-х годах. Но в отличие от тех средств шаблоны не просто параметризуют текст, а имеют средства организации пользовательского интерфейса для инженера-конструктора, четкую структуризацию элементов специального языка шаблонов и программный интерфейс (встроенные и заданные переменные) с контекстом макрообработки.

Если шаблоны столь всемогущи, то возникает вполне законный вопрос: зачем понадобилось изобретать специальный язык программирования, когда все можно сделать на том же C++? Дело в том, что при подобном акценте на программные шаблоны универсальный язык программирования, не обладающий специальными высокоуровневыми языковыми средствами, ничем не лучше обычного ассемблера (тем более, что фирма TopSpeed откровенно подчеркивает свою ориентацию именно на платформу Wintel). Вот почему язык Clarion в дополнение к традиционным средствам обычных языков добавляет некие новые возможности, обеспечивает компактность представления и надежность статического контроля ошибок еще на этапе компиляции. Наиболее важными среди них являются средства обработки событий, ненаследуемые классы (WINDOW, FILE, VIEW, QUEUE, REPORT и др.), которые как бы являются дальнейшим уточнением процедурных шаблонов, а также средства для процедурной работы с файлами баз данных, являющиеся надстройкой над ODBC/SQL-уровнем коммерческих СУБД. Еще один немаловажный момент состоит в том, что какими бы изощренными ни были сделаны шаблоны, в любой момент может появиться потребность слегка их подправить. Вот почему в шаблонах Clarion активно используются для этой цели программные вставки (embeds). Так что, чем компактнее и понятнее запись кода, тем проще будет сопровождать весь проект.

к оглавлению

Знаете ли Вы, что наследование, Inheritance - Наследование в объектно-ориентированном программировании - это свойство объекта, заключающееся в том, что характеристики одного объекта (объекта-предка) могут передаваться другому объекту (объекту-потомку) без их повторного описания. Наследование упрощает описание объектов.

НОВОСТИ ФОРУМА

Форум Рыцари теории эфира


Рыцари теории эфира
 10.11.2021 - 12:37: ПЕРСОНАЛИИ - Personalias -> WHO IS WHO - КТО ЕСТЬ КТО - Карим_Хайдаров.
10.11.2021 - 12:36: СОВЕСТЬ - Conscience -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
10.11.2021 - 12:36: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от д.м.н. Александра Алексеевича Редько - Карим_Хайдаров.
10.11.2021 - 12:35: ЭКОЛОГИЯ - Ecology -> Биологическая безопасность населения - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ПРАВОСУДИЯ.НЕТ - Карим_Хайдаров.
10.11.2021 - 12:34: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вадима Глогера, США - Карим_Хайдаров.
10.11.2021 - 09:18: НОВЫЕ ТЕХНОЛОГИИ - New Technologies -> Волновая генетика Петра Гаряева, 5G-контроль и управление - Карим_Хайдаров.
10.11.2021 - 09:18: ЭКОЛОГИЯ - Ecology -> ЭКОЛОГИЯ ДЛЯ ВСЕХ - Карим_Хайдаров.
10.11.2021 - 09:16: ЭКОЛОГИЯ - Ecology -> ПРОБЛЕМЫ МЕДИЦИНЫ - Карим_Хайдаров.
10.11.2021 - 09:15: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Екатерины Коваленко - Карим_Хайдаров.
10.11.2021 - 09:13: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вильгельма Варкентина - Карим_Хайдаров.
Bourabai Research - Технологии XXI века Bourabai Research Institution