Главная | Все статьи | Код

Какие типы данных существуют в программировании

Без стека Время чтения статьи ~10 минут
Какие типы данных существуют в программировании главное изображение

Данные — базовое понятие в программирование. Это любая информация в формализованном виде, которую способен понимать компьютер. Расскажем, какие бывают типы данных в программировании.

Что такое тип данных, зачем он нужен

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

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

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

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

Типы данных нужны для того, чтобы:

  • Обеспечить корректную работу ПО. Если вы задает тип данных для той или иной переменной, программа будет понимать, как с ними работать. Это дает возможность избежать ошибок, связанных с несоответствием типов данных.
  • Оптимизировать ресурсы. В памяти компьютера каждый из типов данных занимает определенное количество места. Если выбрать их правильно, то объем нужных ресурсов будет минимальным, а если использовать типы данных неправильно, то программа будет требовать максимальных ресурсов.
  • Писать понятный код. Типы данных указывают на то, какую информацию хранят и как ее можно применять. За счет их наличия программистам проще ориентироваться в написанном коде.
  • Обеспечивать безопасность. За счет типов данных программы могут правильно применять ограничения к использованию информации. А это уменьшает уязвимость.

Бесплатные курсы по программированию в Хекслете
  • Освойте азы современных языков программирования
  • Изучите работу с Git и командной строкой
  • Выберите себе профессию или улучшите навыки
Выбрать курс

Какие бывают типы данных

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

Целочисленные

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

Есть несколько видов целочисленных данных:

Int — в нем хранят целые числа от -2 147 483 648 до 2 147 483 647. На него в памяти приходится 4 байта.

short int — то же самое, но в ограниченных значения. Туда входят числа от -32 768 до 32 767. На него отводят в памяти 2 байта.

long int — для чисел больше int.

Диапазоны значений могут зависеть от языка программирования.

Дробные числа

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

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

Есть несколько типов дробных данных:

  • Float — 32-битные, они имеют точность до 7 цифр.
  • Double — 64-битные с точностью до 15-16 цифр.
  • Decimal — 128-битные, с точностью до 28-29 цифр, обычно их применяют для финансовых операций.

Строковые

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

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

Со строками можно выполнять несколько операций.

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

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

В нестрого типизированных языках разрешается складывать строку с числом. Это происходит путем автоматического перевода одного типа данных в другой.

Булевы значения

Их обозначают как bool или boolean. Это так называемый логический тип данных. Они имеют только два значения: false — ложь или true — истина.

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

Также они выдаются в качестве ответа, когда программа сравнивает между собой две переменные или при проверке вхождения какого-либо элемента в множество.

Символы

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

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

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

В некоторых языках программирования символы могут быть представлены в виде символьных литералов, заключенных в одинарные кавычки, например 'A' или '$'.

Массивы

Это более сложный тип данных в программировании. Массив или array — самая популярная структура. Он состоит из набора значений, в котором можно хранить набор элементов одного типа (реже нескольких) под одним именем.

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

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

Функция

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

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

Нюансы ссылочных типов данных

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

Через ссылочную переменную можно взаимодействовать с ним. В частности, через них объекту задают определенные значения. К ссылочным типам данных относятся, например, массивы.

Значения без типа

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

  • Null — это не ноль, потому что цифра ноль что-то значит. Null - это значение, которое обозначает пустоту;
  • NaN — значение, в котором нет числа. Так выглядит ошибка, когда в ходе математической операции не удалось получить определенного ответа.

Примеры видов данных в программировании

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

Типы данных в Python

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

  • Списки — коллекции элементов, в которые входят объекты с различным типом данных;
  • Словари — коллекции, включающие в себя ключи из пар и значений;
  • Кортежи — упорядоченные коллекции элементов, которые нельзя изменять.

Типы данных в JavaScript

В этом языке программирования помимо стандартных видов применяются и сравнительно редкие. Например:

  • Symbol — тип данных, которые используют для создания уникальных идентификаторов;
  • Set — структуры с множеством уникальных значений;
  • BigInt — тип данных для работы с целыми числами произвольной длины;
  • Undefined — отсутствие значение. Такое будет у переменной, в которой нет данных.

Особенности типизации данных

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

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

Слабая и сильная

Типизацию можно условно разделить на два типа:

  • Сильная. В таких языках нельзя смешивать в выражениях различные типы, в них также не выполняются автоматические неявные преобразования. То есть сложить два числа можно, а массив с числом — нельзя. Сильная типизация реализована в Java и Python.
  • Слабая. Языки с ней выполняют множество неявных преобразований автоматически, что может привести к неоднозначности. Слабая типизация реализована в JavaScript.

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

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

Статическая и динамическая

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

  • Статическая. При ней тип данных определяется в процессе компиляции. В языках программирования, которые ее поддерживают, типы данных изменять нельзя. Они задаются раз и навсегда. Это уменьшает количество ошибок. Пример языков программирования со статической типизацией — Java и C#.
  • Динамическая. В ней тип данных определяется только на этапе исполнения программы. В языках программирования с динамической типизацией написания кода — более гибкий процесс, но надежность у таких программ меньше. Пример языков с динамической типизацией — JavaScript и Python.

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

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

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

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

Явная и неявная

Типы данных в языках программирования можно указывать по-разному. По этому параметру типизация бывает:

  • Явной. В этом случае программист самостоятельно при создании переменной прописывает, какой тип данных она будет содержать. Это реализовано в таких языках как С++ и С#.
  • Неявной. В этом случае язык программирования автоматически подбирает нужный тип, исходя из того значения, которое положил в переменную разработчик. Также этот процесс может происходить во время компиляции. В число языков с неявной типизацией входят JavaScript и PHP.

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

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

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

Отсутствие типа данных

Все популярные в коммерческой разработке языки программирования — типизированные. Но так было не всегда. И до сих пор остались бестиповые языки программирования. Большинство из них относятся к языкам с низким уровнем абстракции.

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

На бестиповых языках создают программы для микроконтроллеров, низкоуровневые программы и компиляторы. Примером такого языка служит Assembler.

Бесплатные курсы по программированию в Хекслете
  • Освойте азы современных языков программирования
  • Изучите работу с Git и командной строкой
  • Выберите себе профессию или улучшите навыки
Выбрать курс

Рекомендуемые программы
профессия
от 6 300 ₽ в месяц
Разработка фронтенд-компонентов для веб-приложений
10 месяцев
с нуля
Старт 25 апреля
профессия
от 6 300 ₽ в месяц
Разработка веб-приложений на Django
10 месяцев
с нуля
Старт 25 апреля
профессия
от 6 183 ₽ в месяц
Ручное тестирование веб-приложений
4 месяца
с нуля
Старт 25 апреля
профессия
от 6 300 ₽ в месяц
Разработка приложений на языке Java
10 месяцев
с нуля
Старт 25 апреля
профессия
от 5 025 ₽ в месяц
новый
Сбор, анализ и интерпретация данных
9 месяцев
с нуля
Старт 25 апреля
профессия
от 6 300 ₽ в месяц
Разработка веб-приложений на Laravel
10 месяцев
с нуля
Старт 25 апреля
профессия
от 5 840 ₽ в месяц
Создание веб-приложений со скоростью света
5 месяцев
c опытом
Старт 25 апреля
профессия
от 9 900 ₽ в месяц
Разработка фронтенд- и бэкенд-компонентов для веб-приложений
16 месяцев
с нуля
Старт 25 апреля
профессия
от 6 300 ₽ в месяц
Разработка бэкенд-компонентов для веб-приложений
10 месяцев
с нуля
Старт 25 апреля
профессия
новый
Автоматизированное тестирование веб-приложений на JavaScript
8 месяцев
c опытом
в разработке
Старт 25 апреля
профессия
Верстка с использованием последних стандартов CSS
5 месяцев
с нуля
Старт в любое время