Apeiron
RU UA EN

IT имена: Bjarne Stroustrup (Бьёрн Страуструп) - С++

4 апр. 2022 г., 14:58:08
Содержание статьи:

Биография

Бьёрн Страуструп(Bjarne Stroustrup) родился 30 декабря 1950 в городе Орхусе, Дания. Также его имя встречается в сети и в литературе на манер его родного датского произношения Бьярне Строуструп.

Окончил Орхусский университет (Дания, 1975) по математике и информатике, защитил диссертацию (Ph. D.) по информатике в Кембридже (1979). До 2002 возглавлял отдел исследований в области крупномасштабного программирования в компании AT&T (Computer Science Research Center of Bell Telephone Laboratories). Ныне профессор Техасского университета А&М.

Бьёрн Страуструп


Бьёрн родился и вырос в городе Орхус («Aarhus»), втором по величине городом в Дании. Он поступил в государственный университет на отделение компьютерных наук. Закончив его, он получил степень магистра. Бьёрн Страуструп получил степень доктора философии, когда работал над конструированием распределённой системы в Компьютерной Лаборатории Кэмбриджского Университета (Англия). Он член колледжа имени Черчилля, где он и его жена Марьян («Marian») провели несколько чудесных и занятых лет, где у них родилась дочь Аннемария.

В 1979 году Страуструп, вместе со своей женой и дочерью, переехал в Нью-Джерси, чтобы пойти работать в Компьютерный Научно-Исследовательский Центр Bell Telephone Laboratories. В этом же году у него родился сын, Николас («Nicholas»).

Бьёрн был главой отдела Исследования Программирования, со времени его создания в AT&T до 2002 года, когда он соединился с отделением Научных Исследований Техасского университета A&M.

Что придумал Бьерн Страуструп

Язык программирования C++ имеет историю, начинающуюся в 1979 году, когда талантливый программист делал работу для своего доктора философии. Языком, с которым он работал, являлся Simula, в основном предназначенный (судя по названию) для симуляций. Это первый язык, поддерживающий парадигму объектно-ориентированного программирования, которая, как обнаружил Бьерн Страуструп, являлась очень полезной для разработки программного обеспечения. Однако язык Simula был слишком медленным для практического использования.

Орхусский университет

Он впервые познакомился с компьютером уже в стенах ВУЗа. Algol-60 был первым языком программирования, который выучил Бьярне.

Орхусский университет


Орхусский университет входил в ТОП-100 высших учебных заведений мира. Страуструп со страхом думал о том, что ему придется работать учителем математики, если не найдется работа в сфере программирования. Он был убежден, что математика должна иметь практическое приложение.Однако на втором курсе он понял, что программирование, и компьютерные технологии в целом, – это не только и не столько математика. Кроме того, оказалось, что Бьярне был не так хорош в математике, как он думал.

В одном из интервью Страуструп обозначил свою позицию по поводу обучения программированию:
Я оцениваю образование выше обучающих курсов. Я в большинстве случаев выберу специалиста с широким кругозором и глубокими базовыми знаниями, чем кого-то с сертификатом о прохождении узкоспециализированных курсов. Вообще мои идеал – это сочетание академических знаний и практических навыков.

В университетские годы Страуструп подрабатывал тем, что писал небольшие программы для подразделения компании Burroughs в Орхусе. Тогда он понял, что коммерческая разработка имеет мало общего с написанием программ для себя или друзей, и тем более, с выполнением лабораторных работ в ВУЗе. Бьярне получил опыт общения с пользователями, опыт поддержки и сопровождения кода.
Часть вырученных денег студент тратил на оплату собственного обучения. Помимо того, что он принес пользу себе, его разработки помогли вывести компанию на новый уровень: Burroughs в дальнейшем объединилась с Sperry, в результате чего образовалась компания Unisys – мировой производитель комплексных программно-аппаратных решений.
Кроме того, студент разрабатывал ПО и для нужд университета. В 1975 году Страуструп окончил его и получил степень магистра.

Кембридж

Ближе к концу обучения Бьярне заинтересовался микропрограммированием. Интерес усилился после стажировки в Кембридже. Поэтому Страуструп переехал в Англию, чтобы продолжить свое образование в Кембриджском университете. Там было все необходимое оборудование для изысканий в области микропрограммирования.

Кембридж


Кроме того, новый университет помог ему повысить требования к себе. В этом ВУЗе уровень студентов и педагогов был намного выше, чем в Орхусском университете. Это мотивировало Страуструпа развиваться активнее.
В Кембридже, в Вычислительной лаборатории, он занимался проектированием распределенных систем. В 1979 году Бьярне получил докторскую степень.
В этом же году Страуструп вместе с женой Мэриэн переехал в Нью-Джерси (США), где стал работать в Центре компьютерных исследований фирмы Bell Labs. В то время фирма была в «дружеских» отношениях с Кембриджским университетом.

