Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
karppaul
7 лет назад

Программирование для непрограммистов: типы данных

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

Сразу оговорюсь: программисты могут часами рассказывать про типы и структуры данных, потому что их много, очень много, больше чем полупроводников, и все они такие разные, и все они такие важные..

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

Наверное, самая простая шкала - это номинальная или классификационная. Например, пол человека может задаваться значениями "мужчина" и "женщина" (надеюсь, сейчас не набегут сюда комментаторы, утверждающие, что гендеров больше двух, я всего лишь пример привожу, в конце-концов). Что мы можем сделать с такими значениями? На самом деле не очень много. Можем проверить тождественность. То есть проверить, является ли одно значение равным другому.

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

Ранговая или порядковая шкала позволяет чуть больше. Это по сути та же номинальная шкала, значения которой можно сравнивать между собой. Например: "холодно", "тепло", "жарко". Мы можем не только проверить их на равенство, но и упорядочить их (отсюда и название). Что мы не можем сделать, так это узнать разницу между значениями. Мы не можем сказать, что "жарко" - это больше чем "тепло" насколько же, насколько "тепло" больше чем "холодно".

Интервальная шкала задаёт не только ранги (или порядок) значений, но и фиксирует величину (единицу) интервалов между ними. Хорошим примером может быть шкала Цельсия (если мы считаем только в целых градусах). Отличительной особенностью интервальной шкалы является произвольное определение нуля, т.е. где договорились его поставить, там он и будет. Значения можно сравнивать между собой, можно вычислять величину интервала (расстояние) между ними, но нельзя, например, их перемножать.

Все вышеперечисленные шкалы являются дискретными, т.е. эти шкалы являются прерывистыми, а значения являются отдельными, распознаваемыми.  Есть, естественно, и непрерывная шкала.

Непрерывная шкала - самая "гибкая".  Значения её не дискретны и их бесконечное множество (ну, если квантование материи и времени не будет однажды однозначно доказано). Любые количественные значения можно измерять с помощью непрерывных шкал. На этой же шкале будут и все дробные значения. Ещё одна особенность этой шкалы - она абсолютна, т.е. у неё определено нулевое значение.

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

При чём же тут программирование и типы данных? Такие примеры из реальной жизни и других областей науки показывают суть типов переменных в программировании.

Переменные - это именованные (т.е. имеющие имя) участки памяти, которые хранят в себе данные. Например, в предыдущем посте я писал про вычисление среднего. Когда на первом шаге мы посчитали сумму всех значений, мы её куда-то записали. Куда? В переменную! Присвоили ей значение, как говорят программисты.

Переменные бывают разных типов. Обычно выделяют три базовых: логические, числовые и строковые. Тип переменной определяет возможные операции.

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

Из-за особенностей хранения данных чисто технически мы можем хоть умножать переменные логического типа. Сути их это не меняет.

Числовые типы, как правило, делятся на целочисленные и дробные. Дробные могут быть с плавающей точкой и без. Но это уже технические детали, про которые я, возможно, расскажу позже. С числовыми переменными мы можем делать всё те же операции, что и с обычными числами в жизни.

Строго говоря, для компьютера не существует непрерывных значений, только дискретные. Но мы притворимся, что они есть.

Строковых типов переменных тоже масса (в зависимости от языка программирования), но ограничения у них по сути одни и те же. Мы можем сравнить две переменные строкового типа: "b" будет больше чем "a", но не можем вычесть или перемножить их.

Часто в языках программирования есть ещё "пустой" тип данных: обычно он называется null, none или na (not applicable). Это тип-заглушка, он требуется, когда нужно как-то обозначить пустоту и невозможность работать с данными.

Тип переменной отвечает за то, как значение хранится в памяти, и какие операции с ней могут быть произведены. Нередко, чтобы решить задачу, нужно переменную перевести из одного типа в другой, например, строку "5 °C" нужно перевести в число, чтобы проводить с ним дальше арифметические операции. Когда вы работаете с какими данными, вам необходимо знать, с какими типами вы имеете дело, чтобы эффективно их использовать и избегать ошибок.

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

7
0.268 GOLOS
На Golos с June 2017
Комментарии (2)
Сортировать по:
Сначала старые