Здравствуйте, уважаемые читатели.
Рады предложить вам одну из самых долгожданных новинок на тему современной веб-разработки - книгу уважаемого Александра Гусева @flancer "Браузер как операционная система для разработки современных приложений". Ниже предлагаем обзорный материал, в котором автор рассказывает о концепции книги, роли больших языковых моделей в современной веб-разработке, об истинных возможностях браузера как рабочего инструмента и о системном понимании Интернета.
Меня зовут Александр Гусев, я профессионально занят в IT уже 25+ лет и до сих пор не выгорел. Веб- приложениями я занимался с самого начала своей карьеры. Поэтому, когда уважаемый @OlegSivchenko , обратив внимание на мою авторскую активность на Хабре, предложил мне написать книгу про JavaScript и фронтенду веб-приложения, я думал недолго и согласился быстро. Как оказалось — поспешил.
Да, у меня есть практический опыт в создании PWA (прогрессивных веб-приложений) с использованием современных платформ (в частности Vue и Quasar). У меня есть даже свой собственный фреймворк - с очень необычной для "ванильного" JS идеей позднего связывания. Но... как изложить это в формате книги так, чтобы читателю было не слишком скучно и даже немножко полезно?
К моменту получения предложения (май, 2025) я уже почти полгода сидел на Plus-подписке ChatGPT, и общение с чатом плотно вошло в мою жизнь. Разумеется, чатик доступно мне объяснил, что мой собственный фреймворк мало кому интересен, подробно описывать другие фреймворки - "всё уже описано до нас". Делать сравнительный обзор различных фреймворков - это нужно обладать либо недюжинным опытом в каждом из них, либо изрядным самомнением. У меня не было ни того, ни другого. Зато был обширный опыт работы в Вебе, начиная с веб-приложений на Lotus Domino под Netscape Navigator. В общем, посовещавшись с издательством, решили, что написать книгу о браузере, как о платформе для построения современных веб-приложений вполне в моих силах.
Почему обычная техническая книга устарела?
Я (вернее, мы с чатиком) довольно быстро накидал(и) первоначальный план книги – получилась карта устройства браузера с детализацией каждой зоны. 13 глав про устройство браузера, асинхронность, работу с данными, сетевые возможности и т.п. Я написал вступление и начал готовить текст первой главы, активно общаясь с чатиком. В какой-то момент я осознал, что являюсь банальным посредником между редактором текста и Моделью.
Я "доставал" информацию из Модели и "укладывал" её в текст удобным для меня способом. Модель знала всё - и про все части браузера, и про асинхронность, и про работу с данными и сетью. Я задавал вопрос и на каждый получал развёрнутый ответ.
- "Ну и для чего нужна книга про браузер, когда всё это читатель может спросить у чатика сам?" - задал я себе давно напрашивавшийся вопрос.
Чего не может большая языковая модель (LLM)?
На тот момент я уже начал потихоньку генерировать код с помощью Моделей и видел, что, при наличии достаточно плотных входных данных в промпте, Модель может сгенерировать вполне работоспособный результат. И вот этот самый "входной промпт" она сама, по своей инициативе, сгенерировать не может - нужен первоначальный толчок от человека.
То есть, Модель без проблем может написать веб-приложение, но просто не знает, какое именно веб-приложение нужно написать. За постановку задачи всегда отвечает человек. Но для того, чтобы сформулировать задачу Модели, человек не только должен понять, чего же он хочет, но и уметь объяснить это Модели.
Раньше, когда API библиотек печатались в "твёрдом виде", разработчики вынуждены были запоминать все детали вызовов, чтобы иметь возможность вызывать нужные библиотеки из своих приложений. Теперь же детали API и способы интеграции сокрыты внутри Модели - нужно лишь знать о существовании этих API.
Человеку стало важно видеть за "деревьями" не просто "лес", а "лес" с высоты птичьего полёта. Широкое понимание среды веб-приложений становится важнее глубокого понимания. Глубину обеспечит Модель - стоит её об этом лишь попросить. Но нужно не только знать, о чём спрашивать, но и знать, как проверить ответ Модели. Отличить правдоподобный ответ от правдивого.
Браузер как операционная среда

