Язык 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 поддерживала более широкий набор интерфейсов с общими системными ресурсами, например с каталогами и сокетами".
И далее в этом интервью он высказал мысль о том, "что любой язык, претендующий на широкое распространение, должен обладать необходимой базой для поддержания самых разнообразных технологий, включая объектно-ориентированное (иерархия классов) и обычное (параметрические типы и алгоритмы) программирование. Особенно хотелось бы отметить важность компоновки программ из отдельных блоков (возможно, даже написанных на разных языках). Я думаю также, что исключения совершенно необходимы для управления сложным механизмом обработки ошибок. Язык, в котором отсутствуют подобные средства, заставляет разработчиков потратить массу сил на то, чтобы их имитировать".
Читать дальше