Бьёрн Страуструп
Бьёрн Страуструп (род. 11 июня 1950, Орхус, Дания) — датский программист, создатель языка программирования C++ и автор многократно переиздаваемой книги «Язык программирования C++». Является одним из наиболее влиятельных разработчиков языков программирования в истории компьютерной науки.
Биография
Ранние годы и образование
Бьёрн Страуструп родился в семье инженера-механика и домохозяйки в Орхусе, Дания. Его отец работал на местном заводе, а мать занималась воспитанием детей. Интерес к программированию проявился ещё в школьные годы, когда он начал изучать вычислительную технику на базе университетского компьютера IBM 1620.
В 1975 году Страуструп получил степень магистра (cand. scient.) по математике и компьютерным наукам в Орхусском университете. Его дипломная работа была посвящена проектированию компилятора для языка Simula. В 1979 году он защитил докторскую диссертацию (PhD) по компьютерным наукам в Кембриджском университете (Великобритания), где работал под руководством профессора Дэвида Уилера. Тема диссертации — «Коммуникация и управление в распределённых системах».
Работа в Bell Labs
В 1979 году Страуструп начал работать в исследовательском центре Bell Labs (Мюррей-Хилл, Нью-Джерси, США). Именно здесь он приступил к разработке языка, который впоследствии стал C++. Первоначально проект назывался «C with Classes» (Си с классами) и представлял собой расширение языка C, добавляющее механизмы объектно-ориентированного программирования, взятые из Simula.
Первая реализация компилятора «C with Classes» была создана в 1980 году. В 1983 году язык был переименован в C++ (название придумал Рик Маскитти — коллега Страуструпа; символ «++» означает операцию инкремента в C). В 1985 году вышло первое коммерческое издание компилятора Cfront, а также первое издание книги «The C++ Programming Language».
Страуструп оставался в Bell Labs до 2002 года, занимая должность руководителя отдела исследований в области программного обеспечения. За это время он руководил стандартизацией C++ (первый международный стандарт ISO/IEC 14882:1998) и продолжал развивать язык, добавляя шаблоны, исключения, пространства имён и другие механизмы.
Академическая деятельность
С 2002 по 2014 год Страуструп работал профессором компьютерных наук в Техасском университете A&M (College Station, США). Там он вёл курсы по программированию на C++, проектированию языков и системному программированию. В 2014 году он перешёл в Morgan Stanley в качестве управляющего директора (Managing Director) в отдел технологий, где занимается разработкой внутренних инструментов на C++.
Параллельно с работой в индустрии Страуструп продолжает активно участвовать в развитии языка: он является членом комитета по стандартизации C++ (ISO/IEC JTC1/SC22/WG21) и регулярно публикует статьи и доклады.
Создание и развитие C++
Предпосылки и мотивация
К концу 1970-х годов в Bell Labs активно использовался язык C для системного программирования (операционные системы, драйверы, компиляторы). Однако C не поддерживал абстракции данных и объектно-ориентированное программирование, что затрудняло разработку крупных программных систем. Язык Simula, напротив, предоставлял мощные средства для моделирования и иерархической организации кода, но был медленным и не подходил для низкоуровневых задач.
Страуструп поставил цель объединить эффективность C с выразительностью Simula, создав язык, который:
- оставался бы столь же производительным, как C;
- поддерживал бы абстракции данных (классы, наследование, полиморфизм);
- был бы пригоден для системного программирования;
- сохранял бы обратную совместимость с C.
Ключевые этапы развития
- 1979–1983 — разработка «C with Classes». Добавлены классы, наследование, функции-члены, контроль доступа (private/public), конструкторы и деструкторы.
- 1985 — выход первой версии компилятора Cfront (транслировал C++ в C) и книги «The C++ Programming Language».
- 1989 — добавлены шаблоны (templates) и исключения (exceptions). Шаблоны позволили создавать обобщённые алгоритмы и контейнеры.
- 1990 — выход стандарта ANSI C++ (предварительная версия).
- 1998 — первый международный стандарт ISO C++ (C++98). Включает STL (Standard Template Library), пространства имён, RTTI (runtime type information).
- 2011 — стандарт C++11 (ранее C++0x). Крупное обновление: лямбда-выражения, auto, decltype, умные указатели, move-семантика.
- 2014 — C++14 (небольшое расширение C++11).
- 2017 — C++17 (структурированные привязки, if constexpr, файловая система).
- 2020 — C++20 (концепты, корутины, модули, ranges).
- 2023 — C++23 (продолжение эволюции).
Страуструп лично участвовал в разработке всех ключевых механизмов языка, включая шаблоны, исключения, пространства имён, RAII (Resource Acquisition Is Initialization) — идиому управления ресурсами, ставшую основой надёжного C++ кода.
Философия проектирования
Страуструп последовательно придерживается нескольких принципов при проектировании C++:
- Нулевая стоимость абстракции (zero-overhead abstraction) — абстракции не должны вводить накладных расходов по сравнению с ручным кодом на C.
- Многообразие стилей — язык поддерживает процедурное, объектно-ориентированное, обобщённое, функциональное и метапрограммирование.
- Обратная совместимость — код на C (и на ранних версиях C++) должен компилироваться современными компиляторами.
- Эволюция через стандартизацию — язык развивается через международный комитет, а не единоличным решением.
Научные труды и публикации
Страуструп является автором нескольких монографий и десятков научных статей. Наиболее известные книги:
- «The C++ Programming Language» (1-е изд. — 1985, 4-е изд. — 2013) — фундаментальное руководство по языку, переведённое на десятки языков. Считается классическим учебником.
- «The Design and Evolution of C++» (1994) — история создания языка, мотивация решений и обсуждение альтернатив.
- «Programming: Principles and Practice Using C++» (2008, 2-е изд. — 2014) — учебник для начинающих программистов, написанный в соавторстве.
- «A Tour of C++» (2013, 2-е изд. — 2018) — краткий обзор современного C++.
Среди научных статей выделяются работы по системам типов, обобщённому программированию, управлению памятью и параллелизму.
Награды и признание
- 1990 — премия «Dr. Dobb’s Journal Excellence in Programming».
- 2005 — премия «Grace Murray Hopper Award» (ACM) за вклад в развитие объектно-ориентированного программирования.
- 2008 — избран членом Национальной инженерной академии США (NAE).
- 2015 — премия «Charles Stark Draper Prize» (Национальная инженерная академия) — одна из высших наград в инженерии, совместно с Бьярне Строуструпом (за создание C++).
- 2017 — избран членом Ассоциации вычислительной техники (ACM Fellow).
- 2018 — премия «IEEE Computer Society Computer Pioneer Award».
- 2020 — премия «Programming Languages Achievement Award» (SIGPLAN).
Влияние на индустрию
C++, созданный Страуструпом, стал одним из самых распространённых языков программирования в мире. Он используется в:
- Системном программировании — операционные системы (Windows, Linux), драйверы, файловые системы.
- Игровой индустрии — движки Unreal Engine, Unity (частично), Godot.
- Финансовых технологиях — высокочастотная торговля, банковские системы.
- Научных вычислениях — симуляции, обработка данных, машинное обучение (TensorFlow, PyTorch имеют C++ ядро).
- Встраиваемых системах — автопилоты, робототехника, IoT.
- Веб-технологиях — браузеры (Chromium, Firefox), серверы (Apache, Nginx).
По оценкам, на C++ написано более 30% всего промышленного кода в мире, а количество разработчиков, использующих язык, превышает 4 миллиона человек.
Критика и противоречия
Несмотря на огромный успех, C++ неоднократно подвергался критике:
- Сложность языка — C++ имеет очень большой синтаксис и множество правил, что затрудняет изучение и поддержку кода. Страуструп отвечает, что сложность является платой за производительность и гибкость.
- Ошибки памяти — отсутствие автоматического управления памятью (сборщика мусора) приводит к утечкам и повреждениям памяти. Современные стандарты (C++11 и выше) частично решают эту проблему через умные указатели и RAII.
- Обратная совместимость — необходимость поддерживать код на C и старые версии C++ тормозит внедрение новых возможностей и затрудняет рефакторинг.
- Скорость компиляции — C++ известен медленной компиляцией из-за включения заголовочных файлов и шаблонов. Модули (C++20) призваны решить эту проблему.
Сам Страуструп признаёт, что у языка есть недостатки, но считает, что его достоинства (производительность, контроль, гибкость) перевешивают их для большинства задач системного программирования.
Личная жизнь
Бьёрн Страуструп женат на Марианне Страуструп (урождённой Йенсен), с которой познакомился во время учёбы в Орхусе. У них двое детей. В свободное время Страуструп увлекается чтением исторической литературы, плаванием и путешествиями. Он является гражданином Дании и США.
Источники
- Страуструп Б. «Язык программирования C++», 4-е издание. — М.: Вильямс, 2013.
- Страуструп Б. «Дизайн и эволюция C++». — М.: ДМК Пресс, 2006.
- Stroustrup B. «The C++ Programming Language», 4th ed. — Addison-Wesley, 2013.
- Stroustrup B. «The Design and Evolution of C++». — Addison-Wesley, 1994.
- Интервью с Бьёрном Страуструпом, журнал «Computerworld», 2008.
- Материалы комитета ISO/IEC JTC1/SC22/WG21 (стандартизация C++).
- Официальный сайт Бьёрна Страуструпа: www.stroustrup.com.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →