Операционная система любого компьютера отвечает за работу с памятью. На каком бы языке разработчик ни написал программу, она будет взаимодействовать с операционной системой, а та — с памятью.
На этом этапе возникают вопросы: как не перерасходовать память и оставить место для других программ. Это важно для работы с переменными динамического размера. Прежде чем перейти к ним, надо разобраться, что такое массивы в целом.
Массив — это упорядоченная коллекция, набор данных, список. Если разработчик назначит какой-то элемент десятым, то он всегда будет десятым в списке, пока разработчик не изменит его позицию. Упорядоченность — это сохранение постоянного порядка в этом массиве. Разработчик может перемещать элементы между собой, но без его участия они всегда будут на своих местах.
Данные могут состоять из набора чисел или набора абсолютно разных значений: число, строка, объект. Это зависит от языка программирования, которому принадлежит массив.
В работе с массивами данных разработчики пользуются переменными. Переменные в языках программирования — это ссылка на определённую область памяти, которую предстоит использовать в работе.
Динамические массивы данных — это структура, которая позволяет прямо в процессе написания кода автоматически менять размер массива и освобождать ненужные ячейки. К языкам, где можно динамически управлять размером массива, относятся JavaScript, Python, Java (через ArrayList), C++ (векторы).
На курсе «Фронтенд-разработчик» учат писать и тестировать код, исправлять ошибки и размещать сайт в интернете. Студенты участвуют во всех этапах разработки: от вёрстки дизайн-макета до создания и настройки серверной части.
Что произошло на низком уровне, когда инициализировали массив:
1) зарезервировали необходимое количество ячеек памяти начиная с array;
2) поместили ссылку на зарезервированную область в переменную array.
Для разработчика, который пишет определённую программу, динамические массивы данных несут одни плюсы: не надо заботиться сколько памяти выделено на этот массив, и сколько элементов он может содержать. Можно спокойно работать.
Но для специалистов, которые разрабатывают язык, динамические массивы связаны с трудностями: нужно найти способ избежать перерасхода памяти и обеспечить хорошую производительность программы.
Например, есть задача сгенерировать список пользователей приложения «Достаевский», которые заказывают пиццу два раза в неделю. Их может быть 5, 50 или 500 — точное количество неизвестно. Если зарезервировать в памяти слишком мало места, код не будет работать, а если с запасом, например сразу на 1000 пользователей, то будет перерасход, и какие-то приложения могут остаться без необходимой памяти.
Структура динамических массивов данных помогает программе занять в памяти ровно тот объём, который нужен для хранения конкретных данных.
Самые распространённые команды при работе с динамическими массивами данных:
● вставка — для добавления элемента по определённому индексу;
● удаление — для удаления элемента из индекса;
● поиск — для поиска элемента по заданному индексу или значению;
● доступ к элементу — обновляет элемент по определённому индексу.
На примере вставки разберём, как работает динамический массив.
Допустим, необходимо вставить элемент в массив. Например, элемент 0 в этом примере массива в позиции индекса 1:
В нескольких ячейках может лежать один элемент. При этом один элемент не всегда занимает одну ячейку памяти. Максимальный размер массива определяется константой (постоянной величиной) или в процессе выполнения программы.
Массивы — это структуры данных, в которых хранятся списки элементов. Каждый, кто слушает музыку на смартфоне, ведёт список контактов в телефоне или следит за таблицей лидеров во время соревнований, использует динамические массивы, сам не зная об этом. У массивов бесконечное количество применений, и они очень важны в мире информатики.
Простейший пример массива — лента постов Вконтакте. Их данные хранятся в массиве и с помощью кода выводятся на страницу. Когда пользователь дочитывает страницу до конца — подгружаются новые посты. Поэтому везде, где подразумевается список, скорее всего, будет использоваться массив. Это могут быть любые сайты и приложения, где используется лента — ограниченная или бесконечная.
Сергей Некрасов
Когда JavaScript-разработчик работает с массивами, в большинстве случаев ему не приходится думать об их внутреннем устройстве: как меняется размер, выделяется или освобождается память. Для программиста гораздо важнее, чтобы в массив было легко добавлять новые элементы, удалять их или заменять.
Понимание того, как устроен этот процесс, позволяет взглянуть на код под другим углом. То, что JS-разработчик принимает динамичность массивов за данность, не свойственно другим языкам.
Читать также: