В среде IT-специалистов есть популярное высказывание: «Время программиста дороже времени компьютера». Получается, что мы тратим намного больше компьютерного времени, нежели времени разработчиков. В IT-сфере на протяжении не менее 30 лет нормальной считается практика «забивать» на оптимизацию. Причина проста — современные компьютеры обладают такой производительностью, что переварят все подряд. Увы, на деле не все так однозначно.
Можно получать удовольствие от плавности картинки в играх в разрешении 4К, одновременно негодуя на дерганую анимацию прокрутки простой веб-страницы. Причиной тому служат и «кривые» руки программистов, и раздутость созданного ими софта.
Раздутое программное обеспечение (РПО) – беда современного мира. Софт просто не хотят оптимизировать
В английском языке этот термин носит названия bloatware, fatware или elephantware. Речь идет о наличии огромного количества ненужных функций в утилите. Всерьез о РПО заговорили еще в 1996 году, когда швейцарский специалист в области информатики Никлаус Вирт, создатель языков «Паскаль», «Модула-2» и «Оберон», написал статью «Долой жирные программы». В ней он поднял проблему того, что программное обеспечение разрастается (словно газ, заполняя все пространство) и становится требовательнее к ресурсам быстрее, чем успевает наращивать мощности аппаратура.
Связано это с тем, что разработчики постоянно гонятся за улучшением своих программ, но вовсе не оптимизируя их, а захламляя новыми возможностями и функционалом. Как показало исследование 2002 года, большинство людей постоянно использует 25% возможностей софта, тогда как до 45% функций остаются невостребованными. Напрашивается вывод: лучше создать два разных продукта меньшего размера с более высокой скоростью работы, нежели раздувать одну программу до невиданных величин.
Примеры худших утилит в категории Fatware
В 2008 году сайт Switched Downloadsquad обнародовал ряд худших примеров софта из области «раздутых программ», неспособных быстро работать даже на мощнейших ПК того времени:
- Acrobat Reader от Adobe;
- iTunes от Apple;
- RealPlayer от RealNetworks;
- Internet Explorer от Microsoft (мемов насчет его заторможенности в интернете не счесть);
- Microsoft Outlook.
Спустя 12 лет этот список явно можно дополнить еще некоторыми ужасно работающими утилитами. Главная из них — сама ОС Windows, которая в версии XP требовала 64 МБ ОЗУ и 1,5 ГБ на жестком диске, а в следующей версии Vista потребовала в 10 раз больше пространства и втрое более мощный процессор. Неудивительно, что в итоге Vista с треском провалилась.
Со смартфонами ситуация не лучше. Рост мощи привел к росту лени разработчиков
Раздутое, захламленное ПО касается не только компьютеров, но и смартфонов. Что iOS, что система Android — обе в чистом, распакованном виде (только с набором базовых приложений) «весят» не менее 6 ГБ. Например «вес» клавиатуры Gboard в неинсталлированом виде – 35 МБ. Для сравнения, Windows 95 в свое время «весила» 30 МБ, а функциональность у нее явно была повыше, чем у простейшей Google-клавиатуры.
Еще три года назад смартфоны с объемом хранилища на 16 ГБ смотрелись как неплохая бюджетная покупка, а сейчас девайсов с таким объемом памяти попросту нет — старт идет от 32 ГБ. Приложения растут, как на дрожжах, требуя все больше и больше пространства на накопителях, при этом существенно не меняя своего функционала и внешнего вида. О прошивках многих вендоров, особенно Xiaomi, многие могут написать отдельную статью. В среднем, каждую новую версию MIUI «допиливают» минимум 3 месяца до удобоваримого состояния. Столько времени пользователи терпят повышенный расход батареи, «вылеты» программ, тормоза прошивки и прочие «прелести» ОС.
Конец близок – мощность оборудования не будет расти бесконечно
Лет 10 назад программисты могли позволить себе опускать вопрос оптимизации, поскольку закон Мура еще кое-как работал. В современных условиях двукратный прирост мощностей оборудования каждые 24 месяца невозможен.
Производительность новых процессоров, видеокарт или SoC у смартфонов ежегодно увеличивается, но темпы невелики. IT-гигант Intel и вовсе топчется на месте 5 лет, выжимая последние соки из 14-нанометрового техпроцесса. Конечно, в противовес можно привести воспрявшую духом AMD или Apple с ее M1, рост мощности SoC от Qualcomm, но и им осталось недолго.
Проблема предела вычислительных мощностей кроется в размерах транзисторов, поскольку с каждым освоением нового техпроцесса производители приближаются к размеру атома. Это фундаментальный барьер, который пока преодолеть невозможно.
Нехватку мощностей в нынешних условиях можно решить, есть как минимум два способа:
- программистам нужно вернуться к истокам, перестав игнорировать вопросы оптимизации и минимизации создаваемых ими программ;
- наращивать количество ядер, тактовую частоту и пропускную способность, объем памяти.
Второй вариант решения проблемы менее эффективен, так как продолжая раздувать софт, отсрочить приближение предела вычислительных мощностей получится ненадолго. Однако именно по этому пути идет современное IT-сообщество, что особенно хорошо видно по системным требованиям последних AAA-игр, — так банально проще. Они не могут нормально функционировать на 4 ядрах, загружая их под 100%. Минимальные требования: 6, а еще лучше 8 ядер с 12 и 16 потоками соответственно. И все равно в итоге может получиться «Киберпанк-2077» в консольной версии.
Это тоже интересно: