Какая метафора лучше всего описывает отношения между «значением» и «типом»? - PullRequest
0 голосов
/ 27 ноября 2018

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

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

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

  3. «Тип» - это схема фабрики, которая создает «значения»

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

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

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

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

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

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

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

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

0 голосов
/ 27 ноября 2018

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

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

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

Википедия

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

Наборы имеют имена, такие как Color, People и т. Д., А Типы имеют имена, такие как Color, People и т. Д.

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

Набор Colors
Тип: Color
Значения: Blue, Red

Набор Integers
Тип: Integer
Значения: 0, 1

Метафора

People think of sets but programmers think of types.

или эта картинка в комиксе Dilbert

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

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


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

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

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

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

  1. «Тип» - это пустая оболочка свойств, а «Значение 'это то, что заполняет его.

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

«Тип» - это фабрика, из которой создаются «значения».

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

«Тип» - это план фабрики, которая создает «значения»

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

«Тип» - это книга правил, рассказывающая, на что способно «значение».

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

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

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

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

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

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

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

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

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

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

Я никогда не слышал о термине «набор»"используется таким образом.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...