Тип данных
Тип данных (тип) — множество значений и операций над этими значениями (IEEE Std 1320.2-1998).

Другие определения:
- Тип данных — класс данных, характеризуемый членами класса и операциями, которые могут быть к ним применены (ISO/IEC/IEEE 24765-2010).
- Тип данных — категоризация абстрактного множества возможных значений, характеристик и набор операций для некоторого атрибута (IEEE Std 1320.2-1998).
- Тип данных — категоризация аргументов операций над значениями, как правило, охватывающая как поведение, так и представление (ISO/IEC 19500-2:2003).
- Тип данных — множество допустимых значений (ISO/IEC 9075-1:2023).
Тип определяет возможные значения и их смысл, операции, а также способы хранения значений типа. Изучается теорией типов. Неотъемлемой частью большинства языков программирования являются системы типов, использующие типы для обеспечения той или иной степени типобезопасности.
Определение
Тип данных характеризует одновременно:
- множество допустимых значений, которые могут принимать данные, принадлежащие к этому типу;
- набор операций, которые можно осуществлять над данными, принадлежащими к этому типу.
Первое свойство можно рассматривать как теоретико-множественное определение понятия типа; второе — как процедурное (или поведенческое) определение.
Кроме этого, в программировании используется низкоуровневое определение типа — как заданных размерных и структурных характеристик ячейки памяти, в которую можно поместить некое значение, соответствующее этим характеристикам. Такое определение является частным случаем теоретико-множественного. На практике, с ним связан ряд важных свойств (обусловленных особенностями организации памяти компьютера), требующих отдельного рассмотрения.
Теоретико-множественное определение, особенно в низкоуровневом варианте, чаще всего используется в императивном программировании. Процедурное определение в большей степени связывается с параметрическим полиморфизмом. Объектно-ориентированное программирование использует процедурное определение при описании взаимодействия компонентов программы, и теоретико-множественное — при описании реализации этих компонентов на ЭВМ, соответственно, рассматривая «класс-как-поведение» и «класс-как-объект в памяти»[источник не указан 3775 дней].
Операция назначения типа информационным сущностям называется типизацией. Назначение и проверка согласования типов может осуществляться заранее (статическая типизация), непосредственно при использовании (динамическая типизация) или совмещать оба метода. Типы могут назначаться «раз и навсегда» (сильная типизация) или позволять себя изменять (слабая типизация).
Типы позволяют избежать парадокса Рассела, в частности, Чёрч ввёл типы в лямбда-исчисление именно с этой целью.
В естественном языке за типизацию отвечают вопросительные местоимения.
Единообразная обработка данных разных типов называется полиморфизмом.
Понятие типобезопасности опирается преимущественно на процедурное определение типа. Например, попытка деления числа на строку будет отвергнута большинством языков, так как для этих типов не определено соответствующее поведение. Слабо типизированные языки тяготеют к низкоуровневому определению. Например, «число» и «запись» имеют различное поведение, но значение адреса «записи» в памяти ЭВМ может иметь то же низкоуровневое представление, что и «число». Слабо типизированные языки предоставляют возможность нарушить систему типов, назначив этому значению поведение «числа» посредством операции приведения типа. Подобные трюки могут использоваться для повышения эффективности программ, но несут в себе риск крахов, и поэтому в безопасных языках не допускаются, либо жёстко обособляются.
Классификация
Существуют различные классификации типов и правил их назначения.
По аналогии с математикой, типы данных делят на скалярные (примитивные) и нескалярные (агрегатные). Значение нескалярного типа (нескалярное значение) имеет множество видимых пользователю компонентов, а значение скалярного типа (скалярное значение) не имеет такового. Примерами нескалярного типа являются массивы, списки и т. д.; примеры скалярного типа — «целое», «логическое» и т. д.
Структурные (агрегатные) типы не следует отождествлять со структурами данных: одни структуры данных непосредственно воплощаются определёнными структурными типами, но другие строятся посредством их композиции, чаще всего рекурсивной. В последнем случае говорят о [англ.]. Примером структур данных, которые почти всегда строятся посредством композиции объектов рекурсивного типа, являются бинарные деревья.
По другой классификации типы делятся на самостоятельные и зависимые. Важными разновидностями последних являются ссылочные типы, частным случаем которых, в свою очередь, являются указатели. Ссылки (в том числе и указатели) представляют собой несоставной зависимый тип, значения которого являются адресом в памяти ЭВМ другого значения. Например, в системе типов Си тип «указатель на целое без знака» записывается как «unsigned *», в языке ML тип «ссылка на целое без знака» записывается как «word ref».
Также типы делятся на мономорфные и полиморфные (см. переменная типа).
Некоторые распространённые типы данных
Логический тип
Логические, или булевы значения (по фамилии их изобретателя — Буля), могут иметь лишь одно из двух состояний — «истина» или «ложь». В разных языках обозначаются bool, BOOL, или boolean. «Истина» может обозначаться как true, TRUE или #T. «Ложь», соответственно, false, FALSE или #F. В языках C и C++ любое ненулевое число трактуется как «истина», а ноль — как «ложь». В Python некоторым [англ.] также назначается то или иное «логическое значение». В принципе, для реализации типа достаточно одного бита, однако из-за особенностей микропроцессоров, на практике размер булевых величин обычно равен размеру машинного слова.
Целочисленные типы
Целочисленные типы содержат в себе значения, интерпретируемые как числа (знаковые и беззнаковые).
Числа с плавающей запятой
Используются для представления вещественных (не обязательно целых) чисел. В этом случае число записывается в виде x=a*10^b. Где 0<=a<1, а b — некоторое целое число из определённого диапазона. a называют мантиссой, b — порядком. У мантиссы хранятся несколько цифр после запятой, а b — хранится полностью.
Строковые типы
Последовательность символов, которая рассматривается как единое целое в контексте переменной. В разных языках программирования накладываются разные ограничения на строковые переменные. Строки могут содержать управляющие последовательности.
Указатели
Указатель — переменная, диапазон значений которой состоит из адресов ячеек памяти или специального значения для обозначения того, что в данный момент в переменной ничего не записано.
Идентификационные типы
Идентификационные типы интерпретируются не как число, а как уникальный идентификатор объекта. Например, FourCC.
Абстрактные типы данных
Типы данных, которые рассматриваются независимо от контекста и реализации в конкретном языке программирования. Абстракция в математическом смысле означает, что алгебра данных рассматривается с точностью до изоморфизма. Абстрактные типы находят широкое применение в методологии программирования, основанной на пошаговой разработке программ. На этапе построения спецификации проектируемой программы алгебра данных моделирует объекты предметной области, в терминах решаемой задачи. В процессе пошагового уточнения данные конкретизируются путём перехода к промежуточным представлениям до тех пор, пока не будет найдена их реализация с помощью базовой алгебры данных используемого языка программирования. Существует несколько способов определения абстрактных типов: алгебраический, модельный и аксиоматический. При модельном подходе элементы данных определяются явным образом. При алгебраическом используются методы алгебраических отношений, а при аксиоматическом подходе используется логическая формализация.
Примеры
- примитивные типы, в том числе:
- логический тип
- целые типы
- вещественные типы
- ссылочные типы
- [англ.]
- [англ.]
- Композитные типы, в том числе:
- массивы
- записи
- кортежи
- абстрактные типы (АТД, англ. ADT)
- алгебраические типы
- [англ.]
- [англ.]
- унаследованные типы
- объектные типы, то есть объекты, значением которых являются типы — например, переменные типов
- [англ.]
- [англ.]
- функциональные типы, например бинарные функции
- универсально квантифицированные типы, такие как параметрические типы
- экзистенциально квантифицированные, такие как модули
- зависимые типы — типы, зависящие от термов (значений)
- [англ.] — типы, идентифицирующие подмножества других типов
- Предопределённые типы (являющиеся фактически структурными, но предоставляемые на правах примитивных) для удобства промышленных разработок, такие как «дата», «время», «валюта» и др.
Самоприменение
Тип может быть параметризован другим типом, в соответствии с принципами абстракции и [англ.]. Например, для реализации функции сортировки последовательностей нет необходимости знать все свойства составляющих её элементов — необходимо лишь, чтобы они допускали операцию сравнения — и тогда составной тип «последовательность» может быть определён как параметрически полиморфный. Это означает, что его компоненты определяются с использованием не конкретных типов (таких как «целое» или «массив целых»), а параметров-типов. Такие параметры называются переменными типа (англ. type variable) — они используются в определении полиморфного типа так же, как параметры-значения в определении функции. Подстановка конкретных типов в качестве фактических параметров для полиморфного типа порождает мономорфный тип. Таким образом, параметрически полиморфный тип представляет собой конструктор типов, то есть оператор над типами в арифметике типов.
Определение функции сортировки как параметрически полиморфной означает, что она сортирует абстрактную последовательность, то есть последовательность из элементов некоторого (неизвестного) типа. Для функции в этом случае требуется знать о своём параметре лишь два свойства — то, что он представляет собой последовательность, и что для её элементов определена операция сравнения. Рассмотрение параметров процедурным, а не декларативным, образом (то есть их использование на основе поведения, а не значения) позволяет использовать одну функцию сортировки для любых последовательностей — для последовательностей целых чисел, для последовательностей строк, для последовательностей последовательностей булевых значений, и так далее — и существенно повышает коэффициент повторного использования кода. Ту же гибкость обеспечивает и динамическая типизация, однако, в отличие от параметрического полиморфизма, первая приводит к накладным расходам. Параметрический полиморфизм наиболее развит в языках, типизированных по Хиндли — Милнеру, то есть потомках языка ML. В объектно-ориентированном программировании параметрический полиморфизм принято называть обобщённым программированием.
Несмотря на очевидные преимущества параметрического полиморфизма, порой возникает необходимость обеспечивать различное поведение для разных [англ.] одного общего типа, либо аналогичное поведение для несовместимых типов — то есть в тех или иных формах ad-hoc-полиморфизма. Однако, ему не существует математического обоснования, так что требование типобезопасности долгое время затрудняло его использование. Ad-hoc-полиморфизм реализовывался внутри параметрически полиморфной системы типов посредством различных трюков. Для этой цели использовались либо [англ.], либо параметрические модули ( либо так называемые «значения, индексированные типами» (англ. type-indexed values), которые, в свою очередь, также имеют ряд реализаций. Классы типов, появившиеся в языке Haskell, предоставили более изящное решение этой проблемы.
Если рассматриваемой информационной сущностью является тип, то назначение ей типа приведёт к понятию «тип типа» («метатип»). В теории типов это понятие носит название «род типов» (англ. kind of a type или type kind). Например, род «*» включает все типы, а род «* -> *» включает все унарные конструкторы типов. Рода явным образом применяются при полнотиповом программировании — например, в виде конструкторов типов в языках семейства ML.
Расширение безопасной полиморфной системы типов классами и родами типов сделало Haskell первым типизированным в полной мере языком. Полученная система типов оказала влияние на другие языки (например, Scala, Agda).
Ограниченная форма метатипов присутствует также в ряде объектно-ориентированных языков в форме метаклассов. В потомках языка Smalltalk (например, Python) всякая сущность в программе является объектом, имеющим тип, который сам также является объектом — таким образом, метатипы являются естественной частью языка. В языке C++ отдельно от основной системы типов языка реализована подсистема RTTI, также предоставляющая информацию о типе в виде специальной структуры.
Динамическое выяснение метатипов называется отражением (а также рефлексивностью или интроспекцией).
Представление на ЭВМ
Наиболее заметным отличием реального программирования от формальной теории информации является рассмотрение вопросов эффективности не только в терминах О-нотации, но и с позиций экономической целесообразности воплощения тех или иных требований в физически изготовляемой ЭВМ. И в первую очередь это сказывается на допустимой точности вычислений: понятие «число» в ЭВМ на практике не тождественно понятию числа в арифметике. Число в ЭВМ представляется ячейкой памяти, размер которой определяется архитектурой ЭВМ, и диапазон значений числа ограничивается размером этой ячейки. Например, процессоры архитектуры Intel x86 предоставляют ячейки, размер которых в байтах задаётся степенью двойки: 1, 2, 4, 8, 16 и т. д. Процессоры архитектуры Сетунь предоставляли ячейки, размер которых в трайтах задавался кратным тройке: 1, 3, 6, 9 и т. д.
Попытка записи в ячейку значения, превышающего максимально допустимый для неё предел (который известен) приводит к ошибке переполнения. При необходимости расчётов на более крупных числах используется специальная методика, называемая длинной арифметикой, которая в силу значительной ресурсоёмкости не может осуществляться в реальном времени. Для наиболее распространённых в настоящее время архитектур ЭВМ «родным» является размер ячеек в 32 и 64 бит (то есть 4 и 8 байт).
Кроме того, целые и вещественные числа имеют разное представление в этих ячейках: неотрицательные целые представляются непосредственно, отрицательные целые — в дополнительном коде, а вещественные кодируются особым образом. Из-за этих различий сложение чисел «1» и «0.1», которое в теории даёт значение «1.1», на ЭВМ непосредственно невозможно. Для его осуществления необходимо сперва выполнить преобразование типа, породив на основании значения целого типа «1» новое значение вещественного типа «1.0», и лишь затем сложить «1.0» и «0.1». В силу специфики реализации вещественных чисел на ЭВМ, такое преобразование осуществляется не абсолютно точно, а с некоторой долей приближения. По той же причине сильно типизированные языки (например, Standard ML) рассматривают вещественный тип как equality types (или identity types) ([англ.]).
Для низкоуровневого представления составных типов важное значение имеет понятие о выравнивании данных. Языки высокого уровня обычно изолируют (абстрагируют) программиста от этого свойства, однако, с ним приходится считаться при связывании независимо скомпилированных модулей между собой. Однако, некоторые языки (Си — , C++) предоставляют возможность контролировать низкоуровневое представление типов, в том числе и выравнивание. Такие языки временами называют языками среднего уровня.
Этот раздел нужно дополнить. |
Примечания
- IEEE Std 1320.2-1998 (R2004) IEEE Standard for Conceptual Modeling Language Syntax and Semantics for IDEF1X97:
a set of values and operations on those values - ISO/IEC/IEEE 24765-2010 Systems and software engineering — Vocabulary Архивная копия от 17 июня 2016 на Wayback Machine:
a class of data, characterized by the members of the class and the operations that can be applied to them - IEEE Std 1320.2-1998 (R2004) IEEE Standard for Conceptual Modeling Language Syntax and Semantics for IDEF1X97:
a categorization of an abstract set of possible values, characteristics, and set of operations for an attribute - ISO/IEC 19500-2:2003, Information technology — Open Distributed Processing — Part 2: General Inter-ORB Protocol (GIOP)/Internet Inter-ORB Protocol (IIOP):
a categorization of values operation arguments, typically covering both behavior and representation - ISO/IEC 9075-1:2023 Information technology — Database languages SQL — Part 1: Framework (SQL/Framework)
- С. J. Date. On The Logical Differences Between Types, Values, and Variables // Date on database: Writings 2000—2006, Apress, 2006, ISBN 978-1-59059-746-0
- Харрисон Дж. Введение в Функциональное Программирование = http://www.cl.cam.ac.uk/Teaching/Lectures/funprog-jrh-1996/. — 1997. Архивировано 11 января 2015 года.
- Strachey, 1967, 3.6.4. Polymorphism, p. 36—37.
- Cardelli, 1991, 2. Typeful languages, p. 5.
- Дейт К. Дж., 2005.
- Type-Indexed Values. Дата обращения: 15 июля 2014. Архивировано 21 апреля 2016 года.
Литература
- Дейт К. Дж. Введение в системы баз данных = Introduction to Database Systems. — 8-е изд. — М.: , 2005. — 1328 с. — ISBN 5-8459-0788-8 (рус.) 0-321-19784-4 (англ.).
- C. Strachey. Fundamental Concepts in Programming Languages. — 1967. Архивировано 12 августа 2017 года.
- Luca Cardelli, Peter Wegner. On Understanding Types, Data Abstraction, and Polymorphism. — , 1985. — С. 471—523. — ISSN 0360-0300.
- [англ.]. Typeful programming (англ.) // IFIP State-of-the-Art Reports. — Springer-Verlag, 1991. — Iss. Formal Description of Programming Concepts. — P. 431–507.
- Pierce, Benjamin C. Types and Programming Languages. — MIT Press, 2002. — ISBN 0-262-16209-1.
- Перевод на русский язык: Пирс Б. Типы в языках программирования. — , 2012. — 680 с. — ISBN 978-5-7913-0082-9.
- Luca Cardelli. CRC Handbook of Computer Science and Engineering. — 2nd. — CRC Press, 2004. — ISBN 158488360X.
- Zhe Yang. Encoding Types in ML-like Languages. — Department of Computer Science, New York University, (c) ACM, 1998.
В статье есть список источников, но не хватает сносок. |
Википедия, чтение, книга, библиотека, поиск, нажмите, истории, книги, статьи, wikipedia, учить, информация, история, скачать, скачать бесплатно, mp3, видео, mp4, 3gp, jpg, jpeg, gif, png, картинка, музыка, песня, фильм, игра, игры, мобильный, телефон, Android, iOS, apple, мобильный телефон, Samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Сеть, компьютер, Информация о Тип данных, Что такое Тип данных? Что означает Тип данных?
Tip dannyh tip mnozhestvo znachenij i operacij nad etimi znacheniyami IEEE Std 1320 2 1998 Drugie opredeleniya Tip dannyh klass dannyh harakterizuemyj chlenami klassa i operaciyami kotorye mogut byt k nim primeneny ISO IEC IEEE 24765 2010 Tip dannyh kategorizaciya abstraktnogo mnozhestva vozmozhnyh znachenij harakteristik i nabor operacij dlya nekotorogo atributa IEEE Std 1320 2 1998 Tip dannyh kategorizaciya argumentov operacij nad znacheniyami kak pravilo ohvatyvayushaya kak povedenie tak i predstavlenie ISO IEC 19500 2 2003 Tip dannyh mnozhestvo dopustimyh znachenij ISO IEC 9075 1 2023 Tip opredelyaet vozmozhnye znacheniya i ih smysl operacii a takzhe sposoby hraneniya znachenij tipa Izuchaetsya teoriej tipov Neotemlemoj chastyu bolshinstva yazykov programmirovaniya yavlyayutsya sistemy tipov ispolzuyushie tipy dlya obespecheniya toj ili inoj stepeni tipobezopasnosti OpredelenieTip dannyh harakterizuet odnovremenno mnozhestvo dopustimyh znachenij kotorye mogut prinimat dannye prinadlezhashie k etomu tipu nabor operacij kotorye mozhno osushestvlyat nad dannymi prinadlezhashimi k etomu tipu Pervoe svojstvo mozhno rassmatrivat kak teoretiko mnozhestvennoe opredelenie ponyatiya tipa vtoroe kak procedurnoe ili povedencheskoe opredelenie Krome etogo v programmirovanii ispolzuetsya nizkourovnevoe opredelenie tipa kak zadannyh razmernyh i strukturnyh harakteristik yachejki pamyati v kotoruyu mozhno pomestit nekoe znachenie sootvetstvuyushee etim harakteristikam Takoe opredelenie yavlyaetsya chastnym sluchaem teoretiko mnozhestvennogo Na praktike s nim svyazan ryad vazhnyh svojstv obuslovlennyh osobennostyami organizacii pamyati kompyutera trebuyushih otdelnogo rassmotreniya Teoretiko mnozhestvennoe opredelenie osobenno v nizkourovnevom variante chashe vsego ispolzuetsya v imperativnom programmirovanii Procedurnoe opredelenie v bolshej stepeni svyazyvaetsya s parametricheskim polimorfizmom Obektno orientirovannoe programmirovanie ispolzuet procedurnoe opredelenie pri opisanii vzaimodejstviya komponentov programmy i teoretiko mnozhestvennoe pri opisanii realizacii etih komponentov na EVM sootvetstvenno rassmatrivaya klass kak povedenie i klass kak obekt v pamyati istochnik ne ukazan 3775 dnej Operaciya naznacheniya tipa informacionnym sushnostyam nazyvaetsya tipizaciej Naznachenie i proverka soglasovaniya tipov mozhet osushestvlyatsya zaranee staticheskaya tipizaciya neposredstvenno pri ispolzovanii dinamicheskaya tipizaciya ili sovmeshat oba metoda Tipy mogut naznachatsya raz i navsegda silnaya tipizaciya ili pozvolyat sebya izmenyat slabaya tipizaciya Tipy pozvolyayut izbezhat paradoksa Rassela v chastnosti Chyorch vvyol tipy v lyambda ischislenie imenno s etoj celyu V estestvennom yazyke za tipizaciyu otvechayut voprositelnye mestoimeniya Edinoobraznaya obrabotka dannyh raznyh tipov nazyvaetsya polimorfizmom Ponyatie tipobezopasnosti opiraetsya preimushestvenno na procedurnoe opredelenie tipa Naprimer popytka deleniya chisla na stroku budet otvergnuta bolshinstvom yazykov tak kak dlya etih tipov ne opredeleno sootvetstvuyushee povedenie Slabo tipizirovannye yazyki tyagoteyut k nizkourovnevomu opredeleniyu Naprimer chislo i zapis imeyut razlichnoe povedenie no znachenie adresa zapisi v pamyati EVM mozhet imet to zhe nizkourovnevoe predstavlenie chto i chislo Slabo tipizirovannye yazyki predostavlyayut vozmozhnost narushit sistemu tipov naznachiv etomu znacheniyu povedenie chisla posredstvom operacii privedeniya tipa Podobnye tryuki mogut ispolzovatsya dlya povysheniya effektivnosti programm no nesut v sebe risk krahov i poetomu v bezopasnyh yazykah ne dopuskayutsya libo zhyostko obosoblyayutsya KlassifikaciyaSushestvuyut razlichnye klassifikacii tipov i pravil ih naznacheniya Po analogii s matematikoj tipy dannyh delyat na skalyarnye primitivnye i neskalyarnye agregatnye Znachenie neskalyarnogo tipa neskalyarnoe znachenie imeet mnozhestvo vidimyh polzovatelyu komponentov a znachenie skalyarnogo tipa skalyarnoe znachenie ne imeet takovogo Primerami neskalyarnogo tipa yavlyayutsya massivy spiski i t d primery skalyarnogo tipa celoe logicheskoe i t d Strukturnye agregatnye tipy ne sleduet otozhdestvlyat so strukturami dannyh odni struktury dannyh neposredstvenno voploshayutsya opredelyonnymi strukturnymi tipami no drugie stroyatsya posredstvom ih kompozicii chashe vsego rekursivnoj V poslednem sluchae govoryat o angl Primerom struktur dannyh kotorye pochti vsegda stroyatsya posredstvom kompozicii obektov rekursivnogo tipa yavlyayutsya binarnye derevya Po drugoj klassifikacii tipy delyatsya na samostoyatelnye i zavisimye Vazhnymi raznovidnostyami poslednih yavlyayutsya ssylochnye tipy chastnym sluchaem kotoryh v svoyu ochered yavlyayutsya ukazateli Ssylki v tom chisle i ukazateli predstavlyayut soboj nesostavnoj zavisimyj tip znacheniya kotorogo yavlyayutsya adresom v pamyati EVM drugogo znacheniya Naprimer v sisteme tipov Si tip ukazatel na celoe bez znaka zapisyvaetsya kak unsigned v yazyke ML tip ssylka na celoe bez znaka zapisyvaetsya kak word ref Takzhe tipy delyatsya na monomorfnye i polimorfnye sm peremennaya tipa Nekotorye rasprostranyonnye tipy dannyhLogicheskij tip Osnovnaya statya Logicheskij tip Logicheskie ili bulevy znacheniya po familii ih izobretatelya Bulya mogut imet lish odno iz dvuh sostoyanij istina ili lozh V raznyh yazykah oboznachayutsya bool BOOL ili boolean Istina mozhet oboznachatsya kak true TRUE ili T Lozh sootvetstvenno false FALSE ili F V yazykah C i C lyuboe nenulevoe chislo traktuetsya kak istina a nol kak lozh V Python nekotorym angl takzhe naznachaetsya to ili inoe logicheskoe znachenie V principe dlya realizacii tipa dostatochno odnogo bita odnako iz za osobennostej mikroprocessorov na praktike razmer bulevyh velichin obychno raven razmeru mashinnogo slova Celochislennye tipy Osnovnaya statya Celochislennyj tip Celochislennye tipy soderzhat v sebe znacheniya interpretiruemye kak chisla znakovye i bezznakovye Chisla s plavayushej zapyatoj Osnovnaya statya Chisla s plavayushej zapyatoj Ispolzuyutsya dlya predstavleniya veshestvennyh ne obyazatelno celyh chisel V etom sluchae chislo zapisyvaetsya v vide x a 10 b Gde 0 lt a lt 1 a b nekotoroe celoe chislo iz opredelyonnogo diapazona a nazyvayut mantissoj b poryadkom U mantissy hranyatsya neskolko cifr posle zapyatoj a b hranitsya polnostyu Strokovye tipy Osnovnaya statya Strokovyj tip Posledovatelnost simvolov kotoraya rassmatrivaetsya kak edinoe celoe v kontekste peremennoj V raznyh yazykah programmirovaniya nakladyvayutsya raznye ogranicheniya na strokovye peremennye Stroki mogut soderzhat upravlyayushie posledovatelnosti Ukazateli Osnovnaya statya Ukazatel tip dannyh Ukazatel peremennaya diapazon znachenij kotoroj sostoit iz adresov yacheek pamyati ili specialnogo znacheniya dlya oboznacheniya togo chto v dannyj moment v peremennoj nichego ne zapisano Identifikacionnye tipy Identifikacionnye tipy interpretiruyutsya ne kak chislo a kak unikalnyj identifikator obekta Naprimer FourCC Abstraktnye tipy dannyh Osnovnaya statya Abstraktnyj tip dannyh Tipy dannyh kotorye rassmatrivayutsya nezavisimo ot konteksta i realizacii v konkretnom yazyke programmirovaniya Abstrakciya v matematicheskom smysle oznachaet chto algebra dannyh rassmatrivaetsya s tochnostyu do izomorfizma Abstraktnye tipy nahodyat shirokoe primenenie v metodologii programmirovaniya osnovannoj na poshagovoj razrabotke programm Na etape postroeniya specifikacii proektiruemoj programmy algebra dannyh modeliruet obekty predmetnoj oblasti v terminah reshaemoj zadachi V processe poshagovogo utochneniya dannye konkretiziruyutsya putyom perehoda k promezhutochnym predstavleniyam do teh por poka ne budet najdena ih realizaciya s pomoshyu bazovoj algebry dannyh ispolzuemogo yazyka programmirovaniya Sushestvuet neskolko sposobov opredeleniya abstraktnyh tipov algebraicheskij modelnyj i aksiomaticheskij Pri modelnom podhode elementy dannyh opredelyayutsya yavnym obrazom Pri algebraicheskom ispolzuyutsya metody algebraicheskih otnoshenij a pri aksiomaticheskom podhode ispolzuetsya logicheskaya formalizaciya Primeryprimitivnye tipy v tom chisle logicheskij tip celye tipy veshestvennye tipy ssylochnye tipy angl angl Kompozitnye tipy v tom chisle massivy zapisi kortezhi abstraktnye tipy ATD angl ADT algebraicheskie tipy angl angl unasledovannye tipy obektnye tipy to est obekty znacheniem kotoryh yavlyayutsya tipy naprimer peremennye tipov angl angl funkcionalnye tipy naprimer binarnye funkcii universalno kvantificirovannye tipy takie kak parametricheskie tipy ekzistencialno kvantificirovannye takie kak moduli zavisimye tipy tipy zavisyashie ot termov znachenij angl tipy identificiruyushie podmnozhestva drugih tipov Predopredelyonnye tipy yavlyayushiesya fakticheski strukturnymi no predostavlyaemye na pravah primitivnyh dlya udobstva promyshlennyh razrabotok takie kak data vremya valyuta i dr SamoprimenenieTip mozhet byt parametrizovan drugim tipom v sootvetstvii s principami abstrakcii i angl Naprimer dlya realizacii funkcii sortirovki posledovatelnostej net neobhodimosti znat vse svojstva sostavlyayushih eyo elementov neobhodimo lish chtoby oni dopuskali operaciyu sravneniya i togda sostavnoj tip posledovatelnost mozhet byt opredelyon kak parametricheski polimorfnyj Eto oznachaet chto ego komponenty opredelyayutsya s ispolzovaniem ne konkretnyh tipov takih kak celoe ili massiv celyh a parametrov tipov Takie parametry nazyvayutsya peremennymi tipa angl type variable oni ispolzuyutsya v opredelenii polimorfnogo tipa tak zhe kak parametry znacheniya v opredelenii funkcii Podstanovka konkretnyh tipov v kachestve fakticheskih parametrov dlya polimorfnogo tipa porozhdaet monomorfnyj tip Takim obrazom parametricheski polimorfnyj tip predstavlyaet soboj konstruktor tipov to est operator nad tipami v arifmetike tipov Opredelenie funkcii sortirovki kak parametricheski polimorfnoj oznachaet chto ona sortiruet abstraktnuyu posledovatelnost to est posledovatelnost iz elementov nekotorogo neizvestnogo tipa Dlya funkcii v etom sluchae trebuetsya znat o svoyom parametre lish dva svojstva to chto on predstavlyaet soboj posledovatelnost i chto dlya eyo elementov opredelena operaciya sravneniya Rassmotrenie parametrov procedurnym a ne deklarativnym obrazom to est ih ispolzovanie na osnove povedeniya a ne znacheniya pozvolyaet ispolzovat odnu funkciyu sortirovki dlya lyubyh posledovatelnostej dlya posledovatelnostej celyh chisel dlya posledovatelnostej strok dlya posledovatelnostej posledovatelnostej bulevyh znachenij i tak dalee i sushestvenno povyshaet koefficient povtornogo ispolzovaniya koda Tu zhe gibkost obespechivaet i dinamicheskaya tipizaciya odnako v otlichie ot parametricheskogo polimorfizma pervaya privodit k nakladnym rashodam Parametricheskij polimorfizm naibolee razvit v yazykah tipizirovannyh po Hindli Milneru to est potomkah yazyka ML V obektno orientirovannom programmirovanii parametricheskij polimorfizm prinyato nazyvat obobshyonnym programmirovaniem Nesmotrya na ochevidnye preimushestva parametricheskogo polimorfizma poroj voznikaet neobhodimost obespechivat razlichnoe povedenie dlya raznyh angl odnogo obshego tipa libo analogichnoe povedenie dlya nesovmestimyh tipov to est v teh ili inyh formah ad hoc polimorfizma Odnako emu ne sushestvuet matematicheskogo obosnovaniya tak chto trebovanie tipobezopasnosti dolgoe vremya zatrudnyalo ego ispolzovanie Ad hoc polimorfizm realizovyvalsya vnutri parametricheski polimorfnoj sistemy tipov posredstvom razlichnyh tryukov Dlya etoj celi ispolzovalis libo angl libo parametricheskie moduli libo tak nazyvaemye znacheniya indeksirovannye tipami angl type indexed values kotorye v svoyu ochered takzhe imeyut ryad realizacij Klassy tipov poyavivshiesya v yazyke Haskell predostavili bolee izyashnoe reshenie etoj problemy Esli rassmatrivaemoj informacionnoj sushnostyu yavlyaetsya tip to naznachenie ej tipa privedyot k ponyatiyu tip tipa metatip V teorii tipov eto ponyatie nosit nazvanie rod tipov angl kind of a type ili type kind Naprimer rod vklyuchaet vse tipy a rod gt vklyuchaet vse unarnye konstruktory tipov Roda yavnym obrazom primenyayutsya pri polnotipovom programmirovanii naprimer v vide konstruktorov tipov v yazykah semejstva ML Rasshirenie bezopasnoj polimorfnoj sistemy tipov klassami i rodami tipov sdelalo Haskell pervym tipizirovannym v polnoj mere yazykom Poluchennaya sistema tipov okazala vliyanie na drugie yazyki naprimer Scala Agda Ogranichennaya forma metatipov prisutstvuet takzhe v ryade obektno orientirovannyh yazykov v forme metaklassov V potomkah yazyka Smalltalk naprimer Python vsyakaya sushnost v programme yavlyaetsya obektom imeyushim tip kotoryj sam takzhe yavlyaetsya obektom takim obrazom metatipy yavlyayutsya estestvennoj chastyu yazyka V yazyke C otdelno ot osnovnoj sistemy tipov yazyka realizovana podsistema RTTI takzhe predostavlyayushaya informaciyu o tipe v vide specialnoj struktury Dinamicheskoe vyyasnenie metatipov nazyvaetsya otrazheniem a takzhe refleksivnostyu ili introspekciej Predstavlenie na EVMNaibolee zametnym otlichiem realnogo programmirovaniya ot formalnoj teorii informacii yavlyaetsya rassmotrenie voprosov effektivnosti ne tolko v terminah O notacii no i s pozicij ekonomicheskoj celesoobraznosti voplosheniya teh ili inyh trebovanij v fizicheski izgotovlyaemoj EVM I v pervuyu ochered eto skazyvaetsya na dopustimoj tochnosti vychislenij ponyatie chislo v EVM na praktike ne tozhdestvenno ponyatiyu chisla v arifmetike Chislo v EVM predstavlyaetsya yachejkoj pamyati razmer kotoroj opredelyaetsya arhitekturoj EVM i diapazon znachenij chisla ogranichivaetsya razmerom etoj yachejki Naprimer processory arhitektury Intel x86 predostavlyayut yachejki razmer kotoryh v bajtah zadayotsya stepenyu dvojki 1 2 4 8 16 i t d Processory arhitektury Setun predostavlyali yachejki razmer kotoryh v trajtah zadavalsya kratnym trojke 1 3 6 9 i t d Popytka zapisi v yachejku znacheniya prevyshayushego maksimalno dopustimyj dlya neyo predel kotoryj izvesten privodit k oshibke perepolneniya Pri neobhodimosti raschyotov na bolee krupnyh chislah ispolzuetsya specialnaya metodika nazyvaemaya dlinnoj arifmetikoj kotoraya v silu znachitelnoj resursoyomkosti ne mozhet osushestvlyatsya v realnom vremeni Dlya naibolee rasprostranyonnyh v nastoyashee vremya arhitektur EVM rodnym yavlyaetsya razmer yacheek v 32 i 64 bit to est 4 i 8 bajt Krome togo celye i veshestvennye chisla imeyut raznoe predstavlenie v etih yachejkah neotricatelnye celye predstavlyayutsya neposredstvenno otricatelnye celye v dopolnitelnom kode a veshestvennye kodiruyutsya osobym obrazom Iz za etih razlichij slozhenie chisel 1 i 0 1 kotoroe v teorii dayot znachenie 1 1 na EVM neposredstvenno nevozmozhno Dlya ego osushestvleniya neobhodimo sperva vypolnit preobrazovanie tipa porodiv na osnovanii znacheniya celogo tipa 1 novoe znachenie veshestvennogo tipa 1 0 i lish zatem slozhit 1 0 i 0 1 V silu specifiki realizacii veshestvennyh chisel na EVM takoe preobrazovanie osushestvlyaetsya ne absolyutno tochno a s nekotoroj dolej priblizheniya Po toj zhe prichine silno tipizirovannye yazyki naprimer Standard ML rassmatrivayut veshestvennyj tip kak equality types ili identity types angl Dlya nizkourovnevogo predstavleniya sostavnyh tipov vazhnoe znachenie imeet ponyatie o vyravnivanii dannyh Yazyki vysokogo urovnya obychno izoliruyut abstragiruyut programmista ot etogo svojstva odnako s nim prihoditsya schitatsya pri svyazyvanii nezavisimo skompilirovannyh modulej mezhdu soboj Odnako nekotorye yazyki Si C predostavlyayut vozmozhnost kontrolirovat nizkourovnevoe predstavlenie tipov v tom chisle i vyravnivanie Takie yazyki vremenami nazyvayut yazykami srednego urovnya Etot razdel nuzhno dopolnit Pozhalujsta uluchshite i dopolnite razdel 26 marta 2014 PrimechaniyaIEEE Std 1320 2 1998 R2004 IEEE Standard for Conceptual Modeling Language Syntax and Semantics for IDEF1X97 a set of values and operations on those values ISO IEC IEEE 24765 2010 Systems and software engineering Vocabulary Arhivnaya kopiya ot 17 iyunya 2016 na Wayback Machine a class of data characterized by the members of the class and the operations that can be applied to them IEEE Std 1320 2 1998 R2004 IEEE Standard for Conceptual Modeling Language Syntax and Semantics for IDEF1X97 a categorization of an abstract set of possible values characteristics and set of operations for an attribute ISO IEC 19500 2 2003 Information technology Open Distributed Processing Part 2 General Inter ORB Protocol GIOP Internet Inter ORB Protocol IIOP a categorization of values operation arguments typically covering both behavior and representation ISO IEC 9075 1 2023 Information technology Database languages SQL Part 1 Framework SQL Framework S J Date On The Logical Differences Between Types Values and Variables Date on database Writings 2000 2006 Apress 2006 ISBN 978 1 59059 746 0 Harrison Dzh Vvedenie v Funkcionalnoe Programmirovanie http www cl cam ac uk Teaching Lectures funprog jrh 1996 1997 Arhivirovano 11 yanvarya 2015 goda Strachey 1967 3 6 4 Polymorphism p 36 37 Cardelli 1991 2 Typeful languages p 5 Dejt K Dzh 2005 Type Indexed Values neopr Data obrasheniya 15 iyulya 2014 Arhivirovano 21 aprelya 2016 goda LiteraturaDejt K Dzh Vvedenie v sistemy baz dannyh Introduction to Database Systems 8 e izd M 2005 1328 s ISBN 5 8459 0788 8 rus 0 321 19784 4 angl C Strachey Fundamental Concepts in Programming Languages 1967 Arhivirovano 12 avgusta 2017 goda Luca Cardelli Peter Wegner On Understanding Types Data Abstraction and Polymorphism 1985 S 471 523 ISSN 0360 0300 angl Typeful programming angl IFIP State of the Art Reports Springer Verlag 1991 Iss Formal Description of Programming Concepts P 431 507 Pierce Benjamin C Types and Programming Languages MIT Press 2002 ISBN 0 262 16209 1 Perevod na russkij yazyk Pirs B Tipy v yazykah programmirovaniya 2012 680 s ISBN 978 5 7913 0082 9 Luca Cardelli CRC Handbook of Computer Science and Engineering 2nd CRC Press 2004 ISBN 158488360X Zhe Yang Encoding Types in ML like Languages Department of Computer Science New York University c ACM 1998 V state est spisok istochnikov no ne hvataet snosok Bez snosok slozhno opredelit iz kakogo istochnika vzyato kazhdoe otdelnoe utverzhdenie Vy mozhete uluchshit statyu prostaviv snoski na istochniki podtverzhdayushie informaciyu Svedeniya bez snosok mogut byt udaleny 18 marta 2014