Bell Labs


Для чего используют С++

Когда Страуструп занимался исследованиями в фирме, ему потребовалось написать несколько имитационных программ для моделирования распределенных вычислений. SIMULA-67 — объектно-ориентированный язык – мог бы стать идеальным инструментом для решения подобных задач, если бы не его сравнительно низкая скорость выполнения программ. К слову, этот язык Бьярне использовал еще во время написания своей диссертации в Кембридже – там он разрабатывал симулятор распределенных систем. До этого в сферу интересов Страуструпа не входила разработка языков программирования. Его интересовало микропрограммирование, операционные системы, архитектура вычислительных машин, разработка виртуальных машин. Правда, еще до окончания университета он успел изучить двадцать языков программирования. Но несмотря на это, Бьярне утверждает, что большого интереса к языкам он все-таки не испытывал. Тем не менее, Страуструп принял решение начать работу над новым языком программирования. Если вам приходится выбирать между написанием «хорошего» и «быстрого» кода, значит, здесь что-то не так. Потому что «хороший» код должен быть «быстрым», – объясняет Страуструп свою позицию в интервью. Так был создан язык программирования С++, первоначально получивший название «Си с классами» (С with classes). Название «С++» придумал Рик Мэсчитти. "++" — это оператор инкремента в С, который как бы намекает на то, что язык С++, нечто больше, чем просто С. В 1983 году язык подвергся значительным изменениям. Страуструп разработал свой язык таким образом, чтобы код не компилировался в машинный язык, а преобразовывался в набор команд препроцессора языка С. Это открывало к нему доступ сотням тысяч С-программистов, имевших соответствующий компилятор. В 1984 году Bell Labs была реорганизована и получила название AT&Т Bell Labs. Первыми, кому фирма предложила С++, причем практически бесплатно, стали университеты. В 1985 году Страуструп опубликовал одну из самых широко известных книг «Язык программирования С++», которая выдержала четыре издания (1985, 1991, 1997, 2000), и была переведена на 19 языков.

язык программирования С++


Как пишет Том Даффи: «Множество открытий обязаны своим происхождением случаю. Но есть и немало других, которые стали возможны благодаря кропотливой работе и предвидению. Язык программирования С++, впервые предложенный лабораторией Bell Labs университетам в 1985 году, безусловно относится ко второй категории».
С++ широко используется, начиная с игр (вот несколько известных: Counter-Strike, World of Warcraft и StarCraft) и 3D-анимаций и заканчивая программным обеспечением для самолётов.

Вот некоторые сферы использования С++:

  • драйверы;
  • микроконтроллеры;
  • программное обеспечение, операционные системы;
  • прикладные приложения — медиаплееры, браузеры, текстовые редакторы;
  • нейросети;
  • игры для компьютера;
  • игры для Xbox и PlayStation;
  • проекты, где важно строго контролировать память.

Бьярне Страуструп – о C/С++

«Я придумал C++, записал его первоначальное определение и выполнил первую реализацию. Я выбрал и сформулировал критерии проектирования C++, разработал его основные возможности и отвечал за судьбу предложений по расширению языка в комитете по стандартизации C++, – писал его автор. – Язык C++ многим обязан языку C, и язык C остается подмножеством языка C++ (но в C++ устранены несколько серьезных брешей системы типов C). Я также сохранил средства C, которые являются достаточно низкоуровневыми, чтобы справляться с самыми критическими системными задачами. Язык C, в свою очередь многим обязан своему предшественнику – BCPL».

В 2003 году в интервью Страуструп рассказал о своем отношении к проблемам совместимости С и С++:

Я думаю, что существующие проблемы несовместимости С и С++ – самое ужасное, что могло произойти в истории этих языков. В идеале эти языки нужно объединить. И мне кажется, это технически реализуемо только при условии внесения изменений в оба языка. Однако из-за нежелания вносить эти изменения языки продолжают отдаляться друг от друга, отравляя жизнь практически каждому C- и С++-разработчику. Я пытаюсь заставить людей увидеть положительные стороны в объединении. Я написал серию статей на эту тему. Но кто-то заинтересован в том, чтобы этого не произошло. Кроме того, я не вижу большого интереса и со стороны сообщества. Наверное, большинство, как обычно, надеется на то, что все «само рассосется».

С++ против Java

