Высший тип

Поделись знанием:
Перейти к: навигация, поиск

Высший тип (top type) в теории типов, часто обозначаемый как просто вершина или «закрепленным» символом (⊤), — универсальный тип, то есть такой тип, который содержит в себе каждый возможный объект в нужной системе типов. Высший тип иногда именуется универсальным супертипом, то есть все остальные типы в любой отдельно взятой системе типов являются подтипами самого верхнего. Это является противоположностью нижайшего типа, или иначе именуемого универсальным подтипом, который представляет собой тип, не содержащий в себе никаких вложенных членов (то есть у него нет подтипов).



Поддержка в языках программирования

Некоторые типизированные языки программирования обеспечивают явную поддержку высшего типа.

Большинство объектно-ориентированных языков программирования включают в себя универсальный базовый класс:
Название Языки
Object Smalltalk, Java, JavaScript, Ruby и некоторые другие. В Java он часто обозначается с префиксом, указывающим на пакет, например, [java.sun.com/javase/6/docs/api/java/lang/Object.html java.lang.Object]. Также стоит отметить, что Object не является супертипом для примитивных типов в Java; однако, начиная с Java 1.5, упаковка (autoboxing) позволяет выполнять явное или неявное приведение примитива к Object, например, ((Object)42).toString().
Object Objective-C. В OpenStep и Cocoa, которые являются самыми популярными фреймворками на базе языка, NSObject — как правило это универсальный базовый класс. Можно создавать новые корневые классы просто не указывая родительские классы при определении, но это крайне не рекомендуется. Высшим типом для указателей на объект является id.
[msdn.microsoft.com/en-us/library/system.object.aspx System.Object] C#, Visual Basic .NET и прочие языки платформы .NET Framework
object Python, начиная с [www.python.org/download/releases/2.2.3/descrintro/ унификации типов/классов] в версии 2.2.
GObject Glib
TObject Object Pascal. [www.delphibasics.co.nr/RTL.asp?Name=TObject]
t Common Lisp и множество прочих диалектов Lisp.
Any Scala. [www.scala-lang.org/docu/files/ScalaOverview.pdf], X10.
GENERAL Eiffel.
UNIVERSAL Perl 5.
Variant Visual Basic вплоть до 6-й версии.

C++ выделяется среди объектно-ориентированных языков тем, что не имеет универсального супертипа. Тип «указатель на void» может принимать указатель на любой объект, даже несмотря на то, что void-тип сам по себе не является универсальным типом, а лишь единичным типом.

Необъектно-ориентированные языки обычно не имеют универсального супертипа (или полностью поддерживают полиморфизм подтипов). Common Lisp является исключение в том плане, что его встроенные типы образуют иерархию типов, даже когда его объектная система CLOS не используется.

В большинстве языков программирования высший тип — это абстрактный тип, который не содержит элементов, не являющихся элементами некоторого (объявленного) подтипа. В данном случае Java является исключением: выражение new Object() вполне корректно.

Высший тип используется как «обобщённый» (generic) тип, в первую очередь в языках без поддержки параметрического полиморфизма. Например, до добавления обобщённых типов в Java 5, коллекция классов в библиотеке Java (исключая массивы Java) поддерживали ссылки на тип Object; при этом способе любой несобственный тип может быть добавлен в коллекцию. Высший тип также часто используется для поддержки объектов неизвестного типа.

В языках со структурной системой типов высший тип — это пустая структура. Например, объекты в OCaml структурно типизированы; пустой тип объекта (тип объекта, не имеющего методов), «< >», — высший тип для объектных типов. Любой объект в OCaml может быть явным образом приведен к этому типу, хотя результат может быть довольно бесполезным.

Высший тип может также быть представлен как неявный тип в языках с нестатической типизацией. Языки с динамической типизацией часто поддерживают понижающее приведение (или «уточнение типа» (type refinement)) для предоставления программисту возможности указывать более специфический тип для объекта в ходе выполнения программы. Необходимо отметить, что понижающее приведение из типа void * в языке C++ не может быть выполнено в «безопасном» стиле, когда неудачное приведение выявляется средой языка.

Напишите отзыв о статье "Высший тип"

Примечания

Ссылки

  • [www.c2.com/cgi/wiki?TopType c2.com: Top type]  (англ.)
  • [brainslugs.blogspot.com/2007/08/top-bottom.html Типы: Top и Bottom]  (рус.)

Отрывок, характеризующий Высший тип

