Как стать автором
Обновить
134.47
JUG Ru Group
Конференции для Senior-разработчиков

«Двойной плюс»: биография создателя С++ Бьярне Страуструпа

Время на прочтение8 мин
Количество просмотров9.9K

Можно не любить язык C++, можно даже не знать о его существовании, но вот не пользоваться софтом на нём — это, наверное, получится только в пещере. C++ есть в операционных системах и браузерах, автомобилях и банкоматах, сервисах вроде YouTube и программах вроде Photoshop. Получается, всё человечество каждый день взаимодействует с тем, что когда-то создал один конкретный человек.

Ранее мы публиковали интервью, которое Бьярне Страуструп дал на нашей конференции C++ Russia. А теперь решили, что и описать биографию такого человека никогда не будет лишним.

В 1950 году в Датском королевстве, в городе Орхус родился Бьярне Страуструп. Плохая школа, не самые богатые родители — у Бьярне были все предпосылки, чтобы стать уличным гэнгстой. Но поскольку суровый нордический климат не особо располагал к шатанию по улицам, он занялся программированием и позднее создал язык С++. У Страуструпа было самое обычное детство: он играл в футбол, катался на велосипеде и развозил газеты. От сверстников мальчик отличался разве что хорошими оценками в школе. Хитрый учитель математики привил Бьярне любовь к этой науке. Если бы не он, мы вполне могли бы получить неплохого историка, социолога или архитектора — Страуструп всерьёз рассматривал и эти дисциплины.

Студенчество: два королевства

В 1969 году Страуструп поступил в Орхусский университет. Там он познакомился с огромным, ламповым и очень тёплым шкафом, который тогда называли «компьютером». Там же начал интересоваться микропрограммированием. Бьярне осознал, что матан — это не так уж и весело. Да и мысль о преподавании у него энтузиазма не вызывала. Учиться приходилось долго, да и ещё отваливать за это немало шелестящих крон. Деньги не особо оттягивали карман бедного студента, так что он начал пилить программы не только для друзей, но и для заказчиков. Например, для компании Burroughs в родном Орхусе. Тогда же Страуструп понял, что реальное программирование и университетские лабораторные — совершенно разные вещи.

Тем не менее университет он не бросил, а получил гордое звание магистра. После чего отправился уже в другое королевство — Соединённое. Во время учёбы в Орхусском университете Бьярне уже бывал в Кембридже на стажировке. Так что он принял логичное решение: продолжить грызть гранит науки в альма-матер Алана Тьюринга. Страуструп попал в Вычислительную лабораторию, где стал заниматься проектированием распределенных систем. В 1979 году Бьярне получил докторскую степень. Британцы сотрудничали с великой и ужасной Bell Telephone Laboratories, в сырых застенках которой уже создали UNIX и С. Так что компания взяла Страуструпа под своё крыло сразу после Кембриджа. Программист перебрался в Свободные Штаты Америки и поселился в Нью-Джерси — вместе с женой, которой успел обзавестись ещё в шальные студенческие годы. В Америке родился и его первый сын.

Расцвет карьеры: два плюса

В Лабораториях Белла Страуструп трудился над задачами теории очередей. Он хотел создать систему для Bell Labs, которая бы стала бы первым UNIX-кластером. Иными словами, систему для распределенных вычислений, которая была бы объединена в общую сеть из нескольких компьютеров.

«Мне предстояло написать код, который бы работал на низком уровне, на уровне железа: диспетчеры памяти, планировщики процессов, сетевые интерфейсы и все в таком духе. И при этом нужно было уйти от железа. Мне нужно было перейти на высокий уровень, чтобы заставить один код взаимодействовать с другим, используя определенный протокол передачи данных определенным образом».

Б. Страуструп

Существующие языки не слишком нравились Страуструпу. Традиционно использовавшийся BCPL был быстр, но плохо подходил для написания крупных проектов и был слишком уж близок к языкам низкого уровня. Тогда взгляд Бьярне пал на один из первых языков для объектно-ориентированного программирования — Simula. Он подходил гораздо лучше, но слишком тормозил. В те дремучие времена ООП вообще считалось слишком сложным для простых смертных колдунством. Тем не менее в 1979 Бьярне поставил перед собой амбициозную цель: создать свой язык, с классами и прототипами функций. Страуструпу нужен был инструмент, который бы идеально подходил для решения его задач и мог работать как на высоком, так и на низком уровне.