С++ и Java нередко сравнивают, потому что оба — популярные высокоуровневые объектно-ориентированные языки. Какие у них различия?

  1. Зависимость от платформы: при компиляции программа на Java сначала переводится в особый байт-код с помощью интерпретатора. Благодаря этому код в Java можно запустить на любой платформе. С++ при компиляции переводится в машинный код, поэтому это платформо-зависимый язык.
  2. Указатели: огромная часть работы в С++— работа с указателями, а в Java их нельзя использовать.
  3. В Java нет многих комплексных функций, которые есть в С++,— например структур, указателей и объединений.
  4. Многопоточность поддерживается в Java, но не в С++.
  5. Уровень языка: и Java, и С++ — высокоуровневые языки, но на Java работать на низком уровне не получится, в отличие от С++.

С++ против C

C и С++ просто нельзя не сравнить: мы уже знаем, что они близки хотя бы из-за истории создания C++, но в чем-то же они должны различаться?

Вот эти различия:

  1. Объекты и классы. Ради них всё и затевалось: желание создать C с поддержкой ООП — причина, по которой появился С++.
  2. Синтаксис. Несмотря на то что синтаксисы С и С++ очень похожи, они не идентичны: например в С для управления памятью используются функции malloc (), calloc () и free (), а в С++ это New и Delete. Функции ввода и вывода тоже различаются: в C это scanf () и printf (), а в С++ — Cin и Cout.
  3. Сохранность данных выше в С++, чем в C.
  4. Ссылки.C поддерживает только указатели, а C++— ещё и ссылки.
  5. Уровень языка.С++ работает на высоком уровне, а С — ближе к машинному коду.
  6. Использование. Из предыдущего пункта вытекает и различие в применении: C вы найдёте в первую очередь в операционных системах и драйверах. С++ для этого тоже используют, но ещё на нём пишут и разные приложения, игры и многое другое.

Научная деятельность

Книга Бьерна Страуструпа «Язык программирования C++» переведена на 19 языков и является одной из самых наиболее читаемых книг в области программирования. Кроме данной книги Страуструп написал еще 4 книги и опубликовал больше ста популярных статей.

Б. Страуструп активно участвовал в создании стандарта ANSI/ISO для языка C++ и сегодня участвует в поддержании и пересмотре стандарта. «Справочное руководство по языку программирования С++ с комментариями» Страуструпа в 1990 году получило награду за высочайшее мастерство в технической документации. Книга «Дизайн и эволюция С++» в 1994 году получила награду «Productivity Award» за помощь программистам в области совершенствования их исходных кодов.

В 2004 году Бьёрна Страуструпа избрали членом НАИ (Национальная академия инженерии) в США за «создание языка С++». Как первый компьютерный учёный, он был награждён («William Procter Prize for Scientific Achievement from Sigma Xi») американским научно-исследовательским сообществом в 2005 году. Бьёрн Страуструп работает в «AT&T Bell Laboratories» и AT&T. Кроме того, Страуструп является членом Техасской академии медицины, инженерного дела и науки (англ. Texas Academy of Medicine, Engineering, and Science). Бьёрн Страуструп был назван журналом «Fortune magazine» одним из «двенадцати лучших молодых американских учёных». Почётный доктор НИУ ИТМО (2013).

Награды и признание

Вот небольшой список основных достижений Бьёрна Страуструпа:

  • 1993 — Премия имени Грейс Мюррей Хоппер, «за его ранние работы в области языка С++, базирующиеся на его разработках и внёсшие наибольшее влияние в языки программирования за всю историю вычислительной техники».
  • 2004 — Премия «Компьютерный предприниматель» от Компьютерного сообщества IEEE, «за начало разработки и коммерциализации объектно-ориентированной технологии создания программ и за большие изменения, внесённые в бизнес и индустрию».
  • 2005 — Премия Уильяма Проктера за научные достижения.
  • 2015 — Премия Даля — Нюгора.
  • 2015 — Fellow Awards.
  • 2017 — Медаль Фарадея.
  • 2018 — Пионер компьютерной техники.
  • 2018 — Премия "CBL".
  • 2018 — Премия Дрейпера.

Книги

Книги под авторством Бьёрна Страуструпа:

  • Бьярне Страуструп. Программирование: принципы и практика использования C++, исправленное издание = Programming: Principles and Practice Using C++. — М.: «Вильямс», 2011. — С. 1248. — ISBN 978-5-8459-1705-8.
  • The C++ Programming Language by Bjarne Stroustrup — Addison–Wesley Pub Co; 3rd edition (February 15, 2000); ISBN 0-201-70073-5.
  • The Design and Evolution of C++ by Bjarne Stroustrup — Addison–Wesley Pub Co; 1st edition (March 29, 1994); ISBN 0-201-54330-3.
  • The Annotated C++ Reference Manual by Margaret A. Ellis & Bjarne Stroustrup — Addison–Wesley Pub Co; (January 1, 1990); ISBN 0-201-51459-1.

Ссылки

Ниже пару полезных ссылок на ресурсы связанные с Бьёрном Страуструпом: