Исторический контекст
Практически весь мир использовал Windows. Доля рынка Windows достигала 95%, плюс-минус несколько процентов в зависимости от источника. Конечно, можно было встретить владельца iMac, который рассказывал о преимуществах своей машины — правда, только если бы для Mac вообще выходили приложения. Были и исключения вроде Linux-дистрибутивов, например Debian, где можно было реально работать[0].
Но это были исключения. Почти каждый пользователь имел компьютер на Windows с процессором Intel или AMD. И у Windows было множество проблем.
Была одна спасительная особенность: компаниям дали только один шанс на выпуск ПО. В определённый момент программа записывалась на дискету или CD, прожигалась в ROM, упаковывалась в коробку и отправлялась покупателям. И эта версия должна была работать «из коробки». Поэтому существовал определённый минимум качества, ниже которого нельзя было опуститься.
Насколько плохо это было?
Вот коллекция воспоминаний с 1990-х годов и позже — не в хронологическом порядке.
Синий экран смерти
Windows имела серьёзные проблемы со стабильностью большую часть детства автора.
Встречайте гимн поколения — Синий экран смерти.
Это был аналог kernel panic в Windows. Случался в самый неподходящий момент — когда вы активно работали или даже ничего не делали. Синий экран был неизбежен.
Компьютер падал по множеству причин. Во-первых, драйверы устройств. Если вы покупали новую периферию, например джойстик, она поставлялась с дискетой или CD с драйверами. Вы их добросовестно устанавливали. Драйверы выполняли ту же функцию, что и сегодня — помогали ОС понять, как работать с оборудованием. Логично предположить: "Подождите, они отправили драйверы на физическом носителе? Нельзя обновить диск после выпуска. Наверно, они тщательно всё проверили?" Нет. Конечно были хорошие драйверы, но в целом они были глючными, и одного плохого драйвера хватало, чтобы дестабилизировать систему.
Сама операционная система Windows тоже имела проблемы с качеством кода и иногда не полностью освобождала ресурсы закрывшихся программ. Компьютер деградировал со временем, пока эта медленная коррозия не приводила систему к падению.
В итоге компьютер просто исчезал — это была норма жизни.
Автосохранение
Знаете, что хорошо сочетается с постоянно падающим компьютером? Приложения без автосохранения. Ещё лучше — приложения с автосохранением, которое не сбрасывает буферизованные данные и портит файлы сохранений.
Частое явление: вы погружались в работу над документом на часы, и вдруг получали либо Синий экран смерти, либо всплывающее окно о критической ошибке приложения. Вы кричали, дважды щёлкали по документу, но было поздно. Приходилось начинать сначала. Правда, была утешительная награда — возможность пожаловаться: "Я РАБОТАЛ над документом ТРИ ЧАСА! А потом компьютер упал и всё пропало. Абсолютно всё. Пришлось переделывать." Всегда находился один занудный тип, спрашивавший: "Почему не сохранял?" Но гневаться было нечего — через две недели это случится и с ним.
Когда автор присоединился к команде Google Docs в 2010 году, для веселья задействовали сочетание клавиш Ctrl+S. Оно ничего не делало, только записывало метрику. Этот shortcut оказался в топ-5 действий пользователей (не считая редактирования), уступая только движению курсора стрелками. Но Google Docs автоматически сохраняет. Люди настолько травмировались годами потери данных, что рефлекторно сохраняли при каждом редактировании.
Никакой безопасности
Когда автор с сестрой были малышами, любили заходить в магазины с демонстрационными компьютерами. На них часто стояли игры, или хотя бы можно было поиграться в Paint или Solitaire.
Однажды встретили компьютеры с защищённой паролем заставкой. Сестра не сдалась. Нажала Ctrl+Alt+Del, выбрала процесс заставки и кликнула "Завершить задачу". Вот так просто. Лучшие умы Microsoft проиграли хакерскому таланту девятилетней девочки.
Вот на таком уровне безопасности находился ваш компьютер. Если вы долго пользовались интернетом, машина накапливала рекламное ПО. При включении начинали валить всплывающие окна с объявлениями, даже без браузера. Приходилось запускать антивирус или посещать сайты, которые сами могли запустить сканирование.
Не забыть про вирусы, которые парализовали интернет один раз в год, делая что-то вроде "добавить макрос в документ Word, отправляющий письма".
Фрагментация диска
Каждый опытный пользователь помнит визит к компьютерно-неграмотному родственнику. В пыльном углу комнаты — древний Windows-компьютер, еле живой. Включение занимает 20 минут.
Вздох: "Дайте я помогу."
Открываешь два приложения. Это займёт примерно 5 минут. Первое очищает кэш и корзину. Второе — Defragmenter.
В те дни жёсткие диски в компьютерах Wintel имели вращающиеся магнитные пластины. Привод имел выдвижную головку с магнитным считывателем — данные читались путём позиционирования головки и ротации диска к нужному сектору.
Но по мере добавления файлов эта тетрис-игра нарушалась. Файл не помещался целиком между началом одного и началом следующего. Результат — файл оказывался в двух или более местах на диске. Это называлось фрагментацией. Небольшая фрагментация была неизбежна, но при росте её количества компьютер замедлялся, пока не требовался 20 минут на загрузку.
Большинство современных файловых систем, включая Windows, автоматически дефрагментируют в фоне. Но раньше нет. Пользователи должны были вручную запускать дефрагментацию.
К тому времени, когда автор пошёл в колледж, выяснилось, что Windows имеет планировщик. Он просто оставил компьютер включённым и позволил дефрагментироваться в 5 утра.
Феноменальная космическая мощь в крошечной памяти
Приложения работали с серьёзными ограничениями по памяти, поэтому программисты экономили биты и байты везде, где только можно.
Это должно было быть невидимо, но оно было видимо.
Был какой-то плохой компьютерный вариант игры Axis and Allies 1998 года. Представьте Risk, но Вторая мировая война. ИИ был ужасен и легко побеждался. Но у игры был критический баг: если в стране было больше 255 единиц, игра полностью падала. А ИИ любил закапываться, поэтому часто имел территорию со ста и более юнитами, невозможной для разгрома. Из-за этого выбора разработчика игра превращалась в гонку — уничтожить врага до того, как он создаст стопку, вызовет краш и выиграет.
Это происходило постоянно. На первом уроке программирования в старших классах один из предметов был "вот почему вы узнаёте числа типа 128, 256 и может быть 65536".
ПО шло на ненадёжных физических носителях
Даже если ПО работало идеально, можно было поцарапать игровой CD и потерять возможность играть. Приходилось просить у друзей запасной диск Red Alert, чтобы доиграть кампанию.
Это касалось не только CD. Любой физический носитель мог деградировать. У сводного брата была игра на NES под названием Dragon Warrior, но картридж был повреждён — нельзя было выйти из первой комнаты. Даже если беречь игры, контакты внутри приставки, соединяющие картридж, могли окислиться и выйти из строя. Это происходило постоянно.
"Но это же оборудование, а не ПО." Факт в том, что ПО было хрупко и требовало защиты и сохранения. У вас не было выбора между физическим диском и онлайн-установкой — по природе дистрибуции ПО деградировало и разрушалось.
Онлайн-игры полагались на честное поведение
Одна из первых онлайн-игр, в которые играл автор — Diablo II, что позволило увидеть истинную тьму в сердце человечества.
Онлайн-игры имеют странную проблему: игроки часто не хотят быть вместе, они просто сосуществуют. А Diablo II имела много механик, способствующих хаосу:
- Массово использовались взломы на клиенте. На PVP серверах люди использовали читы, например чтобы пускать отслеживающие стрелы намного дальше положенного.
- Все дропы были доступны всем на сервере. Когда вы близки к убийству боса, партнёры становились соперниками и спамили клик, когда босс появлялся.
- Если у вас был труп и вы умирали снова, теряли всё оборудованное. Люди пытались заполнить ваш инвентарь дешёвыми предметами, надеясь, что вы случайно подберёте обычные вещи перед трупом. Затем вы пытались поднять труп и не получали всё. Тогда они убивали вас второй раз.
- Множество дублирующих багов с предметами, что разрушало экономику игры. Это позволяло массовые скамы — предлагали совет по дублированию, но на одном шаге просили выбросить предмет на землю, после чего скаммер его забирал.
- Системы гильдий не было, но люди всё равно создавали гильдии. Это значило, что не было надёжного способа идентифицировать гарантированных союзников.
Многое было исправлено к Diablo III. Добавили защиту от дублирования предметов. Боссы дают личный дроп, так что нет конкуренции. Не нужно выбирать трупа, рискуя потерять предметы. Это были трудные уроки.
Кнопка Turbo
Автор начал пользоваться семейным компьютером примерно в 1990 году, когда научился читать. Это был бежевый 286 на столе с монитором сверху. 5,25" дискета, кнопка питания, кнопка reset и кнопка TURBO. TURBO должна была игнорироваться, но можно было нажать её, чтобы замедлить процессор.
Зачем? IBM-ские первые десктопы работали на 8088 с частотой 4,77MHz[2]. Это быстро изменилось. Но проблема была в том, что многие программисты писали приложения с предположением о 4,77MHz. Они синхронизировали анимацию, частоту кадров в играх, полагались на фиксированную частоту. На более быстром процессоре такие приложения становились неиспользуемы.
Производители придумали простое решение: добавить TURBO, который замедляет процессор по требованию. Столкнулись с приложением с проблемами времени — нажимаете TURBO и смотрите, как оно замедляется до комфортной скорости.
Автор никогда не нажимал эту кнопку в сердитом состоянии. Насколько известно, большинство приложений, которым помогала TURBO — это были игры, а они играли только в новые образовательные, без проблем со временем. При редактировании несколько раз думал удалить этот раздел. Но представьте кнопку "Original iPhone" на iPhone, чтобы Notes работал нормально. Уж нет.
Современное ПО не идеально
Современное ПО не идеально. Оно раздутое. Оно медленное. Написано слишком многими людьми. Оно сложное. Слишком много поваров в кухне. И теперь мы теряем понимание того, как оно работает под капотом, поскольку всё больше доверяем агентам.
Но вернуться к старым способам написания ПО — нет. Дайте изоляцию процессов и онлайн-обновления. Дайте языки высокого уровня, которые абстрагируют распространённые ошибки C и C++. Дайте разработчикам игр, которые используют системные часы для времени. Дайте Steam и Windows Update. Можете оставить старый процесс выпуска, который отошёл в прошлое.
Сноски
[0] Из воспоминаний о попытке установить Debian в старших классах: самое популярное приложение на Linux было то, которое могло редактировать XF86Config.
[2] Мегагерцы, не гигагерцы!