У создателя С++ было очень мало шансов "выйти в люди": бедная семья, худшая школа в городе, отсутствие ярко выраженных склонностей к чему-либо. Он даже не был "гениален". Это человек, которого можно назвать self-made. Его главной целью было добиться настоящего успеха в чем бы то ни было.
Возможно, всем нам повезло, что его "занесло" в программирование. Потому что сейчас очень трудно представить современную ИТ-индустрию без наследия С++.
Бьярне Страуструп родился 30 декабря 1950 года в датском городе Орхус. Это второй по величине (250 тысяч жителей) город Дании, расположенный на восточном побережье Ютландии.
Несмотря на то, что его родители не были "академиками", он отлично учился в школе. Хотя, как потом выяснил Бьярне, это была одна из худших школ в городе.
В детстве будущий инженер любил играть в футбол, кататься на велосипеде. Кроме того, он был бойскаутом. Как большинство мальчиков в то время, Страуструп подрабатывал доставкой газет и молока.
После окончания школы он все-таки поступил в местный Университет на отделение компьютерных технологий. Бьярне допускал, что мог бы стать и архитектором, и историком, и социологом. Но в конце концов он остановился на математике и компьютерных науках. На его решение повлиял школьный учитель математики, который привил мальчику любовь к этой науке.
Университет
Он впервые познакомился с компьютером уже в стенах ВУЗа. Algol-60 был первым языком программирования, который выучил Бьярне.
Орхусский университет входил в ТОП-100 высших учебных заведений мира. Страуструп со страхом думал о том, что ему придется работать учителем математики, если не найдется работа в сфере программирования. Он был убежден, что математика должна иметь практическое приложение.
Однако на втором курсе он понял, что программирование, и компьютерные технологии в целом, - это не только и не столько математика. Кроме того, оказалось, что Бьярне был не так хорош в математике, как он думал.
В одном из интервью Страуструп обозначил свою позицию по поводу обучения программированию:
Я оцениваю образование выше обучающих курсов. Я в большинстве случаев выберу специалиста с широким кругозором и глубокими базовыми знаниями, чем кого-то с сертификатом о прохождении узкоспециализированных курсов. Вообще мои идеал - это сочетание академических знаний и практических навыков.
В университетские годы Страуструп подрабатывал тем, что писал небольшие программы для подразделения компании Burroughs в Орхусе. Тогда он понял, что коммерческая разработка имеет мало общего с написанием программ для себя или друзей, и тем более, с выполнением лабораторных работ в ВУЗе. Бьярне получил опыт общения с пользователями, опыт поддержки и сопровождения кода.
Часть вырученных денег студент тратил на оплату собственного обучения. Помимо того, что он принес пользу себе, его разработки помогли вывести компанию на новый уровень: Burroughs в дальнейшем объединилась с Sperry, в результате чего образовалась компания Unisys - мировой производитель комплексных программно-аппаратных решений.
Кроме того, студент разрабатывал ПО и для нужд университета. В 1975 году Страуструп окончил его и получил степень магистра.
Кембридж
Ближе к концу обучения Бьярне заинтересовался микропрограммированием. Интерес усилился после стажировки в Кембридже. Поэтому Страуструп переехал в Англию, чтобы продолжить свое образование в Кембриджском университете. Там было все необходимое оборудование для изысканий в области микропрограммирования.
Кроме того, новый университет помог ему повысить требования к себе. В этом ВУЗе уровень студентов и педагогов был намного выше, чем в орхусском университете. Это мотивировало Страуструпа развиваться активнее.
В Кембридже, в Вычислительной лаборатории, он занимался проектированием распределенных систем. В 1979 году Бьярне получил докторскую степень.
В этом же году Страуструп вместе с женой Мэриэн переехал в Нью-Джерси (США), где стал работать в Центре компьютерных исследований фирмы Bell Labs. В то время фирма была в "дружеских" отношениях с Кембриджским университетом.
С++
Когда Страуструп занимался исследованиями в фирме, ему потребовалось написать несколько имитационных программ для моделирования распределенных вычислений. SIMULA-67 - объектно-ориентированный язык - мог бы стать идеальным инструментом для решения подобных задач, если бы не его сравнительно низкая скорость выполнения программ. К слову, этот язык Бьярне использовал еще во время написания своей диссертации в Кембридже - там он разрабатывал симулятор распределенных систем.
До этого в сферу интересов Страуструпа не входила разработка языков программирования. Его интересовало микропрограммирование, операционные системы, архитектура вычислительных машин, разработка виртуальных машин. Правда, еще до окончания университета он успел изучить двадцать языков программирования. Но несмотря на это, Бьярне утверждает, что большого интереса к языкам он все-таки не испытывал.
Тем не менее, Страуструп принял решение начать работу над новым языком программирования.
Если вам приходится выбирать между написанием "хорошего" и "быстрого" кода, значит, здесь что-то не так. Потому что "хороший" код должен быть "быстрым", - объясняет Страуструп свою позицию в интервью.
Так был создан язык программирования С++, первоначально получивший название "Си с классами" (С with classes). Название "С++" придумал Рик Мэсчитти. "++" - это оператор инкремента в С, который как бы намекает на то, что язык С++, нечто больше, чем просто С.
В 1983 году язык подвергся значительным изменениям. Страуструп разработал свой язык таким образом, чтобы код не компилировался в машинный язык, а преобразовывался в набор команд препроцессора языка С. Это открывало к нему доступ сотням тысяч С-программистов, имевших соответствующий компилятор.
В 1984 году Bell Labs была реорганизована и получила название AT&Т Bell Labs. Первыми, кому фирма предложила С++, причем практически бесплатно, стали университеты.
В 1985 году Страуструп опубликовал одну из самых широко известных книг "Язык программирования С++", которая выдержала четыре издания (1985, 1991, 1997, 2000), и была переведена на 19 языков.
Как пишет Том Даффи: "Множество открытий обязаны своим происхождением случаю. Но есть и немало других, которые стали возможны благодаря кропотливой работе и предвидению. Язык программирования С++, впервые предложенный лабораторией Bell Labs университетам в 1985 году, безусловно относится ко второй категории".
Формирование сообщества
Язык быстро нашел свою аудиторию. В 1987 году на конференции по С++ собралось 200 человек. На следующий год число участников возросло до 600, а в начале 90-х годов число разработчиков на С++ приближалось к 500 тысячам. Это сделало данный язык мировым лидером по скорости распространения.
В 1990 году вышла очередная книга Страуструпа - "Справочное руководство по языку программирования С++ с комментариями" (The Annotated C++ Reference Manual), которая в дальнейшем была удостоена награды за непревзойдённое мастерство в области технической документации по мнению журнала Dr. Dobb"s Journal.
Кроме того, по версии журнала Fortune magazine Страуструп был признан одним из "двенадцати лучших молодых американских учёных".
Страуструп тем временем продолжал работать в AT&Т Bell Labs, где возглавлял подразделение широкомасштабных программных исследований, активно занимался совершенствованием своего языка и созданием его стандарта. Стандарт ANSI/ISO С++ был выпущен в 1999 году.
Страуструп был главой отдела исследований программирования в Bell Labs с 1995 по 2002 год.
Бьярне Страуструп - о C/С++
"Я придумал C++, записал его первоначальное определение и выполнил первую реализацию. Я выбрал и сформулировал критерии проектирования C++, разработал его основные возможности и отвечал за судьбу предложений по расширению языка в комитете по стандартизации C++, - писал его автор. - Язык C++ многим обязан языку C, и язык C остается подмножеством языка C++ (но в C++ устранены несколько серьезных брешей системы типов C). Я также сохранил средства C, которые являются достаточно низкоуровневыми, чтобы справляться с самыми критическими системными задачами. Язык C, в свою очередь многим обязан своему предшественнику - BCPL".
В 2003 году в интервью Страуструп рассказал о своем отношении к проблемам совместимости С и С++:
Я думаю, что существующие проблемы несовместимости С и С++ - самое ужасное, что могло произойти в истории этих языков. В идеале эти языки нужно объединить. И мне кажется, это технически реализуемо только при условии внесения изменений в оба языка. Однако из-за нежелания вносить эти изменения языки продолжают отдаляться друг от друга, отравляя жизнь практически каждому C- и С++-разработчику.
Я пытаюсь заставить людей увидеть положительные стороны в объединении. Я написал серию статей на эту тему. Но кто-то заинтересован в том, чтобы этого не произошло. Кроме того, я не вижу большого интереса и со стороны сообщества. Наверное, большинство, как обычно, надеется на то, что все "само рассосется".
После AT&Т Bell Labs
С 2002 года Бьярне является профессором техасского университета A&M (Texas A&M University). Он проработал в индустрии почти в четверть века, поэтому ему есть, что сказать студентам.
Кроме того, он сотрудничает с Колумбийским университетом как приглашенный педагог-профессор компьютерных наук.
В 2014 году Бьярне предложил работу один из крупнейших финансовых конгломератов мира - Morgan Stanley.
Страуструп начал сотрудничать с этой фирмой, так как решил вернутся из сферы чистой педагогики к решению реальных проблем. Его огромный опыт оказался полезен банку Morgan Stanley при решении вопросов, связанных с производительностью, надежностью и безопасностью.
Кроме того, он хотел переехать в Нью-Йорк, чтобы быть ближе к детям и внукам.
Бьярне Страуструп был избран членом Национальной Академии Инженерии в США ("National Academy of Engineering") в 2004 году с формулировкой "за создание языка С++". Как первый компьютерный учёный, он получил награду ("William Procter Prize for Scientific Achievement from Sigma Xi") американского научно-исследовательского сообщества в 2005 году. Он также получил награду компьютерного сообщества IEEE "за начало разработки и коммерциализации объектно-ориентированной технологии создания программ и за большие изменения, внесённые в бизнес и индустрию".