PL/Plus

Материал из Циклопедии
Перейти к навигации Перейти к поиску

PL/Plus — это язык программирования со строгой типизацией и блочной структурой программы, ориентированный на работу с продуктами компании ЦФТ. Он позволяет выполнять последующую трансляцию кода на язык PL/SQL — внутренний язык СУБД Oracle, на которой базируются программные решения ЦФТ.

Основные особенности языка[править]

Язык PL/Plus не является объектно-ориентированными в полном объёме, поэтому, исходя из общепринятой терминологии объектно-ориентированного программирования (ООП) в настоящей модели принято следующее соответствие терминов:

  • классы — типы базовых понятий (ТБП);
  • объекты классов — экземпляры ТБП;
  • методы классов — операции ТБП;
  • атрибуты (свойства) классов — реквизиты ТБП;
  • вычисляемые атрибуты (свойства) классов — функциональные реквизиты ТБП;
  • указатели на объекты — ссылки на экземпляры ТБП.

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

Для упрощения работы с экземплярами ТБП на уровне языка PL/SQL, который ничего не знает о внутренних свойствах ТБП, для каждого ТБП создается так называемый интерфейсный пакет типа, который содержит в себе набор низкоуровневых базовых функций и процедур работы с экземплярами ТБП (создание, удаление экземпляров, чтение и изменение значений реквизитов и другие).

Препроцессор PL/Plus элементарные действия с экземплярами ТБП преобразует в PL/SQL вызовы базовых процедур интерфейсных пакетов типов, более сложные конструкции (аналоги SQL-операторов) преобразуются непосредственно в SQL-конструкции языка PL/SQL.

Из объектно-ориентированной модели язык PL/Plus использует также наследование.

История создания[править]

История возникновения языка программирования PL+ напрямую связана с ЦФТ-платформой (другие названия — IBSO — IB System Object, и ТЯ — технологическое ядро) и насчитывает более 20 лет.

Язык был создан с целью решения задач при использовании платформы:

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

В результате развития и внедрений платформы сформировалась отдельная ниша — семейство разработчиков, программирующих на языке PL+.

Базовые типы данных[править]

В языке PL+ используются предопределенные типы данных, которые можно разделить на несколько

групп:

  • числовые (number, integer, binary_float, binary_double);
  • символьные (string, clob, nstring);
  • логические (boolean);
  • дата и время (date, timestamp);
  • бинарные (raw, blob, null).

Выражения и операторы[править]

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

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

Приоритет операторов[править]

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

Но этот порядок может быть изменен с помощью скобок (), совсем как в арифметических выражениях. Выражения, заключенные в скобки, выполняются в первую очередь. Скобки тоже можно считать особым оператором и у них тоже есть приоритет.

Функции и процедуры[править]

Функция может возвращать данные практически любого типа от скаляров (строка, число, дата, логика) до сложных структур: коллекций, объектных типов, курсорных переменных и т. д.

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

  • Присваивание параметру значения по умолчанию вызовом функции.
  • Присваивание переменной значения по умолчанию вызовом функции.
  • Присваивание переменной значения.
  • Использование в логических выражениях.
  • Использование в запросах

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