Веб-разработка сама по себе — очень обширное поле деятельности - фронт, бэк, разные языки программирования, разные фреймворки, разные протоколы... Но базовым элементом веб-разработки является браузер - сцена, на которой выступают актёры и происходит действие. У меня на глазах эта "сцена" трансформировалась. Если когда-то пользователь мог просто переходить между веб-страницами по гиперссылкам, то теперь в браузере можно запускать 3D-игры с использованием аппаратного ускорения видео.
Я решил, что знание устройства "сцены" и её возможностей является основой для построения современных веб-приложений, и описание этой среды вполне потянет на книгу. Нужно было только выбрать правильный угол подачи материала, чтобы книга не превратилась ни в "Браузер для чайников", ни в "Справочное руководство по инструментам разработчика". Общаясь с чатиком, я несколько раз менял способ подачи материала, чтобы не уйти ни в историю развития браузера, ни превратить книгу в справочник по функциям браузера. Мне, прежде всего, нужно было собрать общую картину браузера, самостоятельно её концептуализировать. В итоге, я обратил внимание на то, что браузер, по сути, является такой же надстройкой над различными операционными системами (Windows, MacOS, Linux, Android, iOS, ...), какой сами ОС являются выступают на различных аппаратных платформах.
Браузер предоставляет исполняемым в нём программам возможность запуска и изоляции процессов, хранения данных, доступ к сети, контроль происхождения, доверие к источнику и т.п. Описание браузера с этой точки зрения, на мой взгляд, очень хорошо соответствовало моим целям - дать читателю надёжную точку опоры для построения современных веб-приложений при подспорье LLM.
Как устроена книга
Браузер, при пристальном рассмотрении — несомненно, вещь очень большая. Поэтому книга разделена на 4 части, каждая из которых описывает браузер с определённой точки зрения. Совмещение всех этих перспектив должно создавать в итоге целостную картину.
Часть I: Рождение клиентской ОС интернета: описание условий, сложившихся в Сети, дающих возможность расценивать браузер как операционную систему (что такое интернет, браузер, веб-страница, состояние и события).
Часть II: Архитектурные контуры: какие подсистемы браузера позволяют рассматривать его, как ОС — и почему (исполнение, взаимодействие, сеть, данные, доступ, защита и наблюдаемость).
Часть III: Механизмы работы: рассмотрение взаимодействия вышеперечисленных подсистем (процессы, изоляция, происхождение, хранилища, сеть, фоновые механизмы и жизненные циклы).
Часть IV: Проявления персональной ОС - почему браузер можно считать персональной операционной системой (автономность, профили, расширения и непрерывность пользовательского восприятия).
Спираль изложения
Но одного лишь рассмотрения предмета с различных перспектив оказалось мало. Я понимал, какую картинку браузера я хотел бы сложить в голове у читателя, но модель сразу обратила моё внимание на то, что читатель бывает разным. Рассказ о браузере для студента должен отличаться от рассказа о браузере для профессионального веб-разработчика.
Поэтому я построил изложение как раскручивающуюся спираль, где в первой части даётся достаточно общее и простое, но полное описание браузера. Там всего 4 главы. Дальше сложность изложения идёт по нарастающей. Предметом рассмотрения остаётся браузер, но детализация изложения возрастает. Во второй части 9 глав, в третьей - 8. При этом браузер, опять же, описывается как единое целое с точки зрения выбранной перспективы, но изложение уже опирается на предыдущие части. В четвёртой части всего 5 глав, но я рассчитываю, что к этому моменту у читателя должна сложиться детальная картинка, на которую опираются главы 4-й части.
В принципе, можно читать каждую часть отдельно - каждая из них описывает браузер целиком. Всё зависит от того, с какой начальной картиной мира вы начали читать эту книгу. Если вы рассматриваете браузер так же, как и я - вы не узнаете ничего нового для себя. Если наши взгляды диаметрально противоположны, вы, скорее всего, не захотите менять свою картину мира (я бы точно не захотел). Но, если вы чувствуете что в названиях глав или в описании книги есть какие-то "крючочки",которые вас цепляют - эта книга для вас. Скорее всего, вы в результате не станете видеть браузер так же, как я, но вы сможете рассмотреть его с другой точки зрения - и уплотнить свою картинку в местах, которые вас «зацепили».
В процессе работы над книгой у меня родилась вот такая публикация - "Когда знаний в избытке", а уже ближе к завершению такая — "Знаний слишком много. Что делать?" Может быть, изложенное в этих публикациях позволит чуть лучше понять, почему выбран именно такой подход к выстраиванию книги.
Практические примеры
Книга представлена как учебное пособие и, наверное, её можно рассматривать и с такой точки зрения - в книге есть примеры, иллюстрирующие идеи, которые я излагаю. Да, можно прямо в браузер загрузить простой код и посмотреть, как работает то, о чём написано в соответствующей главе.

