Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / C / C++ / Введение в язык C++ /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


Исторические замечания - Программирование от RIN.RU
Исторические замечания

Безусловно, C++ восходит главным образом к C. C сохранено как подмножество, поэтому сделанного в C акцента на средствах низкого уровня достаточно, чтобы справляться с самыми насущными задачами системного программирования. C, в свою очередь, многим обязано своему предшественнику BCPL; на самом деле, комментарии // (заново) введены в C++ из BCPL. Если вы знаете BCPL, то вы заметите, что в C++ по-прежнему нет VALOF блока. Еще одним источником вдохновения послужил язык Simula67; из него была позаимствована концепция класса (вместе с производными классами и функциями членами). Это было сделано, чтобы способствовать модульности через использование виртуальных функций.


Возможности C++ по перегрузке операций и свобода в расположении описаний везде, где может встречаться оператор, похожи на Алгол68.


Название C++ - изобретение совсем недавнее (лета 1983его). Более ранние версии языка использовались начиная с 1980ого и были известны как "C с Классами". Первоначально язык был придуман потому, что автор хотел написать модели, управляемые прерываниями, для чего был бы идеален Simula67, если не принимать во внимание эффективность. "C с Классами" использовался для крупных проектов моделирования, в которых строго тестировались возможности написания программ, требующих минимального (только) пространства памяти и времени на выполнение. В "C с Классами" не хватало перегрузки операций, ссылок, виртуальных функций и многих деталей. C++ был впервые введен за пределами исследовательской группы автора в июле 1983его; однако тогда многие особенности C++ были еще не придуманы.


Название C++ выдумал Рик Масситти. Название указывает на эволюционную природу перехода к нему от C. "++" - это операция приращения в C. Чуть более короткое имя C+ является синтаксической ошибкой; кроме того, оно уже было использовано как совсем другого языка. Знатоки семантики C находят, что C++ хуже, чем ++C. Названия D язык не получил, поскольку он является расширением C и в нем не делается попыток исцеляться от проблем путем выбрасывания различных особенностей. Еще одну интерпретацию названия C++ можно найти в приложении к Оруэллу.


Изначально C++ был разработан, чтобы автору и его друзьям не приходилось программировать на ассемблере, C или других современных языках высокого уровня. Основным его предназначением было сделать написание хороших программ более простым и приятным для отдельного программиста. Плана разработки C++ на бумаге никогда не было; проект, документация и реализация двигались одновременно. Разумеется, внешний интерфейс C++ был написан на C++. Никогда не существовало "Проекта C++" и "Комитета по разработке C++". Поэтому C++ развивался и продолжает развиваться во всех направлениях чтобы справляться со сложностями, с которыми сталкиваются пользователи, а также в процессе дискуссий автора с его друзьями и коллегами.


В качестве базового языка для C++ был выбран C, потому что он (1) многоцелевой, лаконичный и относительно низкого уровня; (2) отвечает большинству задач системного программирования; (3) идет везде и на всем; и (4) пригоден в среде программирования UNIX. В C есть свои сложности, но в наспех спроектированном языке тоже были бы свои, а сложности C нам известны. Самое главное, работа с C позволила "C с Классами" быть полезным (правда, неудобным) инструментом в ходе первых месяцев раздумий о добавлении к C Simula-образных классов.


C++ стал использоваться шире, и по мере того, как возможности, предоставляемые им помимо возможностей C, становились все более существенными, вновь и вновь поднимался вопрос о том, сохранять ли совместимость с C. Ясно, что отказавшись от определенной части наследия C можно было бы избежать ряда проблем. Это не было сделано, потому что (1) есть миллионы строк на C, которые могли бы принести пользу в C++ при условии, что их не нужно было бы полностью переписывать с C на C++; (2) есть сотни тысяч строк библиотечных функций и сервисных программ, написанных на C, которые можно было бы использовать из или на C++ при условии, что C++ полностью совместим с C по загрузке и синтаксически очень похож на C; (3) есть десятки тысяч программистов, которые знают C, и которым, поэтому, нужно только научиться использовать новые особенности C++, а не заново изучать его основы; и (4), поскольку C++ и C будут использоваться на одних и тех же системах одними и теми же людьми, отличия должны быть либо очень большими, либо очень маленькими, чтобы свести к минимуму ошибки и недоразумения. Позднее была проведена проверка определения C++, чтобы удостовериться в том, что любая конструкция, допустимая и в C и в C++, действительно означает в обоих языках одно и то же.


Язык C сам эволюционировал за последние несколько лет, частично под влиянием развития C++. Предварительный грубый ANSI стандарт C содержит синтаксис описаний функций, заимствованный из "C с Классами". Заимствование идей идет в обе стороны; например, указатель void* был придуман для ANSI C и впервые реализован в C++. Когда ANSI стандарт разовьется несколько дальше, придет время пересмотреть C++, чтобы удалить необоснованную несовместимость. Будет, например, модернизирован препроцессор , и нужно будет, вероятно, отрегулировать правила осуществления плавающей арифметики. Это не должно оказаться болезненным, и C и ANSI C очень близки к тому, чтобы стать подмножествами C++



 8  Комментарии к статье  8 8  Обсудить в чате

8  В тему

Эффективность и структура

Размышления о программировании на C++

Правила Правой Руки

Турне по C++

Выражения и Операторы

Классы

Описания и Константы

Функции и Файлы

Классы

Перегрузка Операций

Производные Классы

Потоки

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь