[Оглавление]
[Вниз]

ПРЕДИСЛОВИЕ

Язык программирования Си++ был разработан на основе языка Си Бьярном Страуструпом (Вjаrnе Stroustгuр) и вышел за пределы его исследовательской группы в начале 80-х годов [I]. На первых этапах разработки (1980 г.) язык носил условное название "Си с классами", а в 1983г. Рик Масситти придумал название "Си++", что образно отразило происхождение этого нового языка от языка Си. Язык Си++ является расширением (надмножеством) языка Си, поэтому программы, написанные на Си, могут обрабатываться компилятором языка Си++. Более того, в программах на языке Си++ можно использовать тексты на языке Си и обращаться к библиотечным функциям языка Си. Таким образом, одно из достоинств Си++ состоит в возможности использовать уже существующие программы на Си. Однако это не единственное достоинство языка. Как пишет его автор [2], язык Си++ был создан с учетом следующих целей: улучшить язык Си, поддержать абстракцию данных и обеспечить объектно-ориентированное программирование.

Настоящая работа посвящена синтаксису, семантике, технике и стилю построения программ языка Си++. Фундаментальным трудом по синтаксису и семантике языка Си++ является справочное руководство по языку (Проект стандарта АN51) М. Эллис и Б. Страуструпа Как всякий стандарт, работа [2] непригодна для первоначального знакомства с языком, что и отмечают в предисловии к русскому изданию сами авторы [2]: "... книга не предназначена для обучения технике и стилю программирования". В настоящее время на русском языке издано несколько хороших пособий по языку Си++ для тех, кто уже программирует на языке Си (см. библиографию). В отличие от этих пособий, в которых язык Си++ вводится как расширение своего предшественника Си, настоящая работа не требует от читателя знакомства с языком Си. Другими словами, материал книги по возможности "замкнут" и содержит всю необходимую информацию для фундаментального освоения языка Си++ как нового для читателя программирования. Например, книгу может изучать читатель, знакомый с языком Паскаль или Бейсик, или Фортран, или ПЛ/1 и т.п. Знакомство с языком Си никак не повредит читателю, но изложение материала этого не предполагает. Итак, язык Си++ излагается как новый язык, свойства которого раскрываются перед читателем постепенно. Здесь мы полностью следуем совету: "... программируя на Си++, нужно... не применять те средства языка, которые представляются вам неясными, как и те, с которыми вы еще не успели ознакомиться" [2].Несмотря на широкое распространение и популярность языка Си++ стандарты для него отсутствуют. Через несколько лет его практического использования стандартом де-факто стала спецификация языка. АТ&Т С++ ге1еаsе 2.0, разработанная в Ве11 laboratories фирмы AТ&Т под руководством автора языка Б. Страуструпа. Затем там же появилась усовершенствованная версия 3.0 языка Си++. В настоящее время в Американском национальном институте Стандартов (АNS1) существует комитет по языку Си++ (ХЗJIб). Изданное в 1990 году описание языка с комментариями [2] принято комитетом АNS1 в качестве исходного материала для стандартизации Си++. С тех пор рабочей группой WG21 комитета АN51 выпущено несколько предварительных версий стандарта. Последняя из них (но не окончательная) [34] датирована 26 мая 1994 г. (документ АNS1 X3JIG/94-0098). Весьма полная реализация соглашений по языку Си++ выполнена в широко распространенных компиляторах Тигbо С++ и Вог1аnd С++ фирмы Вог1аnd. Эти программные средства (на которые в тексте делаются ссылки ТС++ и ВС++) и соответствующая фирменная документация были использованы при подготовке настоящей работы. Приводимые в тексте программы в основном отлаживались и выполнялись в интегрированной среде Вог1аnd С++ 3.1 и Turbo С++ 1.01. Версии компиляторов Вог1аnd С++ 4.0 и Вог1аnd С++ 4.5 потребуются читателю только при использовании механизма обработки особых ситуаций (см. главу 12).Содержание пособия подробно отражено в оглавлении, поэтому не будем на нем останавливаться, а приведем только несколько пояснений. Изложение в начальных главах до некоторой степени конспективное, но все разбираемые вопросы сопровождаются примерами. При выборе примеров, оказалось, весьма непросто ограничиваться только уже рассмотренными средствами языка и "не забегать вперед". В тех случаях, когда новые конструкции появляются в примерах до их определения, они тщательно объясняются и комментируются. Тем самым читатель получает возможность неформального предварительно знакомства с некоторыми важными и широко используемыми конструкциями языка Си++, синтаксис которых описывается позже.

Несмотря на то, что в книге изложены практически все основные принципы, средства и механизмы языка Си++, необходимые для объектно-ориентированного программирования, мы не стали только ради моды наспех говорить о технологии объектно-ориентированного программирования СИ++. Здесь мы полностью следуем совету: "... программируя на Си++, нужно... не применять те средства языка, которые представляются вам неясными, как и те, с которыми вы еще не успели ознакомиться" [2].

Несмотря на широкое распространение и популярность языка Си++ стандарты для него отсутствуют. Через несколько лет его практического использования стандартом де-факто стала спецификация языка. АТ&Т С++ ге1еа5е 2.0, разработанная в Ве11 Laboratories фирмы АТ&Т под руководством автора языка Б. Страуструпа. Затем там же появилась усовершенствованная версия 3.0 языка Си++. В настоящее время в Американском национальном институте Стандартов (АNS1) существует комитет по языку Си++ (ХЗJI6). Изданное в 1990 году описание языка с комментариями [2] принято комитетом АN51 в качестве исходного материала для стандартизации Си++. С тех пор рабочей группой WG21 комитета АN51 выпущено несколько предварительных версий стандарта. Последняя из них (но не окончательная) [34] датирована 26 мая 1994 г. (документ АN51 X3JIG/94-0098). Весьма полная реализация соглашений по языку Си++ выполнена в широко распространенных компиляторах Тurbо С++ и Вог1аnd С++ фирмы Вог1аnd. Эти программные средства (на которые в тексте делаются ссылки ТС++ и ВС++) и соответствующая фирменная документация были использованы при подготовке настоящей работы. Приводимые в тексте программы в основном отлаживались и выполнялись в интегрированной среде Вог1аnd С++ 3.1 и Тurbо С++ 1.01. Версии компиляторов Вог1аnd С++ 4.0 и Вог1аnd С++ 4.5 потребуются читателю только при использовании механизма обработки особых ситуаций (см. главу 12).

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

Для успешного усвоения материала пособия от читателя требуются знания основ информатики и некоторые навыки программирования на каком-либо алгоритмическом языке.Материал для главы 12, посвященной исключительным ситуациям, автору помог подобрать С. Г. Чернацкий. Им же написаны и отлажены некоторые программы, помещенные в главе 12.

В заключение предисловия несколько слов о той помощи, которую получил автор и за которую он глубоко признателен. Студенты факультета прикладной математики (ФПМ) Московского государственного институт" электроники и математики (МИЭМ), слушая лекции автора, своими вопросами и замечаниями помогли исправить некоторые шероховатости изложения материала. При печати и редактировании рукописи, а также при анализе результатов выполнения программ автору помогали коллеги по работе. Среди них особую благодарность считаю необходимым выразить В. Г. Воросколевской, Н. Н. Ионцеву, А. В. Утолину, С. Г. Чернацкому, О. В. Шехановой.

[Оглавление]
[Вверх]
 

Hosted by uCoz