• Часть IV, “Расширение кругозора”, посвящена изложению идей и истории программирования на примерах матричных вычислений, обработки текста, тестирования, а также встроенных систем управления на основе языка С.
•
К сожалению, программирование нельзя так просто разделить на четыре четко разделенные области. По этой причине предложенная классификация является довольно грубой, хотя мы считаем ее полезной (иначе не стали бы ее предлагать). Например, операции ввода в книге используются намного раньше детального описания стандартных потоков ввода-вывода в языке С++. Как только для описания какой-то идеи нам требуется упомянуть несколько тем, мы предпочитаем изложить минимум информации, а не отсылать читателя к подробному изложению темы в другом месте. Строгая классификация больше нужна для справочников, чем для учебников.
Порядок изложения определяется методами программирования, а не языковыми конструкциями (см. раздел 0.2). Обзор свойств языка содержится в приложении А.
0.1.1. Общие принципы
В книге я обращаюсь к вам непосредственно. Это проще и понятнее, чем принятое в научных работах косвенное обращение в третьем лице. Под местоимением “вы” я подразумеваю вас, читатель, а под местоимением “мы” — себя и преподавателей или нас с вами, работающих вместе над решением задачи, как если бы мы сами находились в одной комнате.
Каждая глава является вполне самодостаточной единицей, т.е. ее можно прочесть за один присест (что, конечно, не всегда возможно из-за напряженного расписания занятий). Это один из основных критериев разделения текста на главы. Кроме того, каждая глава содержит упражнения и задачи, а также посвящена конкретной концепции, идее или методу. Некоторые главы получились слишком длинными, поэтому не следует понимать выражение “за один присест” слишком буквально.
В частности, поразмышляв над контрольными вопросами, разобрав примеры и выполнив несколько упражнений, вы почти наверняка поймете, что вам следует еще раз перечитать какие-то разделы, и на это может уйти несколько дней. Мы объединили главы в части, посвященные основным темам, например вводу-выводу. Эти части удобны для проведения контрольных опросов.
Об учебниках часто говорят: “Он ответил на все мои вопросы сразу, как только я о них подумал!” Это типично для простых вопросов, и первые читатели рукописи этой книги заметили это. Однако этот принцип не может быть всеобщим. Мы поднимаем вопросы, которые новичку вообще не могут прийти в голову. Наша цель — поставить вопросы, необходимые для написания качественных программ, предназначенных для других людей, и ответить на них. Научить задавать правильные (часто сложные) вопросы необходимо для того, чтобы студент стал думать как программист. Задавать простые и очевидные вопросы очень удобно, но это не поможет стать программистом.
Мы стараемся уважать ваш интеллект и учитываем затраты вашего времени. В изложении мы ценим профессионализм, а не красивости, поэтому некоторые вещи недоговариваем, а не разжевываем. Мы стараемся не преувеличивать важность методов программирования или языковых конструкций, но не следует также недооценивать такие простые утверждения, как, например: “Это свойство часто оказывается полезным”. Если мы подчеркиваем, что некий материал является важным, то это значит, что рано или поздно вы потеряете много дней, если не освоите его. Мы шутим намного меньше, чем хотели бы, но опыт показывает, что у людей совершенно разное чувство юмора и попытки шутить могут лишь запутать изложение.