Введение
Процесс ухудшения производительности компьютерной программы
Надувание программного обеспечения – это процесс, в результате которого последовательные версии компьютерной программы становятся заметно медленнее, потребляют больше памяти, дискового пространства или вычислительных ресурсов, либо предъявляют более высокие требования к аппаратному обеспечению, чем предыдущая версия, при этом предлагая лишь сомнительные улучшения, заметные для пользователя, или страдая от неконтролируемого добавления функций. Термин используется непоследовательно и часто употребляется как пренебрежительное определение конечными пользователями (bloatware) для описания нежелательных изменений пользовательского интерфейса, даже если эти изменения незначительно или вовсе не влияют на требования к аппаратному обеспечению. В долгоживущем программном обеспечении воспринимаемое надувание может возникать из-за необходимости поддержки широкого и разнообразного рынка с различными потребностями. Большинство пользователей считают, что им требуется лишь ограниченный набор доступных функций, а остальные воспринимают как ненужный балласт, даже если другим пользователям эти функции необходимы. Реальное (измеримое) надувание может быть вызвано снижением приоритета алгоритмической эффективности в пользу других аспектов, таких как производительность разработчиков, или, возможно, введением новых уровней абстракции, например, виртуальной машины или другого скриптового движка, для удобства разработки при ослабленных ограничениях. Ощущение повышения производительности разработчиков при работе в виртуальных машинах связано с тем, что они перестают учитывать ограничения ресурсов и их использование на этапах проектирования и разработки, что позволяет быстрее завершить продукт, но приводит к увеличению требований к аппаратному обеспечению для конечного пользователя в качестве компенсации. Термин "bloatware" также используется для обозначения нежелательного предустановленного программного обеспечения или программных пакетов.
Программа вздулась
В компьютерном программировании раздувание кода (code bloat) относится к наличию программного кода (исходного кода или машинного кода), который считается излишне длинным, медленным или неэффективно использующим ресурсы.
Неэффективность программного обеспечения
Разработчики программного обеспечения, работавшие в отрасли в 1970-х годах, сталкивались с серьезными ограничениями вычислительной мощности, дискового пространства и памяти. Каждый байт и такт процессора учитывались, и значительная часть работы была направлена на то, чтобы уместить программы в доступные ресурсы. Достижение этой эффективности было одной из главных ценностей для программистов, а лучшие программы часто называли «элегантными» – термин, используемый математиками для описания доказательства, которое является лаконичным, экономным и действенным. К XXI веку ситуация изменилась. Ресурсы стали восприниматься как дешевые, а скорость кодирования и привлекательные функции для маркетинга – как приоритеты. Это отчасти связано с тем, что технологический прогресс с тех пор увеличил вычислительную мощность и плотность хранения данных на порядки, одновременно снизив относительную стоимость на те же порядки (см. закон Мура). Кроме того, распространение компьютеров во всех сферах бизнеса и личной жизни привело к тому, что индустрия программного обеспечения стала во много раз больше, чем в 1970-х годах. Программы теперь обычно создаются командами, которыми руководят комитеты в студиях разработки программного обеспечения (также известных как компании-разработчики или фабрики программного обеспечения), где каждый программист работает только над частью проекта, над одной или несколькими подпрограммами. Наконец, инструменты и подходы к разработке программного обеспечения часто приводят к изменениям во всей программе для поддержки каждой новой функции, что приводит к масштабному включению кода, влияющего на основную работу программного обеспечения и необходимого для поддержки функций, которые сами по себе могут использоваться редко. В частности, увеличение доступных ресурсов привело к созданию инструментов, облегчающих разработку кода, при этом уделяется меньше внимания конечной эффективности. Другой причиной разрастания программного обеспечения является конкуренция между независимыми стандартами и продуктами, что может создавать потребность в интеграции. Сегодня существует больше операционных систем, браузеров, протоколов и форматов хранения, чем раньше, что приводит к увеличению размера программ из-за проблем совместимости. Например, программа, которая раньше могла сохранять данные только в текстовом формате, теперь должна поддерживать сохранение в HTML, XML, XLS, CSV, PDF, DOC и других форматах. Никлаус Вирт обобщил эту ситуацию в законе Вирта, который гласит, что скорость работы программного обеспечения снижается быстрее, чем увеличивается скорость работы аппаратного обеспечения. В своем эссе 2001 года «Strategy Letter IV: Bloatware and the 80/20 Myth» Джоэл Спольски утверждает, что, хотя 80% пользователей используют только 20% функций (вариация принципа Парето), каждый пользователь использует разные функции. Таким образом, «облегченные» версии программного обеспечения оказываются бесполезными для большинства, поскольку в них отсутствуют одна или две специальные функции, присутствующие в «раздутой» версии. Спольски завершает статью цитатой Джейми Завински, относящейся к Mozilla Application Suite (которая позже стала SeaMonkey): «Как бы удобно это ни было, если бы это было правдой, Mozilla не велика, потому что она наполнена бесполезным хламом. Mozilla велика, потому что ваши потребности велики. Ваши потребности велики, потому что Интернет огромен. Существует множество маленьких, стройных веб-браузеров, которые, кстати, почти ничего полезного не делают. [ ] Но быть сияющим бриллиантом совершенства не было нашей целью при создании Mozilla». Разрастание программного обеспечения также может быть симптомом «эффекта второй системы», описанного Фредом Бруксом в книге «The Mythical Man Month».
"Convenient though it would be if it were true, Mozilla is not big because it's full of useless crap. Mozilla is big because your needs are big. Your needs are big because the Internet is big. There are lots of small, lean web browsers out there that, incidentally, do almost nothing useful. [ ] But being a shining jewel of perfection was not a goal when we wrote Mozilla." Software bloat may also be a symptom of the second system effect, described by Fred Brooks in The Mythical Man Month.
Надувная посуда
Термин "раздутое ПО" может применяться к программному обеспечению, которое стало громоздким из-за неэффективности или накопления функций, как описано выше. Раздутое ПО можно легко удалить, если у пользователя есть root-доступ к устройству, хотя получение root-доступа имеет свои преимущества и недостатки, такие как аннулирование гарантии производителя и отказ некоторого программного обеспечения работать на устройствах с root-доступом.
Примеры
+ Сравнение минимальных требований к оборудованию Microsoft Windows (для версий x86) Версия Windows Процессор Память Жесткий диск Windows 95 (1995) 25 МГц 4 МБ ~50 МБ Windows 98 (1998) 66 МГц 16 МБ ~200 МБ Windows 2000 (1999) 133 МГц 32 МБ 650 МБ Windows XP (2001) 233 МГц 64 МБ 1.5 ГБ Windows Vista (2006) 800 МГц 512 МБ 15 ГБ Windows 7 (2009) 1 ГГц 1 ГБ 16 ГБ Windows 8 (2012) 1 ГГц 1 ГБ 16 ГБ Windows 10 (2015) 1 ГГц 1 ГБ 16 ГБ Windows 11 (2021) 1 ГГц, 64-битный, двухъядерный 4 ГБ 64 ГБ Apple iTunes обвинили в разрастании из-за попыток превратить его из простого медиаплеера в платформу для электронной коммерции и рекламы. Бывший редактор PC World Эд Ботт обвинил компанию в лицемерии, указывая на рекламные атаки на Windows за аналогичные практики. В 2019 году Apple объявила о скором закрытии программы, что комментатор из The Guardian назвал «долгожданным», отметив, что программа «стала чрезмерно раздутой, поразительной аномалией для компании, которая гордится элегантным и функциональным дизайном». Microsoft Windows также подвергалась критике за раздутость. Ссылаясь на Windows Vista и обсуждая новые, значительно упрощенные основные компоненты Windows 7, инженер Microsoft Эрик Траут прокомментировал: «Это ядро Windows 7. Это набор компонентов, которые мы исключили. Многие считают Windows огромной, раздутой операционной системой, и это может быть справедливой характеристикой, должен признать. Она большая, содержит много всего. Но в основе своей ядро и компоненты, составляющие основу операционной системы, на самом деле довольно оптимизированы». Эд Ботт также выразил скептицизм, отметив, что почти каждая операционная система, которую когда-либо продавала Microsoft, подвергалась критике как «раздутая» при первом выпуске, даже те, которые сейчас считаются полной противоположностью, например MS DOS. Цитируя Пола Турротта, Ботт согласился, что раздутость связана с многочисленными функциями корпоративного уровня, включенными в операционную систему, которые в значительной степени не актуальны для обычного домашнего пользователя. Приложения для записи CD и DVD, такие как Nero Burning ROM, также подверглись критике за раздутость. Избыточные функции, не предназначенные специально для конечного пользователя, иногда устанавливаются по умолчанию при использовании экспресс-установки. Ряд технологических блогов также освещали проблему увеличения количества предустановленного ненужного ПО на мобильных телефонах. Однако они касаются другой проблемы – загрузки телефонов беспроводными операторами программным обеспечением, которое во многих случаях сложно или невозможно удалить. Чаще всего это упоминается в связи с устройствами Android, хотя это явление существует и на телефонах с другими операционными системами. В январе 2018 года глава Facebook Messaging Дэвид А. Маркус признал, что само приложение чрезвычайно раздуто, и пообещал полностью переработать его, чтобы удалить ненужные функции и оптимизировать его.
Apple's iTunes has been accused of being bloated by efforts to turn it from a simple media player to an e commerce and advertising platform, with former PC World editor Ed Bott accusing the company of hypocrisy in its advertising attacks on Windows for similar practices. In 2019, Apple announced the impending closure of the program, a move described by a commentator from The Guardian as being "long overdue", stating that the program had "become baroquely bloated, a striking anomaly for a company that prides itself on elegant and functional design." Microsoft Windows has also been criticized as being bloated – with reference to Windows Vista and discussing the new, greatly slimmed down Windows 7 core components, Microsoft engineer Eric Traut commented that "This is the core of Windows 7. This is a collection of components that we've taken out. A lot of people think of Windows as this really large, bloated operating system, and that may be a fair characterization, I have to admit. It is large. It contains a lot of stuff in it. But at its core, the kernel and the components that make up the very core of the operating system actually is pretty streamlined." Ed Bott also expressed skepticism, noting that nearly every operating system that Microsoft has ever sold has been criticized as "bloated" on first release, even those now regarded as the exact opposite, such as MS DOS. Quoting Paul Thurrott, Bott agreed that the bloat stems from numerous enterprise level features included in the operating system that were largely irrelevant to the average home user. CD and DVD burning applications such as Nero Burning ROM have become criticized for being bloated. Superfluous features not specifically tailored to the end user are sometimes installed by default through express setups. A number of technology blogs have also covered the issue of increased bloatware on cell phones. However, they refer to a different issue, specifically that of wireless carriers loading phones with software that, in many cases, cannot be easily, if at all, deleted. This has been most frequently cited with respect to Android devices, although this phenomenon exists on phones running many other operating systems. WeChat added additional features such as games, subscription services, WeChat Pay e wallet, In January 2018, the head of Facebook Messaging, David A. Marcus, admitted that the app itself is extremely bloated and promised to redesign the whole app to remove unnecessary features and streamline it.
Альтернативы
Некоторые приложения, такие как GIMP, и программное обеспечение с дополнительной функциональностью от плагинов, используют расширения или дополнения, которые загружаются отдельно от основного приложения. Они могут быть созданы разработчиком программного обеспечения или сторонними разработчиками. Плагины, расширения и дополнения добавляют дополнительную функциональность, которая иначе могла бы быть включена в основную программу. Использование этих плагинов, расширений и/или дополнений позволяет экономить место на компьютере, поскольку, хотя приложение, "интерфейс плагинов" и все плагины вместе занимают больше места, чем та же функциональность, скомпилированная в единое монолитное приложение, это позволяет каждому пользователю устанавливать только необходимые ему функции, а не заставлять всех пользователей устанавливать гораздо более крупное монолитное приложение со всеми доступными функциями. В результате получается "упрощенное" или "базовое" приложение, поставляемое в компактном пакете и готовое к добавлению необходимой функциональности. Программное обеспечение с открытым исходным кодом может использовать аналогичный подход, применяя директивы препроцессора для выборочного включения функций во время компиляции. Это проще и безопаснее, чем система плагинов, но требует от пользователя, желающего получить определенный набор функций, компиляции программы из исходного кода. Иногда программное обеспечение разрастается из-за "ползучего функционала" (закон Завинского об охвате программного обеспечения). Один из способов уменьшить подобное разрастание заключается в следовании философии Unix: "писать программы, которые делают одну вещь и делают это хорошо", и разбивать сложное программное обеспечение на множество более простых компонентов, которые можно объединять с помощью каналов, скриптов оболочки или других форм межпроцессного взаимодействия.