Мы научились оценивать хорошие программы так же, как мы оцениваем хорошую литературу. И в центре этого движения находится Эдсгер Дейкстра, который создает образцы, столь же прекрасные, как и полезные, и размышляет над ними.
Бьорн Страуструп
Создатель языка C++
Всякий язык программирования общего назначения обязан поддерживать сразу множество парадигм, и каждая парадигма должна быть реализована хорошо, обеспечивая близкое к оптимальному время выполнения и распределения памяти.
Бьорн Страуструп
Бьорн Страуструп
Как пишет Том Даффи (Computerworld): "Множество открытий обязаны своим происхождением случаю. Но есть и немало других, которые стали возможны благодаря кропотливой работе и предвидению. Язык программирования C++, впервые предложенный лабораторией Bell Labs университетам в 1985 году, безусловно относится ко второй категории". Создателем языка C++, одного из наиболее популярных языков, основанных на концепции объектно-ориентированного программирования, является Бьорн Страуструп.
Он родился в 1950 году, в Ааргусе, втором по величине (250 тыс. жителей) городе Дании, расположенном на восточном побережье Ютландии. В 1975 году он окончил Университет Ааргуса по отделению компьютерных технологий и получил степень магистра. После получения магистерского диплома Бьорн Страуструп продолжил свое образование в Кембриджском университете Англии. В Кембридже, в Вычислительной лаборатории, он занимался проектированием распределенных систем, и в 1979 году ему была присуждена степень доктора философии.
В этом же году Страуструп вместе с семьей переехал в Нью-Джерси (США), где стал работать в Центре компьютерных исследований фирмы Bell Labs.
Когда он занимался исследованиями в фирме, Бьорну Страуструпу потребовалось написать несколько имитационных программ. SIMULA-67 — первый объектно-ориентированный язык для моделирования мог бы быть идеальным для подобных задач, если бы не его сравнительно низкая скорость выполнения программ.
Язык BCPL (Basic Combined Programming Language) не обладал средствами абстрагирования, которые казались необходимыми программисту. Те же ограничения имел и язык С, производный от BCPL.
Поэтому доктор Страуструп решил написать свою версию языка С, которую он назвал "Си с классами" (С with classes). В 1983 году язык подвергся значительным изменениям и получил название C++. Название придумал Рик Мэсчитти. Термин C++ — это оператор инкремента в С, который как бы намекает на то, что язык C++, нечто больше, чем просто С.
По словам коллеги Страуструпа Энди Кенига, тот не сомневался в шумном успехе нового языка. (Впоследствии Кениг совместно с Барбарой Му напишет книгу "Рассуждения о C++"). Страуструп разработал свой язык таким образом, чтобы он препроцессировался в С, а не компилировался в машинный язык, что открывало к нему доступ сотням тысяч пользователей С, имевших соответствующий компилятор.
"Препроцессирование в С обусловило повсеместное применение нового языка", — подчеркнул Кениг.
В 1984 году фирма Bell Labs была реорганизована и получила название АТ & Т Bell Labs. Первыми, кому фирма предложила C++, причем практически безо всякой оплаты, стали университеты. Это произошло в 1985 году. Для того чтобы смягчить положение, Страуструп одновременно опубликовал книгу "Язык программирования C++", которая выдержала четыре издания.
Язык быстро нашел свою аудиторию. В 1987 году на конференции по C++ собралось 200 человек. На следующий год, по словам Кенига, число участников возросло до 600, а в начале 90-х годов число пользователей, по его же оценкам, приближалось к полумиллиону. Это сделало данный язык мировым лидером по скорости распространения.
Изюминка C++ в том, что он позволяет программистам писать приложения всевозрастающей сложности с простыми как никогда интерфейсами. C++ доминирует среди объектно-ориентированных языков и служит фундаментом для программных приложений, ориентированных на любые машины — от ПК до суперкомпьютеров.
Поддержка C++ была встроена в средства передачи, коммутации и операционную систему корпорации АТ & Т, на этом же языке были написаны многие ее Internet-службы WorldNet.
Страуструп тем временем продолжал работать в АТ & Т Bell Labs, где возглавлял подразделение широкомасштабных программных исследований и активно занимался совершенствованием своего языка и созданием его стандарта. Стандарт ANSI/ISO C++ был выпущен в 1999 году.
В начале наступившего века корреспондент электронного журнала "Linux World" Дэнни Калев встретился с доктором Бьорном Страуструпом и попросил его ответить на некоторые вопросы, касающиеся особенностей и дальнейшего развития языка C++. В своем ответе Страуструп назвал 10 основных особенностей, которые являются предметом обсуждения разработчиков.
□ "Параллелизм: я сторонник библиотечной реализации потоков и параллельного выполнения операций без разделения памяти.
□ Отображение типов: неплохо было бы обеспечить библиотечную организацию интерфейса с информацией расширенных типов.
□ Типизация: хотелось бы, чтобы в библиотеку Standard Library были включены функции поддержки расширенных типов, однако конкретных предложений у меня нет.
□ Хэш-таблицы: конечно, необходимо интегрировать некоторые варианты популярной схемы hash_map.
□ Ограничения для аргументов-шаблонов: все это просто, универсально и элегантно реализуется в рамках существующего стандарта C++.
□ Операторы контроля: многие из наиболее важных операторов контроля — верификация кода и обработка ошибок — можно было бы реализовать в виде шаблонов. Некоторые из них следует включить в библиотеку Standard Library.
□ Сопоставление с регулярными выражениями: хотелось бы видеть в стандартном варианте языка библиотеку определения соответствия шаблонам.
□ Сборка мусора: в стандарте C++ нужно явно определить технологию, позволяющую игнорировать "скрытые указатели", а также конкретизировать порядок обработки деструкторов.
□ Графический интерфейс пользователя: хорошо было бы иметь стандартные конструкции GUI, но не знаю, насколько это реально в сложившейся ситуации.
□ Независимость от платформы: хотелось бы, чтобы Standard Library поддерживала более широкий набор интерфейсов с общими системными ресурсами, например с каталогами и сокетами".
И далее в этом интервью он высказал мысль о том, "что любой язык, претендующий на широкое распространение, должен обладать необходимой базой для поддержания самых разнообразных технологий, включая объектно-ориентированное (иерархия классов) и обычное (параметрические типы и алгоритмы) программирование. Особенно хотелось бы отметить важность компоновки программ из отдельных блоков (возможно, даже написанных на разных языках). Я думаю также, что исключения совершенно необходимы для управления сложным механизмом обработки ошибок. Язык, в котором отсутствуют подобные средства, заставляет разработчиков потратить массу сил на то, чтобы их имитировать".
Бьорн Страуструп написал несколько прекрасных книг по языку C++, а книга "Язык программирования C++" выдержала четыре издания. (1985, 1991, 1997, 2000) и является наиболее читаемой среди программистов, она переведена на 14 языков. Дважды (1990 и 1995 годах) его книги получали награды Доктора Добба за помощь программистам. В 1993 году Страуструп был удостоен награды ACM Грейс Мюррей Хоппер. В 1990 году журналом
Fortune он был назван одним из "20 самых молодых ученых Америки", а в 1995 году журналом BYTE — "одним из 20 самых значительных личностей в компьютерной индустрии за последние 20 лет".
В настоящее время Бьорн Страуструп живет в Ватчунге (Нью-Джерси, США) вместе с женой Мэриан, дочерью Аннемари и сыном Николасом. Его увлечение — история, литература, музыка, фотография, туризм, бег и путешествия (он посетил Австралию, Исландию и Индию).