Формальное описание данных в ЯП и их преобразование
Основными ЯП, используемыми для описания компонентов для распределенной сети, являются С++, Паскаль, JAVA и др.
При обращении разноязыковых компонентов устанавливается взаимно однозначное соответствие между фактическими параметрами V= { v1,v2
,...vк} вызывающего компонента и формальными параметрами F = { f1, f2 , ..., fк1} вызываемого компонента, а также строится отображение (mapping) типов данных одного ЯП в соответствующие типы другого ЯП.
В общем случае задача отображения А: Пà Ф для множеств параметров V и F состоит в построении:
П = { V1, V2 ,..., Vm } , Ф = { F1, F2 ,..., Fm }
m
È V t = V , Vt Ç Vt¢ = Æ при t £ t¢
t=1
m
È F t = F , Ft Ç Ft¢ = Æ при t = t¢
t=1
Построение отображения выполняется за два этапа.
1) Построение операций преобразования типов данных T a = {Tat} для множества языков L = {la }a=1, n
.
2) Построение отображения типов данных для каждой пары взаимодействующих компонентов в ЯП la1 и la2 с применением операций селектора S и конструктора С.
Для проведения формализованного преобразования типов данных используется алгебраический подход, при котором каждому типу данных Tat ставиться в соответствие алгебраическая система
Gat = <Xat
, Wat
>,
где t – тип данных, Xat – множество значений, которые могут принимать переменные этого типа данных, Wat – множество операций над этими типами данных.
Для простых типов данных ЯП t = b (bool), c (char), i (int), r (real)
и сложных типов данных t = a (array), z (record), u (union), e (enum), как комбинация простых типов данных, построены две алгебраические системы:
S1 = { G ab , Gac , Gai , Gar }
S2 = { Gaa , Gaz G au , Gae ...} (1)
Каждая из систем определяется на множестве значений типов данных и операций над ними:
Gat = <Xat , Wat >, где t = b, c, i, r, a, z, u, e.
Операциям преобразования каждого t типа данных соответствует изоморфное отображение двух алгебраических систем, построенных для совместимых типов данных двух ЯП.
В классе систем (1) преобразование типов данных t® q для пары языков la и lb обладает такими свойствами отображений:
1) Системы Gat и Gbq
являются изоморфными (типы q, t определены на том же множестве).
2) Между значениями Xat и Xbq существует изоморфизм, если множества операций Wat и Wbq различны. Если множество операций W = Wat Ç Wbq не пусто, то имеем изоморфизм двух систем G at¢ = < Xat , W > и Gbq¢ = < Xbq , W > . Если тип t – строка, а тип q – вещественный, то между множествами Xat и Xbq не существует изоморфного соответствия.
3) Мощности алгебраических систем должны быть равны çGat ç = ç Gbq ç.
Алгебраические системы линейно упорядочены и поэтому любое отображение 1), 2) сохраняет линейный порядок.