Создателем какого языка программирования является бьерн страуструп
Даже те, кто далёк от технологий, слышали о C++ и Python — самых востребованных языках программирования, которые выбирают большинство современных разработчиков. Кто стоит за их созданием? В этой статье мы расскажем вам об инженерах Бьёрне Страуструпе и Гвидо ван Россуме — и возможно, их пример вдохновит на изучение ИТ и вас.
Позже Страуструп защитил диссертацию в Кембриджском университете, работая там же в компьютерной лаборатории. А в конце 70-х вместе с женой переехал в Нью-Джерси, где устроился на работу в Bell Labs и занимался исследованиями и разработкой. Бьёрн никак не мог найти идеальный язык программирования, хотя ещё во времена университета успел изучить больше десятка. Поэтому он решил разработать свой собственный, который сможет обеспечить написанному коду качество и скорость. Язык получил название С with classes, а в дальнейшем переименован в С++.
Страуструп — автор нескольких книг и сотен статей. Например, в 1985 году Бьёрн выпустил знаменитую книгу «Язык программирования С++», которая была переведена на 19 языков и переиздавалась несколько раз.
Гвидо ван Россум — программист из Нидерландов, где он родился 31 января 1956 года. С самого детства ван Россум увлекался электроникой и «железом» в целом. А во время учёбы на математическом факультете в Университете Амстердама он познакомился с программированием, и это привело к выбору другой дисциплины, связанной с компьютерами. В 1982-м году Гвидо стал магистром математики и компьютерных наук.
Свой карьерный путь ван Россум начал в исследовательских институтах Европы и США, а также участвовал в разработке обучающего языка программирования ABC.


В 1989-м году на рождественских каникулах у него пришла идея создать новый язык программирования, который сейчас носит название Python. В основе идеи создания лежало использование простого английского и удобство написания и чтения.
После создания своего собственного языка с 2005 года ван Россум продолжил развивать свою карьеру в Google, где занимался разработкой на Python. А в 2013 году начал свою деятельность инженера в Dropbox. До июля 2018 года Гвидо был на посту «великодушного пожизненного диктатора» за которым было последнее слово. Кстати, эту шуточную позицию он придумал сам. Далее в 2019 году Гвидо ван Россум вышел на пенсию, и в 2020 году присоединился к команде разработки в Microsoft.
С 2002 по 2014 год Страуструп был профессором компьютерных технологий в Техасском университете А&M. В дальнейшем он управлял технологическим подразделением Morgan Stanley в Нью-Йорке. В апреле этого года учёный вышел на пенсию, но уже с июля стал постоянным профессором компьютерных наук в Колумбийском университете.
Страуструп живёт вместе с женой в Нью-Йорке, у него есть дочь, которая стала врачом, и сын, профессор-исследователь в области системной биологии.
Бьёрн родился 30 декабря 1950 года в городе Орхус в Дании. Его семья была небогатой, и учился будущий программист в самой обычной школе — зато всегда на высший балл. Страуструп, в отличие от многих других известных ученых, в детстве не увлекался технологиями. Впервые он познакомился с компьютером уже в университете — это был местный Орхусский университет, где он получил степень магистра по направлению «Информатика». Во время учёбы в университете Страуструп разрабатывал ПО для вуза, подрабатывал в местной компании разработчиком и не особо интересовался языками программирования.
Страуструп Бьёрн (Bjarne Stroustrup)
![]()
Страуструп Бьёрн (дат. Bjarne Stroustrup) — компьютерный инженер, программист. Известен как автор языка программирования C++ который он сам называл «Cи с классами».
Биография, карьера
Страуструп родился и вырос в городе Орхус втором по величине городе в Дании. Окончил Орхусский университет (Дания, 1975) по математике и информатике, защитил диссертацию (Ph. D.) по информатике в Кембридже (1979).
Бьёрн Страуструп получил степень доктора философии, когда работал над конструированием распределённой системы в компьютерной лаборатории Кэмбриджского университета (Англия). Член колледжа имени Черчилля.

