Продолжая тему программирования для непрограммистов, я вынужден затронуть эту, на мой взгляд, немного скучную, но важную тему.
Сразу оговорюсь: программисты могут часами рассказывать про типы и структуры данных, потому что их много, очень много, больше чем полупроводников, и все они такие разные, и все они такие важные..
Тема типов данных встречается далеко не только в программировании. Идея о типизации вам будет знакома, если вы, например, изучали шкалы. И с этого, пожалуй, и следует начать.
Наверное, самая простая шкала - это номинальная или классификационная. Например, пол человека может задаваться значениями "мужчина" и "женщина" (надеюсь, сейчас не набегут сюда комментаторы, утверждающие, что гендеров больше двух, я всего лишь пример привожу, в конце-концов). Что мы можем сделать с такими значениями? На самом деле не очень много. Можем проверить тождественность. То есть проверить, является ли одно значение равным другому.
Существует не одна классификация шкал. Подробнее об этом можно почитать в википедии - тема может быть довольно захватывающей.
Ранговая или порядковая шкала позволяет чуть больше. Это по сути та же номинальная шкала, значения которой можно сравнивать между собой. Например: "холодно", "тепло", "жарко". Мы можем не только проверить их на равенство, но и упорядочить их (отсюда и название). Что мы не можем сделать, так это узнать разницу между значениями. Мы не можем сказать, что "жарко" - это больше чем "тепло" насколько же, насколько "тепло" больше чем "холодно".
Интервальная шкала задаёт не только ранги (или порядок) значений, но и фиксирует величину (единицу) интервалов между ними. Хорошим примером может быть шкала Цельсия (если мы считаем только в целых градусах). Отличительной особенностью интервальной шкалы является произвольное определение нуля, т.е. где договорились его поставить, там он и будет. Значения можно сравнивать между собой, можно вычислять величину интервала (расстояние) между ними, но нельзя, например, их перемножать.
Все вышеперечисленные шкалы являются дискретными, т.е. эти шкалы являются прерывистыми, а значения являются отдельными, распознаваемыми. Есть, естественно, и непрерывная шкала.
Непрерывная шкала - самая "гибкая". Значения её не дискретны и их бесконечное множество (ну, если квантование материи и времени не будет однажды однозначно доказано). Любые количественные значения можно измерять с помощью непрерывных шкал. На этой же шкале будут и все дробные значения. Ещё одна особенность этой шкалы - она абсолютна, т.е. у неё определено нулевое значение.
Тип шкалы определяет возможные операции над значениями. Говоря умным языком - определяет алгебру или алгебраические операции (сложение, вычитание, умножение, возведение в степень и так далее) и логические операции (например, больше или меньше).
При чём же тут программирование и типы данных? Такие примеры из реальной жизни и других областей науки показывают суть типов переменных в программировании.
Переменные - это именованные (т.е. имеющие имя) участки памяти, которые хранят в себе данные. Например, в предыдущем посте я писал про вычисление среднего. Когда на первом шаге мы посчитали сумму всех значений, мы её куда-то записали. Куда? В переменную! Присвоили ей значение, как говорят программисты.
Переменные бывают разных типов. Обычно выделяют три базовых: логические, числовые и строковые. Тип переменной определяет возможные операции.
Логические имеют всего два значения: правда или ложь. По сути, это значения номинальной шкалы: мы не можем вычесть одно из другого, сравнить больше или меньше. Можем лишь проверить, не равны ли два значения друг другу.
Из-за особенностей хранения данных чисто технически мы можем хоть умножать переменные логического типа. Сути их это не меняет.
Числовые типы, как правило, делятся на целочисленные и дробные. Дробные могут быть с плавающей точкой и без. Но это уже технические детали, про которые я, возможно, расскажу позже. С числовыми переменными мы можем делать всё те же операции, что и с обычными числами в жизни.
Строго говоря, для компьютера не существует непрерывных значений, только дискретные. Но мы притворимся, что они есть.
Строковых типов переменных тоже масса (в зависимости от языка программирования), но ограничения у них по сути одни и те же. Мы можем сравнить две переменные строкового типа: "b" будет больше чем "a", но не можем вычесть или перемножить их.
Часто в языках программирования есть ещё "пустой" тип данных: обычно он называется null, none или na (not applicable). Это тип-заглушка, он требуется, когда нужно как-то обозначить пустоту и невозможность работать с данными.
Тип переменной отвечает за то, как значение хранится в памяти, и какие операции с ней могут быть произведены. Нередко, чтобы решить задачу, нужно переменную перевести из одного типа в другой, например, строку "5 °C" нужно перевести в число, чтобы проводить с ним дальше арифметические операции. Когда вы работаете с какими данными, вам необходимо знать, с какими типами вы имеете дело, чтобы эффективно их использовать и избегать ошибок.
Также, работая уже в определённой среде и с определёнными языком программирования, нужно понимать, что у типов данных есть чисто технические ограничения. Например, строка не может быть больше какой-то заданной длины, или переменная целочисленного типа не может быть больше какого-то значения.
Ваш пост поддержали следующие Инвесторы Сообщества "Добрый кит":
semasping, yudina-cat, vika-teplo
Поэтому я тоже проголосовал за него!
Узнать подробности о сообществе можно тут:
Разрешите представиться - Кит Добрый
Правила
Инструкция по внесению Инвестиционного взноса
Вы тоже можете стать Инвестором и поддержать проект!!!
Если Вы хотите отказаться от поддержки Доброго Кита, то ответьте на этот комментарий командой "!нехочу"
@karppaul Поздравляю! Вы добились некоторого прогресса на Голосе и были награждены следующими новыми бейджами:
Награда за количество полученных голосов
Вы можете нажать на любой бейдж, чтобы увидеть свою страницу на Доске Почета.
Чтобы увидеть больше информации о Доске Почета, нажмите здесь
Если вы больше не хотите получать уведомления, ответьте на этот комментарий словом
стоп