
Мой брат получил в подарок компьютер Digi-Comp I. Я был им очарован, но никак не мог разобраться в инструкциях. Позже он получил Digi-Comp II — механический компьютер, использующий шарики для двоичной арифметики. Вот его я понял — и был заворожён тем, как шарики, скатываясь по желобам, могут складывать числа.
Это воспоминание Уолтера Брайта о первом соприкосновении с вычислительными машинами. Не с программным кодом, не с терминалом — с механическими шариками, выполняющими арифметику. Инженерное мышление началось здесь.
Отец служил в ВВС, и однажды взял меня на работу и провёл в машинный зал. Программисты запрограммировали компьютер играть музыку простыми тонами. Я не поверил и обвинил их в том, что у них там спрятан магнитофон. Они засмеялись, сняли крышку с машины размером с пару холодильников — и показали мне электронные платы.
Уолтер Брайт самостоятельно научился программировать по программам из книги BASIC Computer Games. Он окончил Caltech в 1979 году с дипломом бакалавра по механической инженерии и дополнительной специализацией по авиационной инженерии.
Калифорнийский технологический институт — одно из технически сильнейших учебных заведений мира. Основная специальность — механика, а не компьютерные науки. Брайт пришёл к программированию через физическое мышление: шестерни, аэродинамика, системы.
Ещё в университете он написал военную игру Empire для мэйнфрейма PDP-10.
«Я научился программировать, написав Empire. Там допущены все ошибки, которые только может сделать программист. Многие мои друзья смотрели на код и предлагали техники, которые могли бы улучшить его — например, таблицу поиска вместо случайной логики. Я также изучил объектно-ориентированное программирование, читая исходный код ADVENT на Фортране — хотя термин ООП не слышал ещё, наверное, лет десять».
Empire — одна из первых стратегических компьютерных игр, написана в 1971–1977 годах на PDP-10.
Empire называют «Варгеймом века». Это пошаговая стратегия, в которой игрок строит армии, флоты и воздушные силы, захватывает города и ведёт войну на случайно генерируемой карте. Механика, опередившая своё время: большинство элементов, которые позже стали стандартом жанра 4X (исследование, расширение, эксплуатация, уничтожение), присутствовала в Empire ещё на рубеже 1970-х.
«Я иногда играю в Empire, но всегда заканчиваю тем, что перепроектирую компьютерный ИИ в уме вместо того, чтобы играть по-настоящему. Иногда начинаю играть в видеоигру, но начинаю думать о том, как она запрограммирована. Когда я смотрю на шахматы, я не могу не думать о том, как написать программу для игры в шахматы».
После Caltech последовало неожиданное — для будущего создателя компиляторов — место работы.
После выпуска Брайт три года работал в Boeing, участвуя в системах управления полётом самолёта Boeing 757.
Он проектировал редукторы для 757. Параллельно программировал игры — и, пытаясь ускорить Empire, заинтересовался компиляторами.
Связь нелинейная, но органичная: инженер, привыкший думать о системах — о том, как части взаимодействуют, как оптимизировать узел, как добиться надёжности — приходит к компиляторам теми же путями, которыми приходит к конструкциям. Компилятор — это тоже система. И она должна работать быстрее, чем конкуренты.
Несмотря на отсутствие опыта, Брайт в 1982 году взялся за реализацию компилятора, который бы генерировал лучший код, чем доступные на рынке. Эта работа материализовалась в компилятор C, за которым последовали компиляторы для C++, Java и JavaScript.
До разработки компилятора C++ он создал компилятор Datalight C, также продававшийся как Zorland C и позже Zortech C.
Ключевое слово — «несмотря на отсутствие опыта». Не имея академического образования в области компиляторостроения, он просто взял и построил компилятор — потому что хотел, чтобы его программы работали быстрее. Инженерная логика: если существующего инструмента недостаточно, сделай лучший.
Zortech C++, первый нативный компилятор C++, был выпущен в 1988 году.
Брайт был главным разработчиком компилятора Zortech C++ (позже Symantec C++, теперь Digital Mars C++) — первого компилятора C++, транслирующего исходный код непосредственно в объектный код без использования C в качестве промежуточного языка.
До Zortech существовала принципиально другая архитектура. Компилятор AT&T под названием «cfront» транслировал C++ в C — и затем C-компилятор порождал объектный код. Это работало, но было медленным и ограниченным: многие низкоуровневые оптимизации оказывались недоступны через промежуточный слой.
Методы, освоенные при создании Zortech, повлияли на последующее развитие компиляторов в части стратегий нативной генерации кода.
Zortech C++ — первый и до сих пор единственный компилятор C++, написанный одним человеком. Это не просто технический факт — это свидетельство масштаба задачи. Компилятор C++ — один из наиболее сложных инженерных проектов в программировании. Сделать его в одиночку означало держать в голове одновременно синтаксический анализатор, систему типов, семантику шаблонов, генератор кода и оптимизатор.
После Zortech бренд компилятора менял названия вместе с корпоративными изменениями.
Zortech C++ позже стал Symantec C++, теперь — Digital Mars C++.
Брайт — основатель Digital Mars, компании, через которую он продолжал разрабатывать компиляторы и другие инструменты.
В середине 1980-х годов Брайт перешёл к разработке компиляторов, создав реализации для языков C, ABEL (языка описания аппаратуры с примерно 50 000 пользователей), Java и DMDScript.
«После создания компиляторов для Pascal, C, C++ и Java у меня накопилось много идей о том, как должны работать языки программирования. Мне надоело быть просто ещё одним программистом, жалующимся на существующие языки, — я хотел сделать что-то позитивное. У меня было время и всё необходимое для создания нового языка, так что отговорок не было».
Уолтер Брайт начал разработку языка программирования D в конце 1999 года, задумав его как преемника C и C++, который устранял бы сложности и несоответствия, накопившиеся в C++ со временем, сохраняя эффективность, низкоуровневый доступ к аппаратуре и алголоподобный синтаксис.
Первый публичный альфа-выпуск D появился в 2001 году, версия 1.0 была финализирована и выпущена в январе 2007 года после многолетнего итеративного совершенствования.
Уолтер Брайт — создатель и первый реализатор языка программирования D. Он является экспертом во всех областях технологии компиляторов: фронтенды, оптимизаторы, генерация кода, движки интерпретаторов и библиотеки времени исполнения.
Язык D интегрирует производительность языка C с современными возможностями, такими как сборка мусора и опциональная безопасность памяти через аннотацию @safe, которая применяет проверки времени компиляции для предотвращения небезопасных операций — например, неправильного использования указателей.
Уолтер Брайт — BDFL языка программирования D и основатель Digital Mars.
Аббревиатура BDFL расшифровывается как «Benevolent Dictator For Life» — «Благожелательный диктатор на всю жизнь». Это неформальный, но устойчивый титул в мире открытого программного обеспечения: так называют основателя языка или проекта, сохраняющего окончательное слово в архитектурных решениях. У Python — Гвидо ван Россум. У D — Уолтер Брайт.
Около 2014 года Facebook нанял Брайта для написания Warp — быстрого препроцессора C/C++, написанного на языке D.
«Написание компилятора во многом похоже на написание игры — цель состоит в том, чтобы генерировать лучший код, чем у конкурентов!»
Эта фраза лучше любого резюме описывает Уолтера Брайта. Он пришёл в программирование через игры, в компиляторы — через желание ускорить игру, в языковой дизайн — через усталость от чужих компромиссов. Каждый следующий шаг был логическим продолжением предыдущего.
Механик из Caltech, проектировавший редукторы для Boeing 757 и параллельно отлаживавший варгейм на PDP-10. Человек без академического образования в компиляторостроении, написавший в одиночку первый нативный компилятор C++. Создатель языка, которым пользуются программисты спустя четверть века после его рождения.
Уолтер регулярно пишет научные и журнальные статьи о компиляторах и программировании и вёл блог в Dr. Dobb's Journal.
Три главы одной биографии: Empire, Zortech, D. Все три живы.
Walter Bright (Photo courtesy Walter Bright)
| Родился: | 10.03.1959 (67) |