В одном энциклопедическом словаре по поводу того, что такое язык, сказано буквально следующее:
"ЯЗЫК, 1) естественный язык, важнейшее средство человеческого общения. Я. неразрывно связан с мышлением; является социальным средством хранения и передачи информации, одним из средств управления человеческим поведением. Я. возник одновременно с возникновением общества в процессе совместной трудовой деятельности первобытных людей. Возникновение членораздельной речи явилось мощным средством дальнейшего развития человека, общества и сознания. Реализуется и существует в речи. Я. мира различаются строением, словарным составом и др., однако всем Я. присущи некоторые общие закономерности, системная организация единиц языка (например, парадигматические и синтагматические отношения между ними) и др. Я. изменяется во времени (см. Диахрония), может перестать использоваться в сфере общения (мёртвые Я.). Разновидности Я. (нац. Я., лит. Я., диалекты, Я. культа и др.) играют различную роль в жизни общества. 2) Любая знаковая система, напр. Я. математики, кино, Я. жестов. См. также Искусственные языки, Язык программирования. 3)…"
C++ также является языком. Его так и называют "язык программирования C++". Это формальный язык. Он служит для описания данных и алгоритмов их обработки на ЭВМ.
Несмотря на огромную разницу между естественными и формальными языками, у них есть много общего. Их общие черты неожиданно проявляются в самых разных областях.
Например, изучение естественного языка является сложным процессом, включающим как обретение элементарных автоматических навыков, так и восприятие сложных абстрактных понятий. При этом возможность относительно свободного использования языка как средства общения появляется уже на ранних стадиях этого процесса, когда вообще ещё не имеет смысла говорить о знании языка. Так, подавляющее большинство населения любого крупного города общается между собой, используя разговорный язык той страны или той местности, в которой расположен этот город. Практически все, кто проживает в городе, свободно владеет разговорным языком, а вернее, навыками разговорной речи. При этом лишь незначительная часть жителей действительно знает этот язык.
Аналогичная ситуация наблюдается и с языками программирования. Первые опыты программирования, подобно использованию навыков разговорной речи, не требуют особых познаний в области формальных языков. Для составления работающих программ достаточно иметь интуитивные представления об алгоритмах и устройстве компьютера. Часто бывает достаточно ознакомиться с несколькими работающими программами или даже с фрагментами таких программ, чтобы, в буквальном смысле используя образцы, успешно описывать собственные алгоритмы.
Однако грамотная речь невозможна без знания языка, а профессиональное программирование требует глубоких знаний в области языков программирования.
Книга "C++. Бархатный путь" адресована, прежде всего, тем, кто уже имеет навыки в области программирования, кто уже знает, что такое алгоритм, компьютер, редактор и транслятор, кто, возможно, уже наблюдал появление на экране дисплея волнующей надписи "Hello, world!" - учащимся старших классов и студентам младших курсов. Подобная адресация чисто условна, поскольку учиться, как известно, никогда не бывает поздно.
Эта книга о языке программирования C++. В ней на основе базовых языковых конструкций и элементарных понятий описываются всё более сложные элементы языка и связанные с ними концепции:
алфавит и идентификаторы
элементарные типы, объявления и пределения
операции, выражения и операторы
функции и их характеристики
производные типы и средства их построения
функции-члены, конструкторы и операторные функции
механизмы наследования, инкапсуляции и полиморфизма
шаблоны
потоки ввода-вывода
средства обработки исключительных ситуаций.
В книгу также включено несколько приложений:
грамматика языка C++;
информация о контроле типов, типизации и прочих важных характеристиках языков программирования;
сведения об алгоритмах преобразования, дополнительном коде и о преобразовании дробной части вещественного числа. Эти приложения включены в книгу с единственной целью: чтобы при обсуждении того, ЧТО ДЕЛАЕТСЯ, не возникало вопросов по поводу того, КАК ЭТО ДЕЛАЕТСЯ;
элементы теории комплексных чисел. Комплексные числа - наш полигон. Многие конструкции языка C++ мы в дальнейшем будем отрабатывать применительно к множеству комплексных чисел;
элементарные сведения об устройстве ЭВМ.
"Бархатный путь" не является учебником по программированию и поэтому в этой книге нет полезных советов, которые позволяли бы с помощью обсуждаемых языковых конструкций решать конкретные прикладные задачи. Большинство приводимых здесь примеров, на первый взгляд, кажутся бесполезными и даже бессмысленными. Однако выбор этих примеров далеко не случаен.
Дело в том, что C++ является языком "общения" человека с компьютером. Основным "читателем" текстов на языке C++ является транслятор. Это особая программа, в обязанности которой входит проверка правильности текста программы и его последующий перевод на язык процессора - основного устройства ЭВМ, который и обеспечивает выполнение программы. У процессора свой взгляд на программу. Он не имеет никакого представления о содержательной стороне описываемых алгоритмов. Процессору важны адреса, регистры, прерывания.
Язык программирования позволяет описывать алгоритмы и данные. Однако его выразительные возможности не исчерпываются множеством содержательных алгоритмов и связанных с ними структур данных. Даже самые абсурдные с точки зрения программиста, реализующего сколько-нибудь значимый алгоритм, предложения языка остаются абсолютно правильными и корректными для транслятора. Примеры, основанные на содержательных алгоритмах, неизбежно оставляют за рамками изложения множества предложений, на которых, порой, и выявляются характерные черты языка.
Несколько слов о названии книги. Понятие бархатного пути связано с железной дорогой. Бархатный путь - это высокое качество железнодорожного полотна и мастерство вождения локомотива. Бархатный путь предполагает мягкое взятие состава с места, его плавный разгон и ведение поезда без толчков, качки, лязга и скрежета. Путешествие по железной дороге - не самый лучший способ знакомства с местностью, по которой проложена эта самая дорога. Из окна вагона можно не заметить даже очень крутого поворота пути, а узкая полоска защитных насаждений вдоль железнодорожных путей порой кажется густым лесом. Проезжая через населённые пункты, часто удаётся разглядеть лишь заборы и привокзальные постройки. Так и страницы книги о языке программирования - не самое лучшее место для описания алгоритмов.
Однако поездка по железной дороге на дрезине, вне расписания, с остановками у переездов и мостов, стрелок, семафоров, поворотных кругов, горок и замедлителей является лучшим способом ознакомиться с устройством этой самой дороги. Такое путешествие - прекрасная возможность всё рассмотреть, потрогать и покрутить.
При работе над книгой использовался компилятор, входящий в состав интегрированной среды разработки приложений Borland C++ 4.5. Его следует воспринимать исключительно как простое средство передвижения по "бархатному пути" - своего рода hand car. Выбор транслятора для этой книги абсолютно не принципиален. Следует лишь иметь в виду, что выполнение примеров, которые приводятся в этой книге, в других инструментальных средах в ряде случаев может привести к иным результатам. Это связано с тем, что многие свойства языка C++ (размеры данных основных типов, способы их размещения в различных сегментах памяти и т.д.) зависят от конкретной реализации языка. Однако это нисколько не противоречит тому, о чём говорится в книге. Впрочем, везде, где это необходимо, в тексте содержатся соответствующие предупреждения.
C++ - это сложный, логически стройный и красивый язык. Его хорошее знание приводит к мастерскому владению этим языком. И здесь уже будет по силам решение любой задачи.