Какая метафора лучше всего описывает отношения между "значением" и "типом"?

Я пытаюсь нарисовать комикс с точным объяснением "значения" и "типа", и у меня возникла главная проблема: то, как люди используют термин "тип" в сравнении с "значением" в источниках повсюду, сводит меня с ума. Я продолжаю читать определения в различных метафорах:

  1. "Тип" - это пустая оболочка свойств, а "значение" - это то, что ее заполняет.

  2. "Тип" - это фабрика, из которой построены "значения".

  3. "Тип" - это план фабрики, которая создает "ценности"

  4. "Тип" - это книга правил, рассказывающая, что может делать "значение".

  5. "Тип" - это идентификационная метка для "значения", в которое уже встроены встроенные свойства.

  6. "Тип" - это организационная палата, в которой "ценности" находятся до того, как они будут вызваны в программу.

Хуже того, я продолжаю слышать, как "Тип" используется как прилагательное "Типизированный", что еще больше смущает меня: не является ли тип существительным? Кроме того, каждый раз, когда кто-то использует этот термин, создается впечатление, что существует множество определений и контекстов. Я чувствую, что невозможно объяснить, что такое "тип", если люди не разборчивы в деталях.

Я не знаю, где на самом деле задать этот вопрос, но я читал целыми днями, без разумного ответа. Как я должен визуализировать "тип" и как он относится к "значению"? И какие из моих 6 интерпретаций люди будут наименее придирчивыми? У меня сейчас очень болит голова...

Мои комиксы объяснили бы концепции в Python, но в зависимости от ответов я мог бы попытаться объяснить концепции программирования не зависящим от языка образом.

2 ответа

Тип похож на спортивную команду, а ценность - на одного из ее игроков. New York Knicks - это просто логотип, майка, набор цветов, имя. Игроку нужно носить эту майку и представлять эту команду, чтобы сделать Никс чем-то ценным (игра слов). Если Knicks - тип, Патрик Юинг - одна из его ценностей.

Как я должен визуализировать "тип" и как он соотносится с "значением"?

Действительно просто.

Вы знаете, что такое набор в математике.

Википедия

В математике множество - это совокупность отдельных объектов, рассматриваемых как объект сам по себе.

Наборы имеют такие имена, как Color, Peopleи т. д., и типы имеют имена, такие как Color, People, так далее.

Наборы имеют значения, а Типы имеют значения.

Набор из Colors
Тип: Color
Ценности: Blue, Red

Набор из Integers
Тип: Integer
Ценности: 0,1

Метафора

People think of sets but programmers think of types.

или это, но картина в комиксе Дилберта

You say Set I think Type.
I say Type you think Set.

Что-нибудь еще, что я должен добавить?


РЕДАКТИРОВАТЬ

Из комментария.

Объясните, что в контексте каждой из 6 метафор я видел, как люди описывают тип.

Понятие типа не является чем-то интуитивным, так что помогает установить аналогия. Использование набора в качестве аналогии является чрезмерным упрощением, поэтому, пройдя по шести метафорам, вы узнаете, где набор и тип различаются.

  1. "Тип" - это пустая оболочка свойств, а "значение" - это то, что ее заполняет.

Когда вы впервые даете тип или задаете имя, оно пустое. Затем вы добавляете значения к нему, чтобы заполнить его. Он может не иметь значений и быть действительным.

  1. "Тип" - это фабрика, из которой построены "значения".

"Тип" может использоваться для создания новых значений, но набор не создает новые значения. В математике они используют нотацию set build.

  1. "Тип" - это план фабрики, которая создает "ценности"

Для этого слово blueprint больше относится к абстрактному типу. Я не знаю подобных средств с наборами, отличными от нотации набора множеств.

  1. "Тип" - это книга правил, рассказывающая, что может делать "значение".

В объектно-ориентированном программировании типов есть методы. Если бы собака была типом, то у нее был бы метод запуска. Затем вы можете сказать собаке бежать.

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

У множеств, AFAIK, нет методов, но у математики есть операторы, которые работают со значениями, и операторы ограничены наборами, с которыми они работают. Таким образом, в программировании операторы работают над значениями, а в математике операторы работают над значениями.

  1. "Тип" - это идентификационная метка для "значения", в которое уже встроены встроенные свойства.

Когда вы присваиваете значение без типа, это просто значение, но как только вы говорите, каков тип значения, тогда все свойства и методы этого типа могут использоваться с этим значением.

Что касается наборов, если я скажу 5, то что это? Целое число, натуральное число, действительное число, часть мнимого числа, длина и т. Д. Если я скажу, что 5 имеет целочисленное значение типа, то вы знаете, что можете сложить, вычесть, и преемник 5 равен 6, а предшественник 5 - 4. Если я говорю, что 5 имеет тип "простое", то вы знаете, что преемник 5 - 7, а предшественник 5 - 3.

  1. "Тип" - это организационная палата, в которой "ценности" находятся до того, как они будут вызваны в программу.

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

Также в качестве прилагательного "Типизированный". Это мне очень поможет.

В Python переменная не имеет типа ( duck typing), пока вы не поместите значение в переменную, тогда переменная получит связанный с ней тип. Помещение значения в переменную - это глагол, поэтому существительное становится глаголом, таким образом, "набирается", а в X печатается как целое число.

Я никогда не слышал, чтобы термин "набор" использовался таким образом.

Я использовал его только потому, что это слишком упрощает, чтобы вылечить что-то, что вы можете связать. Когда я думаю о типах, это сильно отличается от множества.

Другие вопросы по тегам