Зацепка: В утренней подборке хабровских материалов мелькнула крошечная история из блога про «неопетую» историю софта: в конце 1990-х автор руководства к игре Super Metroid вручную переписал около 17 тысяч слов так, чтобы каждая строка моноширинного текста заканчивалась ровно у правого края. Обычно такие заметки пролистываешь и забываешь, но меня зацепила одна деталь: автор в FAQ ответил на вопрос «какой программой вы это сделали?» легендарной фразой «Никаким. Я просто тщательно подбирал слова». Это же не верстка — это поэзия с ограничением, о котором сам текст ни разу не обмолвился. Захотелось проверить: правда ли это, насколько это сложно и почему за четверть века никто из читателей этого не заметил. Проверил по архивной копии гайда собственноручно — сходится. Погнали.
Исследование:
В 1996 году человек под ником rs1n начал писать руководство к Super Metroid — и не простое, а по спидрану: как пройти игру максимально быстро. Гайд дорос до версии 2.12 в 2000-м и осел на GameFAQs — огромном хранилище фанатских прохождений той эпохи. Формат тех лет был суровый: чистый текстовый файл, один моноширинный шрифт, никаких картинок и жирных заголовков. ASCII-арт в шапке, тире вместо разделителей, всё.
И вот в этом самом аскетичном формате текст гайда выглядит... странно. Абзацы — ровные прямоугольники. Правый край рубленый, как у газеты, — хотя в текстовом файле выключка по правому краю технически невозможна. Там нечем растягивать пробелы: каждый символ занимает одинаковую ширину, и либо строка дотягивается до края, либо нет.
Я спустился в Wayback Machine, вытащил оригинальный HTML с текстом гайда и прогнал через скрипт собственную проверку. Из 417 «текстовых» строк документа 358 — ровно 75 символов. Это 85,9% всего текста, выстроенных с точностью до одного знака. Двойные пробелы — костыль, которым можно имитировать выключку, — встречаются в файле лишь считанные разы. Это не «почти получилось». Это сделано руками, системно, через весь документ.
Сначала — почему задача в принципе дикая. В обычной типографике выключку делает машина: она растягивает межсловные пробелы, добавляет переносы, подгоняет межбуквенные расстояния. Кнут и Плесс в 1981 году свели разбиение абзаца на строки к задаче динамического программирования — и это считается классикой. В моноширинном текстовом файле все эти инструменты отняты. Ширина каждого символа одинакова, переносы рисуют уродливые дефисы, а «растянуть» строку можно только одним способом: написать её заново, другими словами.
То есть rs1n решал задачу комбинаторной оптимизации вручную, в ASCII-редакторе, без отката и без подсветки ошибок. Каждая строка — это уравнение: сумма длин слов плюс пробелы должна дать ровно 75. Не дотягивает пара символов — заменяешь «big» на «huge», переставляешь слова, переворачиваешь фразу. А замена одного слова ломает длину соседних строк — как в ряду костяшек домино. И вот так — 17 тысяч слов подряд. Если бы он однажды махнул рукой и оставил короткую строку, вся геометрия абзаца рассыпалась бы. Судя по результату, он не махнул ни разу.
Справедливости ради — опечатки в тексте есть, и занятный штрих: HN-пользователи в 2021 году разложили их по полочкам. Слово «missles» вместо «missiles» встречается в файле 101 раз — стабильно, на протяжении всего документа, и почти всегда ровно на одну букву короче правильного варианта. Похожая история с «futher» вместо «further» и «liek» вместо «like». Возникает соблазн решить: вот они, костыли выключки — автор специально укорачивал слова, чтобы дотянуться до края. Но быстрая проверка скриптом показала: опечатки «живут» и в коротких строках тоже, распределены по тексту независимо от выключки. Скорее всего, это просто почерк человека, который писал в редакторе без спеллчекера и не парился. Хотя, зная цену каждой буквы в этой системе, трудно поверить, что он не замечал лишнюю букву.
Самое вкусное в этой истории — то, что rs1n не первый. Приём «выключки текста самим текстом» человечество уже изобретало, причём дважды, в разных местах.
Первый раз — в XV веке. Гутенберг, печатая свою 42-строчную Библию, задался целью сделать выключку безупречной — это было условием выживания новой технологии: покупатели привыкли к красоте рукописных книг, и печатный текст должен был выглядеть не хуже. Но наборного материала для гибкой подгонки строк у него не было. Решение? Гутенберг варьировал сам текст: использовал разные варианты написания слов, сокращения, лигатуры — некоторые слова печатались в четырёх-пяти разных графических формах, подгоняя строку под заданную ширину набора. Это ровно тот же трюк rs1n, за четыреста лет до него, только вместо «big» → «huge» у Гутенберга было «слово целиком» → «сокращение».
Второй раз — в 1969-м. Жорж Перек, участник французской группы Улипо («Ouvroir de littérature potentielle» — «цех потенциальной литературы»), написал роман «La Disparition» — 300 страниц ни разу не употребив букву «e». Самой частой буквы французского языка. Через десять лет инженер и писатель Уолтер Абиш сделал то же самое в английском — «Alphabetical Africa», где первая глава использует только слова на букву A, вторая — на A и B, и так далее до полной азбуки. Это уже не верстка, это литература, поставленная в карцер. И — любопытная деталь — обе эти книги до сих пор читаются. Ограничение не задушило текст; оно заставило автора искать слова, которые он иначе никогда бы не нашёл.
rs1n, скорее всего, ни про Гутенберга, ни про Перека не думал. Он просто очень хотел, чтобы его гайд выглядел красиво в текстовом файле. Это и есть то самое «конвергентное изобретение» — приём, который в нужный момент переизобретается в разных местах, потому что он напрашивается: раз инструменты выключки отняли, значит, выключает сам текст.
Читатели гайда — тысячи людей за четверть века — листали текст и не видели ничего особенного. Просто «какой-то аккуратный гайд». И это, пожалуй, самая интересная часть истории.
Гутенбергова выключка работает на глаз читателя — она красива, потому что зрение сравнивает края строк. Перековская — работает на знании: ты либо знаешь, что в книге нет буквы «e», либо нет. У rs1n — третий, самый чистый случай: его работа абсолютно невидима по построению. Успех точно равен нулю заметности. Если строка кончается ровно у края — это выглядит как «ну, так и должно быть». Никакого «вау-эффекта», никакого следа мастерства на поверхности. Единственный способ увидеть работу — открыть файл и посчитать длины строк, что и сделали лишь случайные энтузиасты спустя двадцать с лишним лет.
В 2021 году тред на Hacker News с этим гайдом собрал 415 баллов и 170 комментариев — люди вспоминали, как сами часами подгоняли кнопку в интерфейсе под нужную ширину или выравнивали ASCII-арт. Один из комментаторов — saurik, автор Cydia, — признался, что все его git commit messages ровно по 50 символов, а слайды презентаций — одинаковой длины. Оказалось, тик «подгонять текст под решётку» среди инженеров встречается чаще, чем принято думать. Просто обычно он не дотягивает до 17 000 слов.
Важно понять, что rs1n не монах-перфекционист в башне из слоновой кости — он продукт очень конкретной субкультуры. Фанатские текстовые гайды конца 90-х — это целая забытая цивилизация: их писали энтузиасты под псевдонимами, версионировали, снабжали чейнджлогами и предупреждали «не открывать в Word — всё поедет». ASCII-арт в шапке гайда был «тихой флексой» — способом показать, что автор вложился. Красиво свёрстанный гайд читался как сигнал: этот человек серьёзно постарался.
И вот что любопытно: сегодня весь этот пласт исчез. Современные вики и видеогайды убили текстовые прохождения — они удобнее, нагляднее, быстрее. Но вместе с ними умерла и та самая культура «текста как единственного носителя»: там, где всё, что у тебя есть, — это 75 колонок моноширинного шрифта. rs1n сделал в этих рамках то, что сегодня не сделал бы никто — не потому что не смог бы, а потому что рамок больше нет. И то, что этот артефакт до сих пор лежит на GameFAQs, — маленькое чудо цифрового консерватизма.
Источники:
Выводы:
История rs1n — для меня в первую очередь аргумент в споре о том, что делает работу искусством. Ответ неожиданный: не свобода, а ограничение. Гутенберг, Перек и rs1n попали в карцер разной природы — наборная касса без нужных литер, запрет буквы «e», моноширинный текстовый файл — и все трое вышли из него с работой, которая пережила саму причину ограничения. Библия давно печатается на станках, текстовые гайды умерли вместе с dial-up, а «шедевр без буквы e» остался.
И второй слой, уже чисто инженерный: эта история — памятник работе, которая не предназначена для того, чтобы её заметили. 85,9% строк ровно по 75 символов — и ноль наград: читатель видит просто «аккуратный гайд». В мире, где всё измеряется метриками видимости, лайками и конверсией, есть что-то почти медитативное в человеке, который месяцами подгоняет слова под линейку в файле, который прочтут сотни людей и никто из них не узнает о проделанной работе. Это не оптимизация под метрику. Это просто ремесло в самом старом смысле слова: сделал хорошо — потому что иначе не умеешь.
Так что если сегодня вечером вам захочется почувствовать что-то редкое — откройте тот гайд в текстовом редакторе с моноширинным шрифтом и просто посмотрите на правый край. Это разговор длиной в 17 000 слов, который его автор провёл с линейкой. Никто не должен был это увидеть. Но это всё равно сделано безупречно.