Шаг 20.
Нововведения в типах данных

    На этом шаге мы рассмотрим нововведения в типах данных.

    В Object Pascal, по сравнению с Borland (Turbo) Pascal, в корне пересмотрена концепция построения основных типов. Эта концепция является принципиально новой (опять подтверждается истина "все новое - это хорошо забытое старое") и взята из теории конструирования языков, которую ведущие теоретики языков программирования совершенствовали, начиная с 60-х годов. На похожих принципах построена система типов, например, языка TopSpeed Modula-2. В результате введения новой концепции реализация некоторых основных типов Object Pascal приняла теоретически строгий классический вид, уже удовлетворяющий изысканным вкусам "гурманов-теоретиков" в области разработки языков.

    Отныне группы целых, символьных и строковых типов подразделяются на две категории:

  1. Фундаментальные (fundamental) типы, формат представления которых в памяти (число битов и наличие знака) строго фиксируется и будет выдерживаться неизменным во всех последующих реализациях Object Pascal для любых операционных систем и компьютерных платформ.
  2. Родовые (generic) типы, формат представления которых в памяти не фиксируется и будет устанавливаться наиболее оптимальным способом, в зависимости от реализации для конкретной операционной системы и компьютерной платформы.

    К фундаментальным типам относят:

    К родовым типам относят:

    К сожалению, для вещественных и булевских типов градация на фундаментальные и родовые не сделана. Однако, учитывая наметившуююся тенденцию, с большой долей вероятности можно ожидать, что такое разделение будет реализовано в последующих версиях. Правда, булевские типы ByteBool, WordBool и LongBool уже сейчас можно было бы считать фундаментальными, а тип Boolean - родовым, но документируется разделение только для целых, символьных и строковых типов.

    Для того чтобы достигать универсального и оптимального загрузочного кода, при написании программ рекомендуется использовать преимущественно родовые типы, а фундаментальные типы - применять только тогда, когда требуется фиксированное представление данных в памяти.

    Кроме разделения на фундаментальные и родовые типы в Object Рascal введены две новые разновидности определяемых пользователем гипов - вариантные типы и тип указателей на классы. Вариантные типы являются существенным шагом по пути ослабления типизации языка, поскольку они предоставляют возможность выполнять преобразования разнородных типов согласно не всегда очевидным правилам. Однако, с другой стороны, эти типы значительно повышают гибкость программирования, так как позволяют динамически изменять тип значений на этапе выполнения. Тип указателей на классы используется для доступа во время выполнения к таблицам информации о типах классов.

    На следующем шаге мы перечислим стандартные типы.




Предыдущий шаг Содержание Следующий шаг