В 1979 году Страуструп, вместе со своей женой и дочерью, переехал в Нью-Джерси, чтобы пойти работать в компьютерный научно-исследовательский центр Bell Telephone Laboratories. В этом же году у него родился сын Николас. Максут Шадаев на TAdviser SummIT — о вызовах в цифровизации госсектора, давлении китайских ИТ-поставщиков и перспективах ИИ
До 2002 года возглавлял отдел исследований в области крупномасштабного программирования в компании AT&T (Computer Science Research Center of Bell Telephone Laboratories). Ныне профессор Техасского университета А&М.
Бьёрн Страуструп разработал язык C++.
В последнее время С++ становится самым широко используемым языком программирования, который поддерживает объектно-ориентированное программирование. Страуструп стал первопроходцем в области использования объектно-ориентированной и общей техник в области создания программных приложений, где эффективность является приоритетным свойством, таких как симуляторы, графика, пользовательские интерфейсы, прикладные системы, системы для научных вычислений.
Научные и общественные заслуги
Книга Страуструпа «Язык программирования C++» — одна из самых широко читаемых книг из своей области, которая была переведена на 19 языков. Следующая книга, «Дизайн и эволюция C++», открыла много нового в описании языков программирования: новые идеи, идеалы, проблемы. В дополнение к своим пяти книгам, Страуструп опубликовал более сотни академических и других популярных статей.
Бьёрн принимал активное участие в создании стандарта ANSI/ISO для C++ и продолжает работу по поддержанию и пересмотру стандарта.
В 1990 году «Справочное руководство по языку программирования С++ с комментариями» («The Annotated C++ Reference Manual») получило награду за непревзойдённое мастерство в области технической документации по мнению журнала «Dr. Dobb’s Journal». По мнению этого же журнала, в 1994 году книга «Дизайн и эволюция С++» получила награду «Productivity Award» за помощь программистам в совершенствовании их исходных кодов.
В 1993 году он был награждён премией имени Грейс Мюррей Хоппер «за его ранние работы в области языка С++, базирующиеся на его разработках и внёсшие наибольшее влияние в языки программирования за всю историю вычислительной техники». Кроме того, Страуструп является членом Техасской академии медицины, инженерии и науки (англ. Texas Academy of Medicine, Engineering, and Science). Бьёрн Страуструп был назван журналом «Fortune magazine» одним из «двенадцати лучших молодых американских учёных».
Бьёрн Страуструп был избран членом Национальной Академии Инженерии в США («National Academy of Engineering») в 2004 году за «создание языка С++». Как первый компьютерный учёный, он был награждён («William Procter Prize for Scientific Achievement from Sigma Xi») американским научно-исследовательским сообществом в 2005 году. Он также получил награду компьютерного сообщества IEEE «за начало разработки и коммерциализации объектно-ориентированной технологии создания программ и за большие изменения, внесённые в бизнес и индустрию».
Награды
- 1993 — Премия Хоппер Грейс Мюррей
- 2004 — Премия компьютерного сообщества IEEE
- 2005 — Премия Уильяма Проктера за научные достижения
- 2008 — Премия доктора Доббса в области программирования
Бьерн Страуструп

