Чтение онлайн

на главную - закладки

Жанры

Программирование. Принципы и практика использования C++ Исправленное издание
Шрифт:

Эту книгу следует читать главу за главой от начала до конца. Довольно часто у вас будет появляться желание вернуться в какое-то место и перечитать его во второй или в третий раз. На самом деле это единственное разумное поведение, так как со временем некоторые детали стираются в памяти. В таких случаях вы обязательно рано или поздно постараетесь их освежить. Однако, несмотря на предметный указатель и перекрестные ссылки, это не та книга, которую можно открыть на любой странице и начинать читать, рассчитывая на успех. Каждый раздел и каждая глава требуют от вас твердого знания материала, изложенного в предыдущих разделах и главах.

Каждая глава является вполне самодостаточной единицей, т.е. ее можно прочесть за один присест (что,

конечно, не всегда возможно из-за напряженного расписания занятий). Это один из основных критериев разделения текста на главы. Кроме того, каждая глава содержит упражнения и задачи, а также посвящена конкретной концепции, идее или методу. Некоторые главы получились слишком длинными, поэтому не следует понимать выражение “за один присест” слишком буквально.

В частности, поразмышляв над контрольными вопросами, разобрав примеры и выполнив несколько упражнений, вы почти наверняка поймете, что вам следует еще раз перечитать какие-то разделы, и на это может уйти несколько дней. Мы объединили главы в части, посвященные основным темам, например вводу-выводу. Эти части удобны для проведения контрольных опросов.

Об учебниках часто говорят: “Он ответил на все мои вопросы сразу, как только я о них подумал!” Это типично для простых вопросов, и первые читатели рукописи этой книги заметили это. Однако этот принцип не может быть всеобщим. Мы поднимаем вопросы, которые новичку вообще не могут прийти в голову. Наша цель — поставить вопросы, необходимые для написания качественных программ, предназначенных для других людей, и ответить на них. Научить задавать правильные (часто сложные) вопросы необходимо для того, чтобы студент стал думать как программист. Задавать простые и очевидные вопросы очень удобно, но это не поможет стать программистом.

Мы стараемся уважать ваш интеллект и учитываем затраты вашего времени. В изложении мы ценим профессионализм, а не красивости, поэтому некоторые вещи недоговариваем, а не разжевываем. Мы стараемся не преувеличивать важность методов программирования или языковых конструкций, но не следует также недооценивать такие простые утверждения, как, например: “Это свойство часто оказывается полезным”. Если мы подчеркиваем, что некий материал является важным, то это значит, что рано или поздно вы потеряете много дней, если не освоите его. Мы шутим намного меньше, чем хотели бы, но опыт показывает, что у людей совершенно разное чувство юмора и попытки шутить могут лишь запутать изложение.

Мы не претендуем на то, что наши идеи или инструменты идеальны. Ни один инструмент, ни одна библиотека и ни один метод не может решить все проблемы, возникающие у программиста. В лучшем случае они помогут разработать и реализовать ваше решение. Мы очень старались избегать “святой лжи”, т.е. отказались от упрощенных объяснений, которые легко и просто понять, но которые на самом деле неверны в контексте реальных языков и задач. С другой стороны, эта книга — не справочник; более точное и полное описание языка С++ изложено в книге Страуструп Б. Язык программирования С++. — М.; СПб. — “Издательство БИНОМ” – “Невский диалект”, 2001. — 1099 с., и в стандарте ISO C++ .

0.1.2. Упражнения, задачи и т.п.

Программирование — это не просто интеллектуальная деятельность, поэтому для овладения этим искусством необходимо писать программы. Мы предлагаем два уровня практического программирования.

Задания. Простые задачи, предназначенные для отработки практических, почти механических навыков. Задания обычно подразумевают последовательность модификаций простой программы. Вы должны выполнить каждое задание. Задания не требуют глубокого понимания, ума или инициативы. Мы рассматриваем их как очень важную часть книги. Если вы не выполните задания, то не поймете материал, изложенный в книге.

Упражнения. Одни упражнения тривиальны, другие очень сложны, но большинство из них предназначено для того, чтобы разбудить у вас инициативу и соображение. Если вы серьезный человек, то выполните хотя бы несколько упражнений. Попробуйте это сделать хотя бы для того, чтобы понять, насколько это трудно для вас. Затем выполните еще несколько упражнений. Так постепенно вы справитесь с большинством

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

Кроме того, рекомендуем каждому студенту принять участие в разработке небольшого проекта (или крупного, если будет время). Эти проекты предназначены для того, чтобы написать законченную полезную программу. В идеале проекты должны создаваться небольшими группами разработчиков (например, тремя программистами), работающих вместе около месяца и осваивающих главы части III.

Большинство студентов получают удовольствие именно от работы над проектом, который связывает людей друг с другом. Одни люди предпочтут отложить книгу в сторону и решать задачи, еще не дойдя до конца главы; другие захотят дочитать до конца и лишь затем приступить к программированию. Для того чтобы поддержать студентов, желающих программировать сразу, мы предлагаем простые практические задания, которые озаглавлены ПОПРОБУЙТЕ. Эти задания являются естественными составными частями книги. По существу, эти задания относятся к упражнениям, но сфокусированы на узкой теме, которая изложена перед их формулировкой. Если вы пропустите это задание — например, потому, что поблизости нет компьютера или вас слишком увлекло чтение книги, — вернитесь к нему, когда начнете разбирать упражнения; задания ПОПРОБУЙТЕ либо являются частью упражнений, либо дополняют их. В конце каждой главы вы найдете контрольные вопросы. Они предназначены для закрепления основных идей, объясняемых в главе. Эти вопросы можно рассматривать как дополнения к задачам. В то время как задачи посвящены практическим аспектам программирования, контрольные вопросы позволяют сформулировать идеи и концепции. Этим они напоминают интервью.

Раздел “Термины” в конце каждой главы представляет собой часть словаря по программированию и языку С++. Если хотите понимать, что люди говорят о программировании, и свободно выражать свои собственные идеи, вам следует знать значение этих слов.

Повторенье — мать ученья. Идеальный студент должен повторить каждую важную идею как минимум дважды, а затем закрепить ее с помощью упражнений.

0.1.3. Что потом?

Станете ли вы профессиональным программистом или экспертом по языку С++, прочитав эту книгу? Конечно, нет! Настоящее программирование — это тонкое, глубокое и очень сложное искусство, требующее знаний и технических навыков. Рассчитывать на то, что за четыре месяца вы станете экспертом по программированию, можно с таким же успехом, как и на то, что за полгода или даже год вы полностью изучите биологию, математику или иностранный язык (например, китайский, английский или датский), или научитесь играть на виолончели. Если подходить к изучению книги серьезно, то можно ожидать, что вы сможете писать простые полезные программы, читать более сложные программы и получите хорошие теоретическую и практическую основы для дальнейшей работы.

Прослушав этот курс, лучше всего поработать над реальным проектом. Еще лучше параллельно с работой над реальным проектом приступить к чтению какой-нибудь книги профессионального уровня (например, Bjarne Stroustrup, The C++ Programming Language, Special Edition (Addison-Wesley, 2000), более специализированной книги, связанной с вашим проектом (например, документации по библиотеке Qt для разработки графического пользовательского интерфейса GUI, или справочника по библиотеке ACE для параллельного программирования, или учебника, посвященного конкретному аспекту языка С++, например Кёниг Э., Му Б. Эффективное программирование на C++. — М.: Издательский дом “Вильямс”, 2002. — 384 с.; Саттер Г. Решение сложных задач на С++. — М.: Изд-во Вильямс, 2002. — 400 с.; Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж. Приемы объектно-ориентированного проектирования. Паттерны проектирования. — Спб.: Питер, 2004. — 366 с.) [3] . Полный список рекомендуемых книг приведен в разделе 0.6 и в разделе “Библиография” в конце книги.

3

Приведены русскоязычные переводы рекомендуемых автором книг. — Примеч. ред.

Поделиться:
Популярные книги

Адъютант

Демиров Леонид
2. Мания крафта
Фантастика:
фэнтези
6.43
рейтинг книги
Адъютант

Защитник

Астахов Евгений Евгеньевич
7. Сопряжение
Фантастика:
боевая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Защитник

Свет во мраке

Михайлов Дем Алексеевич
8. Изгой
Фантастика:
фэнтези
7.30
рейтинг книги
Свет во мраке

Серые сутки

Сай Ярослав
4. Медорфенов
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Серые сутки

Кодекс Охотника. Книга XIV

Винокуров Юрий
14. Кодекс Охотника
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XIV

Всплеск в тишине

Распопов Дмитрий Викторович
5. Венецианский купец
Фантастика:
попаданцы
альтернативная история
5.33
рейтинг книги
Всплеск в тишине

Секретарша генерального

Зайцева Мария
Любовные романы:
современные любовные романы
эро литература
короткие любовные романы
8.46
рейтинг книги
Секретарша генерального

Назад в СССР: 1985 Книга 2

Гаусс Максим
2. Спасти ЧАЭС
Фантастика:
попаданцы
альтернативная история
6.00
рейтинг книги
Назад в СССР: 1985 Книга 2

Романов. Том 1 и Том 2

Кощеев Владимир
1. Романов
Фантастика:
фэнтези
попаданцы
альтернативная история
5.25
рейтинг книги
Романов. Том 1 и Том 2

Камень. Книга 4

Минин Станислав
4. Камень
Фантастика:
боевая фантастика
7.77
рейтинг книги
Камень. Книга 4

Жена на четверых

Кожина Ксения
Любовные романы:
любовно-фантастические романы
эро литература
5.60
рейтинг книги
Жена на четверых

Титан империи

Артемов Александр Александрович
1. Титан Империи
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Титан империи

СД. Восемнадцатый том. Часть 1

Клеванский Кирилл Сергеевич
31. Сердце дракона
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
6.93
рейтинг книги
СД. Восемнадцатый том. Часть 1

Сердце Дракона. Том 11

Клеванский Кирилл Сергеевич
11. Сердце дракона
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
6.50
рейтинг книги
Сердце Дракона. Том 11