– Вы про левый фланг? – сказал Кайсаров.
– Да, да, именно. Левый фланг наш теперь очень, очень силен.
Несмотря на то, что Кутузов выгонял всех лишних из штаба, Борис после перемен, произведенных Кутузовым, сумел удержаться при главной квартире. Борис пристроился к графу Бенигсену. Граф Бенигсен, как и все люди, при которых находился Борис, считал молодого князя Друбецкого неоцененным человеком.
В начальствовании армией были две резкие, определенные партии: партия Кутузова и партия Бенигсена, начальника штаба. Борис находился при этой последней партии, и никто так, как он, не умел, воздавая раболепное уважение Кутузову, давать чувствовать, что старик плох и что все дело ведется Бенигсеном. Теперь наступила решительная минута сражения, которая должна была или уничтожить Кутузова и передать власть Бенигсену, или, ежели бы даже Кутузов выиграл сражение, дать почувствовать, что все сделано Бенигсеном. Во всяком случае, за завтрашний день должны были быть розданы большие награды и выдвинуты вперед новые люди. И вследствие этого Борис находился в раздраженном оживлении весь этот день.
За Кайсаровым к Пьеру еще подошли другие из его знакомых, и он не успевал отвечать на расспросы о Москве, которыми они засыпали его, и не успевал выслушивать рассказов, которые ему делали. На всех лицах выражались оживление и тревога. Но Пьеру казалось, что причина возбуждения, выражавшегося на некоторых из этих лиц, лежала больше в вопросах личного успеха, и у него не выходило из головы то другое выражение возбуждения, которое он видел на других лицах и которое говорило о вопросах не личных, а общих, вопросах жизни и смерти. Кутузов заметил фигуру Пьера и группу, собравшуюся около него.
– Позовите его ко мне, – сказал Кутузов. Адъютант передал желание светлейшего, и Пьер направился к скамейке. Но еще прежде него к Кутузову подошел рядовой ополченец. Это был Долохов.
– Этот как тут? – спросил Пьер.
– Это такая бестия, везде пролезет! – отвечали Пьеру. – Ведь он разжалован. Теперь ему выскочить надо. Какие то проекты подавал и в цепь неприятельскую ночью лазил… но молодец!..
Пьер, сняв шляпу, почтительно наклонился перед Кутузовым.
– Я решил, что, ежели я доложу вашей светлости, вы можете прогнать меня или сказать, что вам известно то, что я докладываю, и тогда меня не убудет… – говорил Долохов.
– Так, так.
– А ежели я прав, то я принесу пользу отечеству, для которого я готов умереть.
– Так… так…
– И ежели вашей светлости понадобится человек, который бы не жалел своей шкуры, то извольте вспомнить обо мне… Может быть, я пригожусь вашей светлости.
– Так… так… – повторил Кутузов, смеющимся, суживающимся глазом глядя на Пьера.
В это время Борис, с своей придворной ловкостью, выдвинулся рядом с Пьером в близость начальства и с самым естественным видом и не громко, как бы продолжая начатый разговор, сказал Пьеру:
– Ополченцы – те прямо надели чистые, белые рубахи, чтобы приготовиться к смерти. Какое геройство, граф!
Борис сказал это Пьеру, очевидно, для того, чтобы быть услышанным светлейшим. Он знал, что Кутузов обратит внимание на эти слова, и действительно светлейший обратился к нему:
– Ты что говоришь про ополченье? – сказал он Борису.
– Они, ваша светлость, готовясь к завтрашнему дню, к смерти, надели белые рубахи.
– А!.. Чудесный, бесподобный народ! – сказал Кутузов и, закрыв глаза, покачал головой. – Бесподобный народ! – повторил он со вздохом.
– Хотите пороху понюхать? – сказал он Пьеру. – Да, приятный запах. Имею честь быть обожателем супруги вашей, здорова она? Мой привал к вашим услугам. – И, как это часто бывает с старыми людьми, Кутузов стал рассеянно оглядываться, как будто забыв все, что ему нужно было сказать или сделать.
Очевидно, вспомнив то, что он искал, он подманил к себе Андрея Сергеича Кайсарова, брата своего адъютанта.
– Как, как, как стихи то Марина, как стихи, как? Что на Геракова написал: «Будешь в корпусе учитель… Скажи, скажи, – заговорил Кутузов, очевидно, собираясь посмеяться. Кайсаров прочел… Кутузов, улыбаясь, кивал головой в такт стихов.
Когда Пьер отошел от Кутузова, Долохов, подвинувшись к нему, взял его за руку.
– Очень рад встретить вас здесь, граф, – сказал он ему громко и не стесняясь присутствием посторонних, с особенной решительностью и торжественностью. – Накануне дня, в который бог знает кому из нас суждено остаться в живых, я рад случаю сказать вам, что я жалею о тех недоразумениях, которые были между нами, и желал бы, чтобы вы не имели против меня ничего. Прошу вас простить меня.