За основу он решил взять язык, который работал бы на низком уровне. На рубеже 70-80 было с десяток подходящих вариантов. Однако лаборатория Денниса Ритчи и Брайана Кернигана, которые к тому моменту уже выпустили свою нетленку «K&R», находилась на одном этаже с лабораторией Бьярне. Так что вопрос выбора перед ним не стоял. Язык С подходил практически идеально, потому что:

1. является многоцелевым, лаконичным и относительно низкоуровневым языком;

2. подходит для решения большинства системных задач;

3. исполняется везде и на всём;

4. стыкуется со средой программирования UNIX.

Б. Страуструп. «Язык программирования C++», раздел 1.6

В первую очередь, Страуструп решил добавить к С механизмы абстракции. Тут и пригодился опыт работы с Симулой. И прикрутил он классы из Симулы к С, и подумал, что это хорошо. Получившееся нечто Бьярне назвал незамысловато — С with classes. Но уже на вторую неделю решил добавить конструкторы и деструкторы, чтобы было удобнее работать с ресурсами. К 1983 году новоиспечённый язык обзавёлся прототипами функций и проверкой аргументов функции, виртуальными функциями и перегрузкой функций. Появившемуся монстру пора было давать имя — стало окончательно понятно, что это уже не просто «Си с классами». Название «D» не подходило: Бьярне считал, что его детище «является расширением C и не пытается устранять проблемы путём удаления элементов C». Название С+ в тот момент тоже было занято, да и являлось синтаксической ошибкой. На помощь пришёл его коллега и соратник Рик Мэсчитти. Он предложил добавить двойной плюс — значение оператора инкремента. В С этот оператор увеличивал значение переменной на единицу.

В 1984 году компанию Bell Labs поглотил телекоммуникационный гигант AT&Т. Новые боссы начали тыкать в Страуструпа палкой и спрашивать: «А когда релиз?». Он уверенно отвечал: «Всё будет». Издатель также начал интересоваться, когда выйдет книга. По воспоминаниям Бьярне, работа над фолиантом давалась ему нелегко: объяснить язык оказалось сложнее, чем создать его. Тем не менее это пошло на пользу С++: он стал логичнее и функциональнее. «Написание инструкции – очень хороший способ проектирования» — вспоминал позднее Страуструп.

И вот через год работа окончена и остается лишь выбрать удачную дату.

 «Я не знаю, было ли это важным, но в то же время это было хорошей идеей. О том, какой день станет удачным для релиза, меня спрашивали и AT&T (компания, продающая компилятор), и Addison-Wesley (издатель книги). Я назвал 14 октября, поскольку должен был выступать на конференции Ассоциации по вычислительной технике США и мог бы представить его там».

Б. Страуструп

Именно в октябре 1985 мир видит первое издание «Языка программирования C++». А вместе с ним — компилятор Cfront. Интересно, что первая версия просто генерировала код на обычном С, а не компилировала исходный код на С++ в машинный код. Тем не менее позднее Страуструп признался, что вообще плохо помнит этот период: «Это был важный для меня день, но единственное, что я помню, – это как я получал на руки первую копию моего первого издания». Неудивительно, ведь работы было много. В период с 1979 по 1991 число программистов, использующих С++, удваивалось каждые 7,5 месяцев. Из-за такой популярности Бьярне перестал быть хозяином языка буквально через полгода после релиза:

«На самом деле у меня не было никогда контроля над языком в полном смысле слова. Как только языком начинают пользоваться, у его создателя появляются свои обязанности. Нужно отвечать на запросы пользователей. В моем случае это случилось спустя шесть месяцев после запуска проекта. Появился пользователь, и я потерял возможность выносить единоличные решения. Я не мог решиться пойти на то, чтобы все сломать».

Б. Страуструп

В 1987 году на конференции по С++ собралось 200 человек. Тогда же Страуструп выпустил исправленную версию компилятора Cfront 1.2, добавив указания на члены классов и protected-члены данных. А через два года вышла уже полноценная версия 2.0.

