Псевдонимы типов
Объявление типа может объявить новый тип как эквивалентный уже существующему. При этом идентификатор нового типа становится псевдонимом для базового.
Синтаксис
type Alias = идентификатор;
Примеры
{ Псевдонимы типов }
type Int64 = Comp;
type WideChar = Word;
Ада
Можно определять не только псевдонимы типов, но и производные типы, отличимые от базовых:
-- Псевдоним
subtype Int64 is Integer_64;
-- Производные типы
type HTML_String is new Unbounded_String;
type MySQL_Query_String is new Unbounded_String;
type MIME_Header_String is new Unbounded_String;
В случае производных типов наследуются примитивные операции базового типа, но при этом новый тип несовместим с базовым. Для всех новых строковых типов из примера определена конкатенация. Но при этом нельзя случайно забыть экранировать строку там, где требуется HTML. Таким образом можно защититься от XSS атак, самых распространённых в Internet. Если использовать производные строковых типов для запросов к базе данных, то предотвращаются SQL Inject атаки, занимающие второе место по распространённости в Web. Наконец, если применить этот метод для заголовков отправляемых электронных писем, то предотвращается уязвимость Mail Inject. Элегантно и действенно, не правда ли?
Используйте производные типы, если случайное неявное приведение типа может создать угрозу безопасности. В других случаях вопрос остаётся открытым. Например, нельзя однозначно рекомендовать, использовать ли в GUI разные типы для горизонтальных (X, Width) и вертикальных (Y, Height) расстояний.
К сожалению, большинство современных языков программирования не позволяют создавать производные строковые типы. Аду можно смело причислить к числу тех языков, незнание которых обрекает создателей других языков программирования на изобретение велосипедов. Типичный квадратноколёсный велосипед - волшебные кавычки в PHP.