Но я смотрел на них больше как на лабораторные работы - как на базу, которую можно самостоятельно изменять, чтобы лучше понять описываемый эффект или компонент. В конце концов, это же браузер - в нём есть много чего для наблюдения (отладчик, профилировщик, "файл-менеджер", БД клиент, сетевой журнал, диспетчер задач и т.п.). Если непонятно, как пользоваться той или иной функцией браузера - спросите у своей Модели. Задача книги – помочь вам сформулировать вопрос.
Сотрудничество с Моделью
Я не буду скрывать, что текст книги формировала Модель. Да, я использовал ChatGPT как для обсуждения излагаемых в книге идей, так и для их непосредственного изложения. Я несколько раз(не менее трёх) изменял концепцию книги и даже один раз выкинул полностью сформированную первую часть. Про введение я даже не говорю - сколько раз я пытался сформулировать, о чём же я буду писать!
Модель участвовала в обсуждении целей и задач книги, стратегии её создания, планов частей, глав и разделов. Она помогала удерживать целое внутри отдельных составляющих и позволяла заметить их расползание или ненужное взаимопроникновение. Я больше двух месяцев ходил "по кругу" рука об руку с Моделью, пытаясь понять, что же я могу и хочу рассказать про браузер, а в целом работа над книгой заняла больше полугода.
По большому счёту, именно плотное взаимодействие с LLM позволило мне сформировать у себя вголове тот образ, который я и изложил в книге "Браузер как операционная система дляразработки современных приложений". Насколько этот образ соответствует действительности?Ну, это не мне судить, а вам.
Лично мне, в целом, этот образ нравится - хоть я даже и не думал о браузере в таком ключе, когда приступал к этому проекту.
Что получает читатель

Я не могу сказать, что получите именно вы, прочитав эту книгу. У каждого из вас своя картина мира и книга по-разному подействует на каждого из вас. Я могу лишь сказать, что я попытался в неё вложить.
Я хотел рассказать о браузере как о мастерской, в которой я чувствую себя свободным. Я помню как Atari и Commodore проиграли Apple Macintosh и IBM PC, как OS/2 была выбита MS DOS + Windows, я помню взлёт и падение Sun и её OS Solalris, я помню "браузерные войны" - Netscape, IE, Chrome(ium). В ИТвсегда была жёсткая конкуренция и конкуренты, давшие слабину, очень быстро покидали сцену.
Но в результате браузер превратился в платформу, которая позволяет создавать приложения не только для разных операционных систем (Windows, macOS, Linux), но и для разных аппаратных платформ (десктопные компьютеры, ноутбуки, планшеты, смартфоны). Можно создать веб-приложение, которое одинаково успешно будет работать и в iPhone, и в Android, и на китайском ноутбуке.
Всё, что нужно - попросить об этом Claude Code или Codex. Нужно только знать, что именно попросить. Вот об этом я и постарался рассказать.