В 1991 году вместе со вторым изданием «Языка программирования» появился Cfront 3. Третья версия была основательно вычищена: добавлено множественное наследование, абстрактные классы, статические, константные и защищенные функции-члены, перегрузка оператора. И именно в этот год «Fortune magazine» признал Бьярне одним из «двенадцати лучших молодых американских учёных». А в 1994 году вышла вторая работа Страуструпа — «Дизайн и эволюция С++». Появившись как небольшая статья об истории языка, она превратилась в полноценную книгу. Через год Бьярне повышают до главы отдела исследований программирования.

Но в 90-х Страуструпу было не до регалий. Нет, его не донимали малиновые пиджаки — зато донимали пиджаки чёрные и очень дорогие. Еще в конце 80-х техногиганты IBM, Sun и HP начали интересоваться новым, модным, молодёжным языком программирования. Но впадать в зависимость от своего потенциального конкурента AT&T было как-то не комильфо. Да и многих корпоративных разработчиков бесила ситуация, когда после старта работы над приложением выходила новая, слегка изменённая версия С++. Словом, назрела необходимость стандартизации. Страуструп возражал, что это невозможно — да и рановато, язык ещё недостаточно созрел. Но в итоге всё же сдался. Так что в 1989 году была создана группа по стандартизации С++ —  первые плоды её работы появились только в 1998 году. Именно тогда вышел стандарт ANSI/ISO С++. Компиляторы стали сходиться к общему языку.

Зрелость: вторая жизнь

Проработав в Bell Labs до 2003, Страуструп ушёл с должности и начал учить студентов Техасского университета A&M уму-разуму. Периодически выступал в Колумбийском институте, получил парочку наград с длинными сложновыговариваемыми называниями, а также продолжил совершенствовать своё детище в составе комитета. Но долго греть кости в твидовом пиджаке Бьярне не захотел. Как и в студенческие годы, в нём всё ещё тлело желание решать реальные задачи. Поэтому в 2014 году Страуструпа взял на работу финансовый конгломерат Morgan Stanley, где программист трудится и до сих пор. Сильно распространяться о своей работе в банке Бьярне не может и ограничивается общими фразами. Говорит, что работает «с распределительной системой» и занимается тем же, чем «занимался последние 40 лет», добавляя, что работать нравится. Отчасти — из-за тех рамок, что ставит банковская сфера, ведь системы должны быть надёжными и производительными.

«В бытность учёным я считал микросекунды. Сейчас приходится считать наносекунды, но суть работы не меняется — код стареет, его необходимо обновлять. Все как везде».

Б. Страуструп

С++ сильно повлиял как на IT-сферу в частности, так и на весь мир в целом. Например, на индустрию видеоигр — его до сих пор выбирают для разработки высокопроизводительных приложений. Компании инвестировали громадные ресурсы в разработку игровых библиотек и движков на С++. Unreal Engine полностью написан на нём, как и Runtime Unity. Принципы С++ повлияли на огромное количество других языков программирования — от Java до Python. Творение Бьярне используется практически везде: от браузеров и мобильных ОС до микроконтроллеров и IoT. Даже спустя 28 лет после релиза, он продолжает входить в пятёрку самых популярных языков программирования по индексу TIOBE. Конечно, свои недостатки у него тоже есть: например, за десятки лет неизбежно обрастаешь легаси, от которого многим разработчикам хочется сбежать. В 2009 году Google, чтобы избавиться от «особенностей разработки», связанных с С++, представила Go — очень близкий по синтаксису язык. Примерно по той же причине Mozilla разработала Rust.

Несмотря на критику, Страуструп продолжает развивать своё детище. Его нельзя назвать хозяином языка — Бьярне ближе роль хранителя. Капитана, который намечает курс дальнейшего движения: контролирует целостность языка, не зацикливаясь на отдельных функциях. В наши дни Страуструп вносит предложения в комитет по стандартизации, работает над ключевыми рекомендациями и встречается с представителями Microsoft, Facebook и Red Hat. Да, датчанин поумерил свой пыл. Но списывать со счетов Бьярне пока что рановато, да и в Валгаллу он явно не собирается.

В частности, Страуструп до сих пор участвует в конференциях — благодаря чему нам в прошлом году и удалось порасспрашивать его. Этой осенью мы снова проведём C++ Russia, и конкретно Бьярне там не обещаем, но других интересных спикеров из мира C++ наверняка будет много.

Теги:
Хабы:
+21
Комментарии3

Публикации

Информация

Сайт
jugru.org
Дата регистрации
Дата основания
Численность
51–100 человек
Местоположение
Россия
Представитель
Алексей Федоров