Когда каждый байт занимал место в бюджете

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

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

Цена неэффективности — не только память

Разработчики сокращали объем программ и данных, выбирали компактные способы представления чисел и строк, повторно использовали уже загруженные сведения. Это требовало компромисса: компактный код нередко было труднее читать и менять, а экономия памяти могла усложнить разработку. Оптимизация имела смысл прежде всего там, где ограничение действительно мешало работе; усложнять программу ради каждого байта тоже было невыгодно.

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

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