раздел 01
Переменные: данные в памяти
Самый простой способ хранить данные - положить их в переменную. Это первое, что вы делаете в любой программе, даже не думая о «хранении». И это нормальная отправная точка: пока данные не нужно сохранять надолго, переменной достаточно.
Что это
Переменная - это коробка с именем, в которой лежит значение. Программа кладёт туда данные и достаёт обратно по имени.
tasks = [] # пустой список задач
tasks.append("купить молоко") # положили задачу
tasks.append("позвонить маме")
print(tasks) # ['купить молоко', 'позвонить маме']
let tasks = [];
tasks.push("купить молоко");
tasks.push("позвонить маме");
console.log(tasks); // ['купить молоко', 'позвонить маме']
Пока программа работает, эти задачи доступны. Можно их перебирать, фильтровать, считать. Быстро и просто.
Зачем это
Переменные - это рабочий стол программы. На нём удобно раскладывать то, с чем работаешь прямо сейчас:
- промежуточные результаты вычислений;
- данные, которые вы только что загрузили из файла или из интернета;
- состояние интерфейса: какая вкладка открыта, что ввёл пользователь;
- кэш - временно сохранённый ответ, чтобы не запрашивать его повторно.
Почему данные исчезают
Переменные живут в оперативной памяти (RAM). Память очищается, как только программа завершается. Закрыли вкладку браузера, остановили скрипт, перезагрузили сервер - всё, чего не сохранили на диск, пропало.
Наглядный пример провала. Вы вайб-кодите todo-приложение, AI хранит задачи в переменной на сервере. Всё работает - до первого перезапуска сервера. После деплоя новой версии все задачи всех пользователей исчезли. Классическая ловушка: «работало же на демо».
Как это выглядит в реальном приложении
В браузере состояние компонента (например, в React через useState) - это тоже переменная в памяти. Обновили страницу - состояние сбросилось.
// React: счётчик живёт в памяти, при перезагрузке страницы обнулится
const [count, setCount] = useState(0);
Чтобы счётчик пережил перезагрузку, его значение надо сохранить - например, в localStorage браузера (это уже маленькое постоянное хранилище) или отправить на сервер.
Антипаттерны
- Хранить в переменной то, что должно жить долго. Заказы, пользователей, контент - это не для памяти. Один перезапуск, и данные потеряны.
- Считать, что «на сервере же не закрывается». Серверы перезапускаются постоянно: при деплое, при сбое, при обновлении. Любая серверная переменная - временная.
- Накапливать в памяти бесконечно. Если складывать в список всё подряд и никогда не чистить, программа со временем съест всю память и упадёт.
Что дальше
Переменной хватает, пока данные нужны «здесь и сейчас». Как только появляется слово «сохранить» - время переходить к файлам. Но сначала разберём, в каких случаях память это правильный и достаточный выбор.