В одной из самых ожесточённых дискуссий, когда-либо разгоравшихся на «Компьютерре», — в комментариях к колонке о вероятной кончине Microsoft как абсолютного лидера, узурпатора власти на ИТ-арене — был затронут вопрос, на котором грех не остановиться особо. Это вопрос вероятной трансформации прикладного программного обеспечения из той формы, в какой мы знали его последние тридцать лет, во что-то уникально новое. И, честно говоря, кажется странным, что в околокомпьютерной прессе его обсуждают так редко: ведь, следуя «мобильной» дорожкой, на которую мы уже ступили, нам не обойти тему трансформации софта никак.
Завязка тут простая и, в общем, очевидная. Хотим мы того или нет, персональные компьютеры срастаются с мобильными устройствами. Называйте это смертью персоналки или её перерождением — процесс уже идёт. Но аппаратная смычка мобильного мира с миром ПК непременно должна оказать влияние и на софтверную часть. Софт должен будет претерпеть изменения, адаптироваться к новым реалиям. Но вот какими эти изменения будут — ещё только предстоит понять.
Где-то перемены уже вовсю цветут: таков, к примеру, пользовательский интерфейс. Пусть и не без проблем, он уже меняется: взгляните на тайлы Windows 8 или на то, как Android мигрирует на десктоп практически в своём оригинальном виде. Не факт, что под таким агрессивным натиском примитив «окна» переживёт следующую декаду! Но есть и менее очевидные зоны, где перестройка только обозначилась или представляется вероятной. Таковы размер и функциональное наполнение программ. Мобильные устройства слишком слабы, чтобы исполнять десктопных монстров вроде MS Office или LibreOffice, Photoshop — и это самый первый аргумент, которым «скептики-консерваторы» (считающие смартфоны и планшетки недокомпьютерами) тычут в глаза «либералам» (считающим, что дни классической персоналки сочтены). Ну так почему бы программам не измениться, приспособившись к изменившемуся железу?
Размер применительно к компьютерной программе — весьма размытое понятие. Если в «офлайне» существует несомненная твёрдая единицы длины, применением которой можно сравнивать различные объекты, то в виртуальности такой единицы нет. Как измерить длину (она же в данном случае «объём», она же и «вес») куска кода? Многие предлагают отталкиваться от количества строк (LOC — lines of code), но даже на одном языке программирования один и тот же отрывок можно записать сильно по-разному. Та же ерунда с байтами: программы практически всегда упакованы архиваторами, так что мы не знаем их истинного размера: ну сколько на самом деле байт в 200 мегабайтах инсталлятора LibreOffice? А ведь есть ещё измерительные единицы более высокого уровня — вроде функциональных точек и прочего (полезных для сравнения не просто длины, а сложности софта).
Короче говоря, обсуждая критерий размера применительно к программному обеспечению, есть смысл ограничиться общей качественной оценкой, нарисовать тенденцию. А это как раз сделать очень просто: размер среднестатистической программы для ПК последнюю треть века менялся только в одном направлении — вверх!
Первые модели IBM PC имели в BIOS функции работы с магнитофоном: магнитной ленты — вмещавшей десятки, сотни килобайт — было достаточно для хранения софта. Потом пришли магнитные диски, и случился скачок на порядок — мегабайты. Компакт-диски обозначили следующий виток — сотни мегабайт. И сегодня, наконец, физические носители заменила Сеть, а вместе с этим размер дистрибутивов скакнул ещё на порядок, в гигабайтную область. В принципе, топовые мобильные устройствам справляются — и хорошие мобильные игры вполне себя «весят» поболее гигабайта, хоть та же Android, например, пока смущается качать их через сотовую сеть. Но что занимает этот объём? Нельзя ли вернуться к килобайтным программам или хотя бы к программам размером в единицы мегабайт?
У этого смешного вопроса на самом деле очень серьёзное продолжение, поэтому попробуйте на него ответить. Игры отметём сразу — как особый случай: там графика, видео, там гигабайтные размеры оправданы. Но что занимает миллионы и миллиарды байт в неигровых программах — вроде тех же офисных пакетов, графических редакторов?
Сколько-то процентов отдано текстам, сколько-то порождено оптимизацией кода, часть объёма приходится на статически слинкованные библиотеки — которые вообще-то можно было оставить снаружи, но размером пожертвовали ради удобства. В любом случае всё это занимает лишь какую-то часть дистрибутива, основная же масса кода содержит собственно функционал. Даже один человеко-год программистского труда выливается в мегабайты: активно развиваемый проект обязательно обрастает новыми функциями. Если же бок о бок трудятся десятки или сотни разработчиков, да с разными языками, чистая масса растёт пропорционально быстрей. Вот откуда миллионы новых строк, вот откуда десятки и сотни мегабайт.
Что из этого следует? Резервы по размеру у прикладного софта имеются, но незначительные, поскольку размер неигровой программы зависит прежде всего от её функционала, а мы привыкли к программам, умеющим всё и вся. И вот так, очень естественно, мы приходим к третьему свойству, которое — параллельно с интерфейсом и размером — может измениться после срастания персоналок с мобильными устройствами. Размер, сложность, тяжесть — называйте как хотите — прикладных программ возможно сильно уменьшить, если урезать функциональность. И, значит, вопрос, для чего простому юзеру планшетка, если на ней не работает «Фотошоп», должен на самом деле звучать так: а нужен ли «Фотошоп» 99% рядовых пользователей? Ведь в большинстве случаев наверняка можно обойтись куда менее сложными (читайте: менее функциональными) инструментами. Ну сколько функций и каких потребно простому человеку для обработки снимка в Instagram или «ВКонтакте»?
Компьютерная эволюция сама подталкивает нас к правильному решению. Программы должны стать проще — а значит, меньше и быстрей. Да, они перестанут быть монстрами, которые всё умеют и всё могут, но в этом и нет нужды! Оглянитесь, признайтесь хотя бы себе самому: функционал большинства популярных инструментов для ПК уже чрезмерен! Мы привыкли жить на широкую ногу, сжигая гигагерцы и гигабайты, но, пересев на мобильные устройства и гибриды, от этой привычки откажемся — пусть не безболезненно, зато без последствий для продуктивности.
Размер среднего приложения на платформах iOS и Android измеряется единицами мегабайт. Простота, узкая специализация — их определяющие свойства: и это их преимущества, не недостатки! Они потребляют меньше системных ресурсов, они точней соответствуют решаемым задачам (вспомните знаменитое эппловское «There’s an app for that!»), а кроме всего прочего, они ещё и наверняка более высокого качества — в сравнении с компьютерными монстрами. Это предположение вытекает из эмпирического факта нелинейного роста усилий, требуемых для разработки и поддержания софтверных проектов: количество затрачиваемых человеко-часов растёт непропорционально быстро по отношению к размерам кода. Вероятно, то же справедливо и в обратном направлении: чем меньше код, тем лучше он отлажен.
Так не тратьте время зря, ожидая, пока для планшеток и гибридов появятся аналоги LibreOffice или «Фотошопа». Очень может быть, этого не случится никогда! Правильней будет разбить тот же «Фотошоп» на функциональные примитивы и написать дюжину мобильных приложений, реализующих данные функции по отдельности.
Пока этого не сделал кто-нибудь ещё.