2009-08-05 3 views
9

A newb question/+: ...
В программировании мы часто встречаем слово «Тип».

Что он должен передать, а когда он не должен использоваться?Что такое тип?

+16

http://en.wikipedia.org/wiki/Data_type –

+1

Я думаю, что ссылка Divo сообщит вам все, что вам нужно знать, чтобы вы начали, и должен быть сам ответ. – Xetius

+3

Должен ли я начинать задавать такие вопросы, у кого-нибудь есть список того, чего еще не задавали? – IAdapter

ответ

7

Существует много способов ответить на этот вопрос, и каждый из них применим к некоторым моделям, но не к другим. Мое любимое общее определение заключается в том, что тип является некоторым подмножеством всех значений в мире (например, тип «положительные целые числа» включает значение 1, но не значение «Переполнение стека»). Типы могут, очевидно, перекрываться (1 может быть целым или положительным целым типом). Это определение дает хорошее интуитивное чувство «более крупных» (более инклюзивных) и «меньших» типов, что помогает понять ковариацию и контравариантность.

9

Я всегда узнал, что «Тип определяет, как данные хранятся в памяти и действия, которые могут быть выполнены на нем».

Если вы думаете о классе с локальными переменными и методами, это имеет смысл.

+0

Это, наверное, самый лаконичный способ описать тип, который я видел через некоторое время.+1 – Randolpho

+3

Правильно, тип - это набор значений и операций. Во-вторых, есть представление в памяти и, возможно, в файловых системах. –

+1

Вы не можете определить значение для типа без указания того, как оно хранится в памяти. С этим и вступает в действие эта система. – Randolpho

1

Типы данных. например int, bool, float, char, string (имена будут разными между разными языками).

Тип сокращен для типа данных. Их можно разделить на две основные категории: Родные и Пользовательские. Тип данных описывает, какие типы данных могут храниться в переменной, а также операции, которые вы можете выполнять над этими данными.

Собственные типы данных уже определены на языке. Часто они включают integer, float, boolean, character, string или что-то подобное. Различные языки будут иметь разные наборы собственных типов данных. Например, некоторые языки не имеют логических значений. Другие языки не имеют родного типа string.

Пользовательские типы данных - это те, которые вы определяете. Вы можете определить тип данных для хранения любой информации и операторов, которые действуют на эти значения. Это можно рассматривать как классы или структуры.

1

С точки зрения типов данных, это формат, в котором данные хранятся в памяти и передает операции, которые могут выполняться и с данными.

Например, «беззнаковое целое число» - это тип данных, который может хранить только положительные целые действительные числа (то есть 0, 1, 2, 3 ...), обычно до определенного числа из-за того, что память, выделенная для целых чисел без знака, ограничена.

1

@divo сказал, что это достаточно хорошо, но я попытаюсь подвести итог:

Типа является набором данных (это может даже быть сделано из других видов), которые были даны семантического имея в виду. Это важно - тип - это определение смыслового значения. Этот тип отличается от этого типа , потому что я так говорю. Семантическое значение типа определяет, как вы можете его использовать, какие операции вы можете выполнять против него, что-то вроде этого.

В своей наименьшей форме тип является просто кодировкой для группировки бит. Например, целое число (int на многих языках) является (как правило, в эти дни) 32 битами данных, закодированными в форме twos-compliment. float s - 32 или 64 бита, закодированные в IEEE floating point arithmetic standard. char s - 8 или 16 (чаще 16) битов, закодированных в ASCII или UTF8/UTF16. Строка представляет собой массив символов. И так далее.

Сложный тип (что большинство людей думает о том, когда они видят/слышат слово «тип»), состоит из одного или нескольких других типов. В большинстве языков тип может быть определен как псевдоним другого типа или как структура данных или класс.

3

Неофициально, тип используется для обозначения категории объектов со схожими характеристиками, таких как «Стул» для типа мебели. Стул, как правило, подходит для сидения и имеет плоское горизонтальное пространство. Стулья часто имеют четыре ноги, но не всегда. Стул имеет определенный цвет или набор цветов. и т.д.

Итак, если я говорю вам, у меня есть стул, вы знаете много о предмете, о котором я говорю.

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

Типы представляют собой короткие руки для описания компьютерных объектов, так что все свойства и действия (методы) не должны указываться для каждого отдельного объекта. Объявив, что определенный объект имеет определенный тип, программисты (и компьютер) предполагают общность на основе Типа, делая процесс программирования более дешевым/лучше/быстрее.

+0

Для меня «тип» подразумевает примитивные значения, а «класс» - объекты. Ваше описание для меня очень похоже на последнее. Может быть, я здесь вне базы? – Imagist

+1

@Imagist: Да, ты далеко от базы. Тип означает «примитивные» значения и «объекты». Они синонимы. – Randolpho

5

Данные - это не что иное, как набор бит. Тип говорит вам, что эти биты представляют как int, char, Boolean.

+0

Бит-строки являются лишь одним из многих возможных представлений данных. – Apocalisp

+1

и другие будут? – lune

+0

Различные способы кодирования данных ограничены только вашим воображением. Некоторые компьютеры представляют данные как пары аминокислот. Дело в том, что битовые строки являются кодировкой, но данные не являются кодировкой. – Apocalisp

0

С точки зрения начинающего программиста вы можете думать о назначении типа как о том, какая информация может храниться в конкретной переменной. Например, (игнорируя нечетные среды), в C:

  • char представляет собой 8 битное значение, которое может представлять собой число в диапазоне от -128 до 127.
  • unsigned short это 16-битное значение, которое может представлять число в диапазоне от 0 до 65535

Следует отметить, что не все языки обрабатывают ввод текста одинаковым образом. Язык, который строго ограничивает, какие значения могут быть сохранены в переменных на основе типов, считается строго типизированным. Примером языка, который не сильно типизирован, является Perl - если вы определяете, Perl будет делать магию и рассматривать это значение как строку или число, основанное на контексте.

+0

Это не совсем точно. * Все языки предпочитают печатать, но некоторые определяют и кодируют типы динамически во время выполнения, а не статически во время компиляции. – Randolpho

+0

Наверное, я так плохо это сформулировал. Пересмотренный, чтобы быть немного более ясным. – atk

0

Тип - это имя, данное «описанию» класса или объекта (экземпляр класса).

В .NET тип сообщает вам информацию, такую ​​как имя класса, поля, свойства, методы, где она и т. Д. Она также может приводить к информации, например, какой сборки (DLL) она находится, и директории, in

Тип очень важен, поскольку компилятор знает, что может и не может быть сделано с объектом во время компиляции. Это значительно облегчает развитие, гарантирует, что проблемы будут устранены раньше, и разработчик с меньшей вероятностью совершит неправильные действия с неправильными объектами.

Некоторые примеры так называемых встроенных типов: «int, double, string, float, byte and short».

1

«Тип» предназначен для передачи аромата объекта; его пределы и ожидаемые значения по умолчанию.

int Тип означает, что его число и на многих языках по умолчанию равно нулю. A string Тип, напротив, представляет собой набор символов, который может напоминать int, но не обязательно; по умолчанию используется пустая строка или нулевое значение в зависимости от языка.

«Тип» также, часто используется для обозначения пользовательского объекта или класса, а не только INT, BOOL, строка и т.д. Есть случай, когда вы не должны использовать «Тип «?

0

Тип типа, в соответствии с видом на питон мира. Другими словами, это то, что определяет себя как основу иерархии понятий. Это очень абстрактная концепция, «верхняя онтологическая» сущность, которая определяет концепции мира программирования, которые вы описываете. В некотором смысле концепция типа - это большой взрыв вашей среды программирования.

Я предлагаю вам эту очень проницательный статью:

http://www.cafepy.com/article/python_types_and_objects/python_types_and_objects.html

0

Типы произошло от того, как данные хранятся в памяти. Целое число, хранящееся в памяти, выглядит как обычный номер: x = 6 переведен в память как 00000110. Но как выглядит 6.5? Как насчет письма x?

Поскольку мы можем только хранить вещи, как ряд единиц или нулей, мы должны знать, что нули и единицы означают, что это, где типы бывают. В противном случае я мог бы сохранить номер как x = 66 и получить обратно письмо B

3

Вот лучшее определение, которое я когда-либо встречал:

A proof is a program. The formula that it proves is a type for the program.

Здесь «программа» понимается в самом общем виде, и относится к любой конструкции в языке программирования, который может быть повторно о котором говорится на этом языке (будь то неприводимое значение, выражение, функция или целое приложение).

Некоторые языки программирования, так называемые «статически типизированные» языки, включают вспомогательный язык (называемый системой типов) для составления инструкций о программах. Утверждения, что, если программа правильная, всегда должны быть правдой. Таким образом, в некотором смысле, типы также являются программами, интерпретируемыми другой программой, называемой контролером типов. Некоторые системы типов требуют, чтобы программист делал явные инструкции о типах, где средство проверки типов гарантирует соответствие ваших программ этим операторам и даст вам ошибку, если они этого не сделают. Другие системы пытаются вывести наиболее общий тип для ваших программ автоматически и выдадут вам ошибку, если такой тип не может быть выведен.