Bjarne Stroustrup
30.12.1950
|
История
Так же как и в случае с языком Pascal, автором которого считается Никлаус Вирт, создание языка C++ обычно приписывают одному конкретному человеку. Бьерн Страуструп на основе языка С разработал столь же эффективный язык, но с некоторыми дополнительными возможностями в области наследования объектов. Для понимания языка C++ желательно, чтобы уже был изучен язык С.
В конце 70-х гг. Страуструп работал над своей докторской диссертацией в компьютерной лаборатории (Computing Laboratory) в Кембридже. В то время он использовал язык Simula (произошедший от ALGOL), в котором было введено понятие классов как объектов данных. Страуструп сделал вывод, что классы, определенные в Simula, могут служить эффективным механизмом для определения типов. Поступив на работу в компанию AT&T Bell Telephone Laboratories в США, он немедленно начал разрабатывать расширения для языка С, которые включали в себя некоторые возможности этих самых классов из Simula.
Страуструп руководствовался тем принципом, что все дополнения, привнесенные им в язык С, не должны понизить его эффективность и стать причиной замедления работы программ. Разработанные им расширения языка С, известные под названием С with Classes (С с классами), содержали основную структуру классов, входящую в современный C++. К 1982 г. его язык С с классами имел скромный успех в пределах AT&T Bell Telephone Laboratories, и Страуструпу, уподобившемуся гуру, приходилось решать все вопросы, связанные с поддержкой этого языка. В конце концов, эта обязанность стала для него слишком обременительной, и он пришел к выводу, что у него есть только две возможности :
Страуструп руководствовался тем принципом, что все дополнения, привнесенные им в язык С, не должны понизить его эффективность и стать причиной замедления работы программ. Разработанные им расширения языка С, известные под названием С with Classes (С с классами), содержали основную структуру классов, входящую в современный C++. К 1982 г. его язык С с классами имел скромный успех в пределах AT&T Bell Telephone Laboratories, и Страуструпу, уподобившемуся гуру, приходилось решать все вопросы, связанные с поддержкой этого языка. В конце концов, эта обязанность стала для него слишком обременительной, и он пришел к выводу, что у него есть только две возможности :
1. Прекратить поддержку языка С с классами, в результате чего его пользователи будут вынуждены переключиться на какой-либо другой язык и дадут мне возможность заниматься своими делами.
2. Используя весь накопленный опыт, разработать на основе С с классами новый (более качественный) язык, который имел бы коммерческий успех. Это позволит организовать поддержку и дальнейшее развитие нового языка на коммерческом уровне и впоследствии также даст мне возможность заниматься своими делами.
Он выбрал второй вариант и усовершенствовал язык С с классами, добавив новые возможности, а также устранив некоторые несоответствия, имевшиеся в этом языке.
В 1984 г. результат его труда получил новое название. Одни называли С с классами новым С, а другие называли стандартный С старым, или простым С. Некоторое время использовалось название С84, а затем Рик Маскитти из Bell Labs предложил название C++. В этом названии используется обозначение ++ операции увеличения на единицу в языке С, которое в данном случае означает "следующий", "последователь". Название C++ многократно обыгрывалось в различных каламбурах и служило поводом для многочисленных шуток . В основном разработка языка C++ была закончена к 1986 г., а в июне 1989 г. была выпущена вторая версия. В 1989 г. в Американском национальном институте стандартов (ANSI) был создан комитет, который к 1994 г. выпустил черновой стандарт языка, а через два года - его полный стандарт.
Возможности
Язык C++ является производным от языка С. Основным отличием языка C++ является наличие классов и механизма наследования объектов класса другими классами. При разработке языка C++ руководствовались следующими тремя принципами:
1) использование классов не должно приводить к более медленному выполнению программ по сравнению с программами без классов;
2) программы на С рассматриваются как подмножество программ на C++, то есть добавление классов не должно приводить к тому, что какие-либо свойства С не будут включены в C++;
3) не должна снизиться эффективность выполнения программ.
По большей части все три цели были достигнуты. Компилятор C++ способен компилировать большинство программ на С, хотя между этими языками все же существует некоторое несоответствие. Строгая типизация C++ действительно более строгая, чем в С. В C++ были добавлены некоторые зарезервированные слова. Среди прочих изменений можно отметить добавление новой формы комментариев: дополнительно к С-комментариям /*...*/ был добавлен их новый формат //, означающий, что все, что следует за символами // до конца строки, является комментарием. Также расширились возможности ввода и вывода за счет добавления функций обработки потоков cin и cout. Добавлены исключения, перегрузка операций и форма общего класса под названием шаблон.
Пример
100 REMARK S IS SUM; I IS INDEX
class stack { // предположим класс any
// содержит функцию next
any*v;
void push (anyx p)
{
p >next = v
v = p;
}
any*pop ()
{
if(v==0)return error_obj;
ani*r=v;
v=v->next;
return r;
}
};
|
|