С++ родился

С++ был изобретен Бьярном Страуструпом в 1979 г. Сначала Страуструп назвал новый язык "С с классами". Однако в 1983 г. язык получил название С++.

Страуструп построил С++ на базе С, сохранив все возможности С, его характерные особенности и достоинства. Он перенял также и базовую стратегию С, согласно которой программист, а не язык определяет структуру программы. Важно понимать, что Страуструп не создал совершенно новый язык программирования. Напротив, он расширил уже имеющийся весьма успешный язык.

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

Создавая С++, Страуструп понимал, что добавляя к языку С поддержку объектно-ориентированного программирования, необходимо было в то же время сохранить дух языка С, включая его эффективность, гибкость и стратегию программирования. К счастью, эта цель была достигнута. С++ предоставляет программисту все возможности С, добавляя к ним могущество объектов.

Хотя первоначально С++ создавался в качестве средства разработки очень больших программ, его использование отнюдь не ограничивается этой сферой. В действительности объектно-ориентированные средства С++ могут эффективно применяться для решения практически любых задач программирования. Легко найти примеры разработки на С++ таких программных проектов, как текстовые или графические редакторы, базы данных, персональные файловые системы, сетевые утилиты и коммуникационные программы. В силу того, что С++ воспринял эффективность С, его часто используют для разработки высокопроизводительного системного программного обеспечения. Он также широко используется и для программирования в системе Windows.

 

Эволюция С++

С момента своего появления С++ претерпел три серьезных модификации, каждая из которых расширяла и изменяла язык. Первая модификация была предложена в 1985 г., вторая - в 1990 г. Третья модификация появилась в процессе стандартизации С++. Несколько лет назад началась разработка стандарта для С++. С этой целью организациями ANSI (Американский национальный институт стандартов) и ISO (Международная организация по стандартизации) был создан объединенный комитет по стандартизации. Первый вариант предлагаемого стандарта был выпушен 25 января 1994 г. В этот вариант комитет ANSI/ISO по С++ включил средства, определенные Страуструпом, с добавлением некоторых новых. В целом первый вариант стандарта отражал состояние С++ на тот момент времени.

Вскоре после завершения работы над первым вариантом стандарта С++ произошло событие, которое заставило серьезно расширить стандарт: создание Александром Степановым стандартной библиотеки шаблонов (Standard Template Library, STL). STL представляет собой набор обобщенных процедур, с помощью которых можно обрабатывать данные. Эта библиотека сочетает в себе могущество и элегантность. Но она также весьма велика. Выпустив первый вариант стандарта С++, комитет проголосовал за включение STL в спецификацию С++. Добавление STL расширило возможности С++ далеко за пределы его первоначального определения. С другой стороны, включение STL, хотя и вполне оправданное, замедлило процесс стандартизации С++.

Уместно заметить, что стандартизация С++ заняла значительно больше времени, чем это можно было предполагать. В процессе стандартизации к языку было добавлено много новых средств, а также внесено большое количество мелких изменений. В результате вариант С++, определенный комитетом ANSI/ISO, оказался значительно объемнее и сложнее первоначального замысла Страуструпа. Окончательный набросок стандарта был выпущен комитетом 14 ноября 1997 г., и весь стандарт стал действовать в 1998 г. Эту спецификацию С++ обычно называют стандартным С++.

Настоящий курс базируется как раз на стандартном С++. Это вариант С++, поддерживаемый всеми основными компиляторами языка С++, включая Visual С++ фирмы Microsoft и С++ Builder фирмы Borland.

 

Цель 1.2. Как С++ соотносится с языками Java и С#

Как известно, относительно недавно появилось два новых языка: Java и С#. Язык Java был разработан фирмой Sun Microsystems; С# создан фирмой Microsoft.

С++ является родительским языком по отношению к языкам Java и С#. Хотя и в Java, и в С# добавлены, удалены или модифицированы некоторые свойства, в целом синтаксис всех этих трех языков практически одинаков. Более того, объектная модель, используемая в С++, аналогична тем, что используются языками Java и С#. Наконец, общее ощущение программиста при работе на этих языках оказывается весьма схожим. Это значит, что если вы знаете С++, вы с легкостью изучите Java или С#. Справедливо также и обратное

Основное отличие Java и С# от С++ заключается в том, что они предназначены для разных вычислительных сред. С++ разрабатывался с целью обеспечения создания высокопроизводительных программ для конкретного типа процессора и определенной операционной системы. Например, если вы хотите написать программу, которая будет выполняться на процессоре Pentium фирмы Intel под управлением операционной системы Windows, то лучше С++ вы ничего не найдете.

Java и С# создавались для обеспечения специфических требований, возникающих при написании программ реального времени, работающих в среде сети Интернет (С# также имел своей целью задачу упрощения разработки программных компонентов). Интернет объединяет много разных типов процессоров и операционных систем. С его широким распространением особое значение приобрела возможность создания межплатформенных, переносимых программ.

Первым языком, решающим эту задачу, стал Java. Используя этот язык, можно писать программы, работающие в самых различных вычислительных средах. Java-программа может свободно перемещаться в сети Интернет. Однако, ценой, которую вы платите за переносимость, является эффективность; Java-программы выполняются медленнее программ, написанных на С++. То же справедливо и по отношению к С#. Вывод таков: если вы разрабатываете высокопроизводительное программное обеспечение, используйте С++. Если вам нужны высокомобильные, переносимые программы, используйте Java или С#.