В данном материале представлен глубокий аналитический разбор беседы между популяризатором науки Лексом Фридманом и легендарным инженером Джеймсом Гослингом, создателем языка программирования Java. Собеседники погружаются в историю вычислительной техники, обсуждая эволюцию архитектурных решений, философию открытого исходного кода и скрытые механизмы управления технологическими гигантами. Диалог раскрывает не просто вехи развития ИТ-индустрии, но и фундаментальные этические дилеммы, стоящие перед современными разработчиками.
📐 Красота математики и несовершенство систем 4:35
Разговор начинается с обсуждения внутренней эстетики точных наук. Джеймс Гослинг признается, что в юности считал себя способным к математике, однако с годами его восприятие изменилось. Будучи подростком, он прочитал и практически полностью запомнил книгу «Словарь курьезных и интересных чисел» (The Dictionary of Curious and Interesting Numbers), что развило у него привычку подгонять суммы в чеках или квитанциях под математически интересные значения.
Особое место в беседе занимает обсуждение иррациональных чисел, в частности квадратного корня из двух ($\sqrt{2}$). По словам Джеймса Гослинга, это единственное число, которое смогло разрушить религиозный культ. Пифагорейцы верили в абсолютное совершенство мира и в то, что любое явление можно выразить через рациональную дробь. Открытие доказательства иррациональности $\sqrt{2}$ продемонстрировало, что их определение совершенства было ошибочным.
В контексте математической логики собеседники затронули теорему Гёделя о неполноте, которая в XX веке вновь пошатнула веру в абсолютную строгость систем. Однако Джеймс Гослинг предлагает оптимистичную интерпретацию этого академического кризиса:
- Традиционный подход требует от нас жестких черно-белых ответов («истина» или «ложь»).
- Если же мы вводим трехзначную логику, включающую состояния «истина», «ложь» и «возможно», жизнь становится значительно комфортнее.
Разработчик проводит параллель между математической красотой и программированием. С его точки зрения, написание кода — это поиск кратчайшего пути в графе потенциальных возможностей для решения конкретной вычислительной задачи. При этом процесс часто оказывается хаотичным и интуитивным. Джеймс Гослинг вспоминает своего сокурсника по аспирантуре Джима Сакса, который обладал репутацией «живой машины для доказательства теорем». Его можно было остановить в коридоре с неразрешимой задачей, после чего Сакс замирал, его взгляд дефокусировался, и через мгновение он выдавал точный ответ (например, $O(n \log n)$), оставляя коллег самостоятельно искать путь к этому решению.
👁️ Визуальное мышление и битва за чистоту кода 11:11
Важной частью инженерной практики Джеймса Гослинга является способность верифицировать работоспособность кода путем его визуального анализа. На этой почве у него регулярно возникали разногласия с коллегами по поводу форматирования программных документов. В то время как большинство инженеров требуют строгого соблюдения стандартов переноса строк и расстановки фигурных скобок, создатель Java предпочитает максимально плотную верстку.
Свои предпочтения он объясняет следующими факторами:
- Минимизация пустого пространства: Плотный текст позволяет увидеть всю функцию целиком на одном экране.
- Исключение прокрутки: Отсутствие необходимости постоянно скроллить документ снижает когнитивную нагрузку и позволяет не удерживать лишние детали в оперативной памяти.
Джеймс Гослинг признается, что не слишком хорошо мыслит вербально и читает медленнее большинства людей. Он относит себя к категории визуальных мыслителей. При анализе листинга программный код в его сознании мгновенно трансформируется в пространственную картину, напоминающую сложный механический агрегат соединенный шестернями, рычагами и переключателями. Именно целостный визуальный образ помогает ему мгновенно определять точки входа, выходы и общую логику работы компонента. Защищая свой подход, Гослинг с иронией вспоминает, как инженерные команды неоднократно устраивали ему «коллективные интервенции», пытаясь заставить его изменить персональный стиль кодинга.
💾 Эпоха PDP-8: создание миров из ничего 14:40
Вспоминая истоки своей карьеры, Джеймс Гослинг описывает архитектурные рамки первого компьютера, на котором он учился программировать в Университете Калгари — мини-компьютера PDP-8. Технические характеристики этой машины сегодня выглядят невероятно скромно:
- Объем оперативной памяти: 4 КБ.
- Разрядность слова: 12 бит.
- Тактовая частота процессора: Приблизительно 0,33 МГц (около трети мегагерца).
Машина занимала задний угол университетского компьютерного центра и изначально приобреталась для исследовательского проекта в области компьютерных сетей. Поскольку система большую часть времени бездействовала, молодой Гослинг начал самостоятельно осваивать ее архитектуру. Пользовательский интерфейс того времени полностью отличался от современного: вместо мониторов использовался телетайп модели Model 33 Teletype и устройство для чтения перфолент. Это был один из первых компьютеров, построенных на интегральных схемах, однако под «интеграцией» тогда понималось размещение всего 10–12 транзисторов на одном кристалле кремния.
Для Джеймса Гослинга программирование стало идеальным способом созидания. В условиях хронического дефицита денег на покупку физических компонентов (дерева, проводов, радиодеталей) виртуальная среда предоставляла неограниченные возможности для проектирования систем любой сложности без каких-либо материальных затрат. Доступа к компьютеру было достаточно, чтобы конструировать целые миры. Вне лаборатории будущий создатель Java занимался «дампстер-дайвингом» — искал выброшенное электронное оборудование на свалках телефонных компаний. Его главным трофеем стали списанные стойки с реле, из которых он собрал полностью механическую машину для игры в крестики-нолики. Из-за отсутствия подходящего блока питания реле работали под опасным напряжением в 300 вольт, а все соединения оставались неизолированными, что Гослинг сегодня вспоминает с содроганием.
Первыми языками, которые он освоил на PDP-8, были низкоуровневый ассемблер и Focal 5 (упрощенная интерпретация Fortran). На них он создавал программы для игры в блэкджек, пасьянсы, а также алгоритмы для построения математических графиков, которые выводились текстовыми символами на бумажную ленту телетайпа. Позже, по мере профессионального роста, в его арсенал вошли PL/I, Fortran, COBOL и ассемблер для суперкомпьютера CDC 6400.
🧬 От магии Lisp к прагматике Simula 23:59
Анализируя фундаментальные языки программирования, оказавшие влияние на индустрию, Джеймс Гослинг выделяет Lisp и Simula. По его мнению, Lisp безоговорочно входит в пантеон величайших языков в истории вычислительной техники. Главным его недостатком инженер называет избыточное количество круглых скобок, однако подчеркивает, что именно за этой синтаксической особенностью скрывается уникальная, концептуально чистая языковая структура. Гослинг признается, что всегда верил в существование более дружелюбной версии Lisp, но сам не уделил этой идее достаточно времени.
Следующей важной ступенью эволюции для него стал язык Simula (в частности, спецификация Simula 67). Гослинг напоминает, что именно в нем впервые соединились концепции объектно-ориентированного программирования и механизм сопрограмм (co-routines).
- Сопрограммы позволяли реализовать ментальную модель многопоточности и параллелизма без истинной конкурентности вычислений.
- Подобная архитектура избавляла разработчика от необходимости проектировать сложные блокировки и семафоры, хотя и не позволяла эффективно утилизировать ресурсы современных многоядерных процессоров.
📝 Рождение Gosling Emacs и анархия раннего Arpanet 27:17
В середине 1980-х годов, во время обучения в Университете Карнеги — Меллона (CMU), Джеймс Гослинг создал собственную реализацию текстового редактора Emacs, вошедшую в историю как Gosling Emacs. Основной мотивацией для написания этого инструмента послужило несовершенство стандартных средств редактирования в операционной системе Unix того времени. Основным редактором в Unix тогда был ed (прямой предок vi), который Гослинг считает крайне неудобным для интерактивной работы. Альтернативой в экосистеме DEC выступал редактор TECO (Text Editor and Corrector), чей макроязык отличался запредельной сложностью. Программы на TECO, по образному выражению Гослинга, выглядели как случайный набор символов или линейный шум в канале связи.
Оригинальный Emacs зародился в MIT именно как набор макросов для TECO (само название расшифровывается как Editor Macros). Позже появились независимые реализации. Гослинг впервые столкнулся с Emacs, написанным на Maclisp Берни Гринбергом, во время летней подработки над компилятором Pascal для операционной системы Multics. Осознав превосходство этого визуального интерактивного подхода, Гослинг вернулся в CMU и обнаружил, что в среде Unix аналогов нет. За два месяца он написал собственную версию Emacs на языке C, поскольку C был единственным жизнеспособным инструментом в Unix-среде. Программа получилась настолько удачной, что уже через месяц Гослинг использовал её для редактирования её собственного исходного кода.
Благодаря распространению Unix в научно-исследовательском сообществе и развитию сети Arpanet, Gosling Emacs быстро стал доминирующим редактором. В ту эпоху вопросы информационной безопасности практически никого не волновали. Джеймс Гослинг вспоминает, что у него были персональные идентификаторы для входа (login IDs) практически на каждом гражданском и исследовательском хосте в сети Arpanet, поскольку администраторы часто просили его зайти удаленно и помочь с установкой или настройкой редактора.
Жизнь в раннем Arpanet была тесно переплетена с социальными коммуникациями. Задолго до появления мобильной связи и коммерческого интернета ученые координировали свои действия, договаривались об обедах и свиданиях через электронную почту и мгновенные текстовые сообщения. Когда годы спустя произошел взрывной рост социальных сетей, для Гослинга это не стало откровением — он воспринимал происходящее лишь как масштабирование тех процессов, в которых участвовал с начала 1980-х.
📺 Война за «глазные яблоки»: как корпорации сопротивлялись интернету 35:11
В начале 1990-х годов процесс масштабирования интернета столкнулся со скрытым, но ожесточенным сопротивлением со стороны традиционных бродкастеров, телефонных и кабельных телевизионных компаний. Джеймс Гослинг раскрывает глубинную экономическую причину этого конфликта. Рядовые сотрудники кабельных сетей искренне считали своим долгом доставку качественного контента потребителям. Однако на высших уровнях корпоративной иерархии бизнес-модель виделась иначе:
«Суть кабельного телевидения всегда заключалась в том, чтобы захватить глазные яблоки зрителей и продать их рекламодателям».
Интернет представлял прямую угрозу этой модели, поскольку лишал корпорации монополии на вещание. В начале 1990-х годов команда Sun Microsystems подготовила и направила операторам кабельных сетей детальное коммерческое предложение. Инженеры Sun доказывали, что на базе интернет-технологий абсолютно любой субъект — от рядового пользователя, желающего показать домашнее видео родственникам, до локального продуктового магазина или ресторана — может стать полноценным издателем контента. Руководство кабельных компаний ответило категорическим отказом, поскольку осознавало, что децентрализация публикации уничтожит их традиционный бизнес.
Гослинг констатирует, что крупные корпорации, получающие сверхприбыли в рамках устоявшихся моделей, органически неспособны своевременно совершить технологический скачок (перешагнуть пропасть). В качестве примера он приводит компанию Kodak, которая была крупным клиентом Sun. Kodak обладал сильными исследовательскими группами в области цифровой фотографии и прекрасно видел графики трендов, указывающие на неизбежное пересечение линий качества пленки и цифровых матриц в будущем. Они знали, что их пленочный бизнес обречен на коллапс, но продолжали удерживать старую модель, так как она приносила колоссальные деньги в текущем моменте.
Основным барьером для инноваций в публичных компаниях, по мнению Гослинга, является необходимость ежеквартальной отчетности. Переход к новой технологической парадигме всегда сопряжен с падением финансовых показателей в течение одного или нескольких кварталов. Генеральный директор публичной корпорации не может позволить себе пойти на такой шаг, поскольку будет немедленно смещен акционерами. Исключением становятся лишь компании с «терпеливыми деньгами», возглавляемые харизматичными лидерами с огромными пакетами акций, такие как Amazon или Tesla в их ранние периоды, способные долгое время игнорировать давление фондового рынка ради удержания долгосрочной стратегии.
👥 Культ жесткого руководства: Стив Джобс и мифы Кремниевой долины 48:45
Обсуждая лидеров индустрии, таких как Илон Маск, Джефф Безос и Стив Джобс, Джеймс Гослинг отмечает их визионерские качества, но подвергает критике деструктивные методы управления. По его словам, Стив Джобс обладал уникальным пониманием глубокой взаимосвязи между человеком и окружающими предметами, но при этом оставался крайне тяжелым в общении человеком. Джобс регулярно кричал на подчиненных и оскорблял их.
Гослинг категорически не согласен с мифологией Кремниевой долины, согласно которой жесткость и агрессивное поведение лидера являются необходимым условием для достижения успеха:
- Искаженное восприятие: Из примера Стива Джобса многие начинающие предприниматели делают ложный вывод: «Чтобы победить, я должен стать тираном».
- Альтернативная реальность: Существует множество успешных руководителей высокого уровня, которые остаются порядочными и мягкими людьми в личной коммуникации, однако они реже попадают в заголовки прессы. В качестве примера позитивной корпоративной культуры Гослинг приводит основателей Google Ларри Пейджа и Сергея Брина, а также Сундара Пичаи.
Инженер также критикует популярную в ИТ-индустрии парадигму «работай умно, а не тяжело» (work smart, not hard). Он утверждает, что этот лозунг чаще всего служит оправданием для банальной лени. Прорывные результаты требуют одновременного выполнения обоих условий: необходимо работать максимально эффективно и тратить на это колоссальное количество времени и сил.
🔓 Парадоксы Open Source: между Stallman и коммерцией 58:52
Джеймс Гослинг называет себя убежденным сторонником концепции открытого исходного кода (Open Source), признавая ее колоссальную роль в построении профессиональных сообществ и совместной разработке систем. Однако он не разделяет радикальную позицию Ричарда Столлмана, превратившего свободное ПО в догматическую религию. По мнению Гослинга, абсолютизация лозунга «вся информация должна быть свободной» фактически принуждает разработчиков программного обеспечения и создателей цифрового контента принимать негласный обет бедности, лишая их законного права на монетизацию своего труда и обеспечение семей.
Разработчик описывает прагматичный компромисс, на который он пошел в свое время при передаче прав на Gosling Emacs. Осознав, что сопровождение редактора отнимает все силы и мешает защите диссертации, он передал код сторонней команде в Нью-Джерси с жестким условием: инструмент должен оставаться абсолютно бесплатным для университетов и образовательных учреждений, но может продаваться на коммерческой основе бизнесу. Этот шаг вызвал резкое осуждение со стороны идеологов свободного ПО, однако позволил сохранить проект. Позже оригинальный код Gosling Emacs лег в основу GNU Emacs Ричарда Столлмана.
Гослинг указывает на важность баланса между хищническим капитализмом и полным альтруизмом. С его точки зрения, крупные корпорации нуждаются в коммерческих контрактах на поддержку открытого ПО для соблюдения стандартов отчетности (например, закона Сарбейнса — Оксли). При этом существует колоссальная разница между умеренной стоимостью услуг поддержки в экосистеме независимых open-source баз данных и агрессивной, ультимативной ценовой политикой корпорации Oracle.
☕ Рождение Java: от кухонных приборов к глобальному доминированию 1:10:32
История создания Java началась в Sun Microsystems в 1990 году, когда небольшая группа инженеров осознала, что компьютерная индустрия упускает из виду колоссальный формирующийся рынок. За пределами традиционных ПК начинался бум микропроцессорной техники: чипы внедрялись в сотовые телефоны, лифты, локомотивы, заводские системы автоматизации, аудио- и видеоаппаратуру.
Чтобы понять специфику этого рынка, Гослинг и его коллеги отправились в длительные командировки:
- Азия: Посетили офисы Toshiba, Sharp, Mitsubishi, Sony в Японии и Samsung в Южной Корее.
- Европа: Изучили опыт заводов Philips, Siemens и Thomson.
В ходе этих визитов Гослинг обнаружил, что производители потребительской электроники пытаются самостоятельно изобретать компьютерные сети, совершая ровно те же 25 фундаментальных ошибок, которые компьютерная наука уже прошла и преодолела два десятилетия назад. В то же время они извлекли важный урок: для этих компаний безопасность и надежность техники были священны. Они никогда не шли на компромиссы в надежности ради мимолетного выигрыша в производительности, что в корне отличало их от компьютерной индустрии того времени, где надежностью регулярно жертвовали ради скорости работы. В качестве примера сомнительных компромиссов Гослинг приводит суперкомпьютеры Cray, где ради ускорения операций деления применялись аппроксимации Ньютона — Рафсона, из-за чего младшие биты результата фактически являлись случайными числами.
Вернувшись, команда решила создать прототип устройства управления домашней электроникой (проект Oak, названный в честь дуба за окном Гослинга). В процессе написания софта на C++ разработчики уперлись в ограничения существующих языковых стандартов.
🪓 Проклятие указателей и архитектура JVM 1:17:33
Главным уязвимым местом C и C++ в начале 1990-х годов (как и 30 лет спустя) являлась работа с так называемыми «голыми» указателями (naked pointers). Прямой доступ к памяти приводил к постоянным утечкам (storage leaks), ошибкам обращения к уже освобожденным участкам памяти (free-but-used memory) и переполнениям буфера. По статистике, которую приводит Гослинг, от 60% до 70% всех критических уязвимостей в современных гигантских проектах на C++ (таких как браузер Chrome) до сих пор составляют ошибки некорректной работы с указателями.
Инженер сосредоточился на радикальном решении этой проблемы, руководствуясь принципом: если система дает сбой, она должна упасть незамедлительно и максимально наглядно, а не накапливать скрытые повреждения памяти. Это позволило резко увеличить скорость коммерческой разработки программного обеспечения (developer velocity). Продукты на Java достигали стадии стабильного релиза в два раза быстрее, поскольку программисты не тратили две трети своего рабочего времени на выслеживание неуловимых, спорадических багов памяти.
Кроме того, Java заблокировала возможность использования «черных ходов» (back doors) в обход задекларированных интерфейсов объектной модели. В C++ ленивый разработчик мог напрямую обратиться к приватным структурам чужого компонента, что неизбежно ломало систему при обновлении модулей. Java жестко пресекла эту практику на уровне синтаксиса и архитектуры среды исполнения.
Для обеспечения истинной кроссплатформенности была создана Java Virtual Machine (JVM). Ее архитектуру можно рассматривать в двух плоскостях:
- Теоретическая: Представляет собой кодирование абстрактного синтаксического дерева в обратной польской нотации.
- Практическая: Это инструкция для абстрактного процессора, которая может быть легко транслирована в машинный код любой физической архитектуры.
Это решило важнейшую проблему зависимости производителей электроники от конкретного поставщика чипов. В начале 1990-х все процессоры были проприетарными, и написание софта на C намертво привязывало компанию, например, к архитектуре Intel. Отделы закупок ненавидели эту зависимость, так как теряли рычаги давления на поставщика.
Идею JVM Гослинг почерпнул из своей студенческой подработки. В аспирантуре его профессора Радж Редди и Боб Спроул поручили ему перенести программное обеспечение с ранних рабочих станций Perk производства Three Rivers Computer Company на серверы Vax. Архитектура Perk аппаратно исполняла байт-код P-code для языка Pascal. Гослинг написал транслятор P-code в ассемблер Vax. Результат оказался настолько оптимизированным, что написанные таким образом программы работали быстрее, чем код, скомпилированный стандартным компилятором C. Этот опыт лег в основу концепции байт-кода Java и JVM.
В процессе стандартизации платформы Гослингу пришлось выдержать множество технологических войн, в частности, навязав индустрии обязательное использование дополнительного кода (two's complement) для целочисленной арифметики и жесткое следование стандарту IEEE 754 для операций с плавающей запятой. Основные споры велись с Intel, которая в то время ради микрооптимизаций реализовала некорректное округление и ошибочное приведение диапазонов для тригонометрических функций, используя неточное значение числа $\pi$.
📱 Эпоха Android и правовые барьеры 1:43:51
В финальной части беседы затрагивается тема экспансии Java на мобильные платформы и создания операционной системы Android. Джеймс Гослинг отмечает, что Java успешно функционировала на миллиардах сотовых телефонов задолго до появления Android благодаря стандартам J2ME и смарт-картам (включая SIM-карты, которые находятся в кармане у каждого человека).
Комментируя успех Android, Гослинг признает, что рад масштабам распространения технологии, однако жестко критикует действия руководителя проекта Энди Рубина. По словам создателя Java, Рубин сознательно нарушил множество смежных контрактов и перешел юридические границы, что привело к многолетним разрушительным судебным разбирательствам между Oracle и Google. Гослинг подчеркивает, что этих нарушений можно было легко избежать, и для Google было бы значительно дешевле действовать строго в рамках правового поля, поскольку успех платформы был предопределен изначально и не зависел от спорных компромиссов Энди Рубина.
🖖 Философия будущего: выбор между Blade Runner и Star Trek 1:47:11
Размышляя о своем наследии через 500 лет, Джеймс Гослинг выразил надежду, что его пример вдохновит людей не бояться совершать «прыжки веры» и идти на оправданный риск. Он признается, что более половины созданных им проектов потерпели крах и «сгорели», однако даже такие неудачи приносили бесценный опыт. Его главное напутствие молодым инженерам — не бояться совершать глупости на ранних этапах жизни, так как ошибки являются неотъемлемой частью обучения.
При принятии любых долгосрочных технических решений Гослинг рекомендует руководствоваться этическими ориентирами, апеллируя к классической научной фантастике:
«Каждый раз, когда я создаю какую-то технологию, я задаю себе вопрос: какое будущее мы строим? Мир „Бегущего по лезвию“ (Blade Runner) или вселенную „Звездного пути“ (Star Trek)? Я бы определенно хотел жить в мире Star Trek».
Исходя из этой концепции, его идеалом искусственного интеллекта является андроид Дейта из Star Trek, демонстрирующий человечность и высокие этические стандарты, в то время как главным технологическим кошмаром он называет систему Skynet.