Бьёрн Страуструп – программист и писатель, доктор философии, создатель языка программирования C++.
Краткая информация
- «Программирование. Принципы и практика использования C++»;
- «Дизайн и эволюция языка С++».
До конца 2002 года Бьёрн оставался сотрудником AT&T Bell Labs, а после объединения компании с факультетом компьютерных наук Техасского университета A&M был профессором кафедры компьютерных наук инженерного колледжа. Больше десяти лет Бьёрн преподавал, писал учебники и готовил научные работы. С 2014 года он – приглашенный профессор Колумбийского университета, а также сотрудник компании Morgan Stanley. С января 2021 года Страуструп – технологический консультант Metaspex, компании, которая предлагает прямой перевод спецификаций в высокопроизводительные полнофункциональные облачные приложения. Бьёрн и его жена живут в Нью-Йорке, куда они переехали, чтобы быть поближе к детям и внукам.
Интервью с создателем С++ Бьёрном Страуструпом (Bjarne Stroustrup)
Предлагаем вашему вниманию запись беседы с Бьёрном Страуструпом (Bjarne Stroustrup), который спроектировал и разработал C++. Он также написал ряд книг: «Язык программирования С++» (книга выдержала 4 издания), «Язык программирования С++. Краткий курс» (2 издания), «Программирование: Принципы и практика использования C++» (2 издания) и др. Кроме того, Бьёрн опубликовал больше ста научных статей.
Интервью
Evrone: Ты создал один из самых эффективных и быстрых языков программирования. Без сомнения, это изменило наш мир. Изменился ли ты сам, как личность, работая над ним?
Бьёрн: Интересный вопрос. Многие задают его себе. Полагаю, надо отделить качества, которые остались неизменными, от тех, которые существенно изменились.
Меня с раннего возраста интересовали общие вопросы, которые решают, например, история и философия. Думаю, что это сыграло важную роль в развитии С++. Я так и сказал в 1994 г. в «Дизайне и эволюции языка С++». В то же время я всегда хотел что-нибудь создавать, а не просто углубляться в теоретические научные исследования. Я скорее инженер, чем теоретик. Я ценю высокую производительность, надежность и экономичность. Всё это, с упором на обратную связь, эволюционный прогресс и понимание проблем реального мира сформировало C++.
Один из аспектов моей работы, которому я с годами уделяю всё больше внимания — это образование. Когда я пытался объяснить свои идеи, я понял, что недостаточно создать что-то, нужно научить людей хорошо использовать то, что создал. Это стало проблемой для C++. Часто мое послание заглушали люди с упрощенным видением и склонностью к громким заявлениям. Я постоянно слышал в 1980–90 годах жалобы вроде «Мы не можем достаточно быстро подготовить преподавателей», и язык C++ часто преподавали ужасно. Неудивительно, что у некоторых сложилось очень негативное представление о C++.
Если бы я предвидел, что существенную часть своей жизни буду говорить и писать на неродном для меня английском языке, я бы, наверное, уделял больше внимания его изучению. Мои путешествия дали мне представление об огромном разнообразии проблем и о широком спектре задач, которые приходится решать. Самыми сложными проблемами в основном оказывались проблемы организационные, управленческие и образовательные.
И здесь мне больше, чем техническое образование, помогло чтение на общие темы. Я осознал, что для хорошего языкового дизайна необходимо смириться с тем, что мы многого не понимаем, что мир постоянно меняется, наши проблемы и мы сами тоже меняемся.
Evrone: Бизнес-среда требует соблюдения жестких сроков при внедрении новых фич. Как разработчикам сохранить баланс между качеством кода и скоростью разработки?
Бьёрн: Это зависит от управленческой структуры и технической культуры. Моё личное мнение, которое сложилось в основном в Bell Labs — идеальное решение заключается в том, чтобы нанять лучших людей. При этом их должно быть достаточно не только для текущих срочных задач, но и для планирования задач будущих, для ведения экспериментов и создания первой версии следующей важной системы, а может быть, и той, которая последует за ней. Хорошая организация создаёт постоянный поток продуктов, большинство из которых представляют собой эволюционное развитие уже существующих продуктов, требующих обслуживания и обновления. Очевидно, что это не соответствует распространенным представлениям о сокращении расходов и/или создании революционной системы в будущем году.
Evrone: Сейчас распространилось мнение, что использование современных фреймворков важнее, чем применение математических знаний. Что ты по этому поводу можешь посоветовать начинающим программистам?
Бьёрн: Время, затраченное на математику, почти никогда не пропадает даром. Математика — один из лучших способов тренировки мозга, особенно в сочетании с компьютерными вычислениями, поскольку с их помощью ошибки быстро становятся очевидными.
Математика учит быть точным и не верить в чрезмерно упрощенные или ложные идеи.
Есть области, где математика необходима, например, для научных расчётов, некоторых видов графики и большей части финансового программного обеспечения, но для большинства людей нужны такие разделы математики, как теория вероятности и статистика. Достаточно ли быстро работает ваш код? Будет ли он масштабироваться? Каковы вероятные события и их последствия?
Конечно, многие приложения не требуют математики. Однако, если вы создаете инфраструктуру или развёртываете масштабное приложение, вам требуется учесть затраты вычислительных ресурсов и энергии, в этом случае недостаток математических знаний очень вредит.
Evrone: Разработчики иногда злоупотребляют мощной системой метапрограммирования C++, пытаясь вычислить всё возможное на этапе компиляции, чтобы разгрузить ран-тайм. Как ты считаешь, является ли такой подход приемлемым?
Бьёрн: Каждую новую мощную фичу или технику обязательно будут использовать к месту и не к месту, часто неправильно. Я не вижу никакого способа избежать этого. Наш энтузиазм нас подстёгивает, но со временем мы должны научиться лучше использовать инструменты и немного сбавить обороты. Впрочем, есть и плюс: чрезмерное использование выявляет недостатки, и мы можем их устранить. Например, метапрограммирование с помощью шаблонов было настолько полезным, что многие разумные люди были готовы игнорировать его уродство и ужасные сообщения об ошибках. Затем мы узнали достаточно, чтобы компенсировать эти недостатки с помощью функций constexpr и consteval, которые вычисляются во время компиляции, и концептов. Они значительно упростили многое при написании кода.
Evrone: С появлением нейронной сети AlphaCode от DeepMind в прессе появляется всё больше заявлений о том, что такие нейронные сети скоро заменят программистов. Как думаешь, есть ли для этого реальные предпосылки?
Бьёрн: Точно не знаю, но сомневаюсь, что ИИ заменит программистов в том виде программирования, который меня больше всего волнует. Высокая степень надежности и близкая к оптимальной производительность не очень-то поддаются стандартизации и усреднению. Когда я слышу об ИИ (в котором не очень силён), я напоминаю себе, что TensorFlow и подобные библиотеки — это C++, а значит, я внес свою лепту, как хорошую, так и плохую.
Evrone: Иногда мы, разработчики, не можем найти правильное решение для поставленной задачи. Оказывался ли ты в такой ситуации? Можешь ли что-нибудь порекомендовать, чтобы справиться с этим?
Бьёрн: Конечно, оказывался! Те, кто пытается сделать что-то новое и значительное, рано или поздно сталкиваются с проблемой, с которой можно биться часами, днями, неделями с ощущением, что зашёл в тупик и всё пропало. Но не следует впадать в отчаяние.
Чтобы понять проблему, нужно постараться рассмотреть её логически. Измеряйте, если есть что измерить, чтобы получить обратную связь. Хорошо обдумайте то, что вы пытаетесь сделать: может быть, вы делаете не то, что нужно, или неверно сформулировали требования. Время от времени устраивайте перерыв и думайте о чём-то другом. Если есть возможность, я выхожу на пробежку. Часто полезные идеи приходят мне в голову именно тогда, когда я расслабляюсь.
Evrone: Существует (печально) известная шутка, что любую архитектурную проблему можно решить введением дополнительного уровня абстракции. кроме проблемы слишком большого количества уровней абстракции. Многие программы на C++, которые мы видели, содержали чрезмерное их количество. Есть ли какие-нибудь советы от автора языка о том, как не плодить лишних абстракций?
Бьёрн: Это «Первый закон вычислений» Дэвида Уилера. Для меня ценно, что ты помнишь вторую половину — многие забывают о ней, а между тем в этом суть. Когда я писал диссертацию, Дэвид Уилер был моим научным руководителем. Он был замечательным человеком, и я многому у него научился.
Эта «шутка», возможно, сегодня более актуальна, чем тогда, когда Дэвид её придумал. Люди продолжают прятать реальную логику за несколькими слоями абстракции, включающих косвенные обращения. Это может повлечь увеличение размера и/или времени выполнения на один-два порядка. Многое в современном C++ существует для того, чтобы позволить людям иметь приличные интерфейсы, которые компилятор может свернуть в простой машинный код без лишних промежуточных операций.
Evrone: За последние десять лет в основных языках появилось много «синтаксического сахара». Что ты думаешь об этой тенденции раздувания синтаксиса ради того, чтобы несколько улучшить инструментарий для опытных разработчиков?
Бьёрн: До тех пор, пока «раздувание» синтаксиса упрощает жизнь программистов, его надо приветствовать. Я называю это «упрощением простых задач». По-моему, основная идея заключается в том, чтобы дать программисту возможность выражать фундаментальные идеи непосредственно в коде. Например, нет никакой пользы или выгоды в том, чтобы выразить простой цикл над контейнером как цикл в стиле С. Лучше использовать range-for или алгоритм из стандартной библиотеки шаблонов. В большинстве случаев они напрямую соответствуют замыслу. Кропотливую работу с переменными цикла оставьте для необычных случаев, например, для перебора каждого второго элемента контейнера. Более чёткое выражение идей легче написать, легче прочитать, легче поддерживать, и оно часто лучше поддается оптимизации в целях ускорения выполнения.
Я не считаю, что нужно стремиться к единственному способу сказать о чём-то. Если идти таким путем, то некоторые вещи становится очень трудно выразить, а чтобы выразить другие, придётся говорить слишком много. Кроме того, с прошествием времени накапливаются изменения, что приводит и к изменению языка. В этом отношении языки программирования не так уж сильно отличаются от естественных языков.
Evrone: Многие люди считают тебя своим наставником. Как ты думаешь, какими качествами должен обладать хороший наставник, например, внутри компании или команды?
Бьёрн: Готовность слушать и серьёзно подходить к пониманию проблемы. Затем, требуется определенная степень смирения, когда собираешься дать совет, ведь часто наше понимание не является полным. При этом хороший наставник должен давать конкретные советы, а не выдавать общие расплывчатые фразы. Если кто-то обращается к вам с серьёзным вопросом, он заслуживает серьезного ответа, который поможет двигаться дальше. Давать советы трудно.
Хорошие вопросы многому учат. Они являются основным двигателем прогресса. Хороший наставник сам многому учится у студентов.
Evrone: Не мог бы ты рассказать о предстоящих изменениях в языке, которые, по твоему мнению, стоит добавить в будущие версии C++?
Бьёрн: Для начала, сообщество должно привыкнуть к новым, мощным и более простыми в использовании возможностям C++20. По числу улучшений стандарт C++20 сравним с C++11. Здесь я упомяну только две особенности языка (на самом деле их больше) и, конечно же, компоненты стандартной библиотеки.
- Модули. Наконец, мы можем написать import Mod, чтобы получить доступ к интерфейсам, экспортируемым с помощью module Mod, больше ничего не требуется. Это обеспечивает гораздо лучшую гигиену кода, чем подключение хедеров с помощью #include, которые раскрывают детали реализации и макросы. Модули к тому же значительно быстрее компилируются. Например, я скомпилировал простое использование import std в десять раз быстрее, чем #import, хотя std содержит всю стандартную библиотеку, а — менее 10% из неё. Модуль std пока является экспериментальным, но за его включение в C++23 уже проголосовали.
- Концепты. До появления C++20 все шаблоны были неограниченными; то есть они не указывали интерфейс, на который могли бы смотреть люди и инструменты, чтобы определить требования шаблона к его аргументам. Например, template для шаблона, которому нужен тип «итератор». Теперь мы можем определять такие требования, называемые concepts, и использовать их: template . Такие ограниченные аргументы шаблонов всегда были идеалом, к которому надо стремиться. Я просто не знал, как реализовать эту идею, не ограничивая гибкость и не повышая потребления ресурсов во время выполнения. Теперь мы можем немедленно проверять использование шаблонов, получать гораздо более качественные сообщения об ошибках, перегружать шаблоны функций, а местами даже повысить производительность.
В Интернете вы можете найти гораздо более подробную информацию; например, поищите сопрограммы (coroutines), ranges, calendars, time zones, formatting, тип span, а также compiler-time vector и string. Фичи C++20 поставляются в основных компиляторах.
Теперь я могу вернуться к твоему вопросу насчет будущих версий. Многое было отложено из-за пандемии. Мы хотели бы, чтобы некоторые важные проекты вошли в C++23, но мои любимые фичи закончить не получится. Здесь я упомяну только три из них:
- Статическая рефлексия: нам нужен механизм для генерации кода во время компиляции на основе типов в программе. Это даст нам почти всю гибкость рефлексии во время выполнения, без затрат времени и пространства. Например, должно быть очень просто сгенерировать оптимизированный JSON-ридер для фиксированного набора типов. Над этим была проделана значительная работа.
- Сопоставление с образцом: возможность выбора действия на основе соответствия выражения какому-либо образцу (например, тип или значение) является одним из самых удобных способов выражения альтернативных действий во многих функциональных языках программирования. Мы можем сделать то же самое для C++, и в процессе архаичный оператор switch станет излишним. У нас почти закончен проект с экспериментальной реализацией, поэтому я надеюсь, что в C++26 эта фича появится.
- Модель параллелизма: Мы уже много лет работаем над общей моделью параллелизма, но постоянно находим сценарии использования, для которых она не работает, поэтому приходится откладывать решение этого вопроса до стандарта C++26.
Пожалуйста, помните, что не отдельные функции делают программирование удобным, безопасным и эффективным. Нам нужна плотная сеть фич, которые работают в общей системе типов. Также мы не можем ломать миллиарды существующих строк C++: совместимость и стабильность на протяжении десятилетий — очень важные характеристики.
Заключение
Нам было очень интересно поговорить с Бьёрном и кое-что узнать о его огромном опыте.
В Evrone мы разрабатываем индивидуальные программные решения с учётом специфических потребностей наших клиентов. Если вам нужна помощь с реализацией проекта или идеи, или вы просто хотите узнать больше о наших услугах, отправьте нам сообщение через форму ниже, и мы с вами всё обсудим.