Data: различия между версиями
Sergey (обсуждение | вклад) |
Sergey (обсуждение | вклад) |
||
Строка 43: | Строка 43: | ||
БД, открытая в хендле 3 | БД, открытая в хендле 3 | ||
текущая позиция верхней строки при отображении на экране | текущая позиция верхней строки при отображении на экране | ||
+ | |||
+ | == Типы в программе и архитектура CPU == | ||
+ | |||
+ | В программе программист объявляет тип, с которым хочет работать - например, беззнаковое некоторого размера бит, знаковое в дополнительном коде и т.д. | ||
+ | Если это float - может указать минимально требуемое количество бит мантиссы и порядка. | ||
+ | Может указать вектор (для векторных операций) желаемого размера. | ||
+ | |||
+ | Компилятор сопоставляет пожелания программиста и возможности процессора, и в соответствии с заданным программистом типом либо использует инструкции процессора, работающие с этим типом, либо эмулирует работу с ним, используя доступные инструкции. | ||
+ | |||
+ | Строка является составным типом (массив переменной длины, или структура из длины и массива) и реализуется стандартной библиотекой, а не компилятором. Например кроме строк в стандартной кодировке (ASCII/UTF-8) также могут быть реализованы строки в произвольной кодировке с указанием атрибута кодировки в составе типа данных. |
Версия 01:10, 6 сентября 2022
Виды данных в программе
базовые - байт, слово, структ, массив, блок памяти
контейнеры - куча, список, дерево
сложные контейнеры для организации произвольных указателей должны использовать управляемые указатели, обнуляемые при удалении целевого объекта
прикладные типы - сложные типы с набором методов. Не могут взаимодействовать с ОС
контекст:
аватар - описывается в общем виде, при инстанциации привязывается к какому-то конкретному объекту - определённая вкладка браузера, некий внешний сервис, контроллер какого-то конкретно мотора. Использует сервисы ОС для подключения к своей точке назначения. модель - имитирует работу некого объекта. Может использоваться в качестве точки назначения для аватара. Может ограниченно взаимодействовать с ОС (например использовать таймер).
контекст содержит: переменные состояния точки входа реакции на события вложенные (используемые) контексты код, исполняемый в ответ на события или же для отработки внутренних процессов
лёгкие и тяжёлые типы
Тип может поддерживать копирование, но в силу большого объёма занимать существенное время, или зависеть от записанного значения - строки, контейнеры.
Лёгкие типы - время копирования меньше или сопоставимо с временем копирования указателя.
Тяжёлые типы - время копирования превышает время копирования указателя.
В тяжёлых типах эффективнее работать с указателями на тип, а не подставлять его в шаблоны функций, копирующие и обменивающие значения (например сортировку) - использовать для этого промежуточный тип, хранящий указатель и проксирующий функции сравнения и перестановки.
переменные
Некий объект в памяти, идентифицируемый по имени.
Что в переменной?
Тип данных. Значение (смысл). Привязка (к какому объекту относится, что характеризует) Назначение (для чего переменная заведена, для чего используется, какая задача с её помощью решается)
Например
целое ключ в таблице сообщений БД, открытая в хендле 3 текущая позиция верхней строки при отображении на экране
Типы в программе и архитектура CPU
В программе программист объявляет тип, с которым хочет работать - например, беззнаковое некоторого размера бит, знаковое в дополнительном коде и т.д. Если это float - может указать минимально требуемое количество бит мантиссы и порядка. Может указать вектор (для векторных операций) желаемого размера.
Компилятор сопоставляет пожелания программиста и возможности процессора, и в соответствии с заданным программистом типом либо использует инструкции процессора, работающие с этим типом, либо эмулирует работу с ним, используя доступные инструкции.
Строка является составным типом (массив переменной длины, или структура из длины и массива) и реализуется стандартной библиотекой, а не компилятором. Например кроме строк в стандартной кодировке (ASCII/UTF-8) также могут быть реализованы строки в произвольной кодировке с указанием атрибута кодировки в составе типа данных.