Айтишники, объясните по-человечески. Чем вызван постоянный рост громоздкости сайтов и аппов? В них стало больше контента или меньше стараний?
Это не убрать оптимизацией или этим не занимаются?
Почему теперь любое простое приложение весит под гиг? Или не такое уж оно и простое?
Тут много факторов. Начнём с того, что требования пользователей растут, даже если они это не замечают. Вроде функциональности не добавилось, но пользователь хочет, чтобы строка ввода плавно раздвигалась, а кнопка окрашивалась градиентом. Но даже это требует ещё кода и ещё библиотек. Программа раньше ошибалась вот тут, а теперь делает правильно - нередко это не исправление какой-то мелкой ошибки, а значительное усложнение и переделка половины архитектуры. Аналогично с добавлением какой-то вроде бы мелкой фичи. Почему надо было переделывать архитектуру, а не примотать фичу скотчем к старой? Потому что вы не хотите, чтобы каждая новая фича требовала год на разработку и вызывала лавину багов в разных местах. Тестирование, кстати, тоже требует определённых изменений в архитектуре. Приложение стало работать быстрее на 2,3%? Это благодаря тому, что добавилось три уровня абстракции, синхронизации и кэширования. А может быть - благодаря переписыванию всего приложения на другой язык. Ничего не бывает бесплатно.
Нередко баг бывает не в приложении, а в библиотеке. И его фиксят в следующей версии. А эта следующая версия весит вдвое больше, чем предыдущая, потому что, кроме пофикшенного бага, там есть ещё до фига всего, что нам не нужно, но нужно другим пользователям библиотеки. И да, у библиотеки тоже есть архитектура и она тоже усложняется. Нет, мы не можем использовать библиотеку поменьше, в которой только то, что нужно нам (хоть мы и прикладываем к этому немалые усилия). Потому что библиотекой, в которой мало фич, пользуются мало людей, значит её меньше тестируют, меньше замечают и исправляют ошибок, меньше мотивации её поддерживать, и её скоро забросят, после чего мы получим головную боль - чем её заменить, и срочно.
Вторая сторона проблемы: окружающая среда, в которой работают приложения, меняется постоянно. То же самое приложение в новой среде рано или поздно перестаёт работать - это называется software decay. Нужно поддерживать новые протоколы, новые требования операционной системы, новые устройства. Сохраняя при этом поддержку всего старого. Появился новый формат картинок или видео - добро пожаловать, новая библиотека и ещё один уровень абстракции. Был HTTP, теперь должен быть HTTP/2 и HTTPS. Двухфакторную аутентификацию тоже поддерживаем, вход без пароля, связывание с аккаунтом Google. Мы заботимся о безопасности, поэтому вместо одного разрешения приложение теперь должно запрашивать три, и не при установке, а во время работы. При низком заряде батареи мы её экономим, поэтому переделайте свою архитектуру, чтобы это предусмотреть. Операционная система добавила новую фичу, поэтому эта функция в API больше не работает, а нужно использовать эту. Но на старых нужно использовать старую. Да, вся структура данных тоже поменялась. Раньше вызов был синхронным, теперь всё быстрее и асинхроннее, приспосабливайтесь. Новые устройства - экраны другого размера, графика с плотностью пикселей в 2-4 раза выше, добавьте ещё столько же картинок в приложение под разные экраны и кучу кода для размещения элементов в разном порядке. Вот на этом телефоне мы можем всё поместить на экране, а тут нам понадобится ещё одна страница. А на этом часть экрана вырезали и впихнули туда камеру - извольте соответствовать. Во сколько обошёлся переход с 32-битной на 64-битную архитектуру? Очень недёшево, в плане объёма приложения.
И последнее - время программистов стоит дорого, место на диске и сетевой траффик по сравнению с ним не стоят ничего. Ни один пользователь не предпочтёт одно приложение другому, потому что оно весит 5 Мб, а не 10. Пользователь открывает статью на Forbes, которая весит 18 Мб, открывает 256 сетевых соединений, устанавливает 16 куков и состоит из одного слова "Нет." Но ему плевать, потому что она всё равно открывается достаточно быстро. Или потому что это Forbes. Поэтому ни один программист не будет тратить драгоценное время, и ни один менеджер не будет требовать оптимизировать то, что не имеет ценности. И я очень советую во всех остальных областях тоже придерживаться этого принципа.
Comments (2)
есть такой блогер Тонский, он довольно часто жаловался и плевался на то, что приложения растут в размере. и это ему не нравится.
и это, есть ещё пользователи, которые предпочитают одно приложение другому исходя из размера (и количества фич)
я пользуюсь программкой Zim - пару мегабайт. или в крайнем случае FreeMind/FreePlane. и не хочу пользоваться ни Obsidian, ни Logseg, ни ещё какими-то монстрами-комбайнами. 🙂
Количества фич - да. Есть многие, кто предпочитает простые приложения. Я тоже пользуюсь Zim 😉 Но я уже давно не смотрю, сколько места он занимает на диске.