Литмир - Электронная Библиотека
A
A

Кроме того, рекомендуем каждому студенту принять участие в разработке небольшого проекта (или крупного, если будет время). Эти проекты предназначены для того, чтобы написать законченную полезную программу. В идеале проекты должны создаваться небольшими группами разработчиков (например, тремя программистами), работающих вместе около месяца и осваивающих главы части 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 и в разделе “Библиография” в конце книги.

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

0.2. Педагогические принципы

Чему мы хотим вас научить и как собираемся организовать процесс обучения? Мы попытались изложить минимальный объем концепций, методов и инструментов, необходимых для эффективного программирования. Их список приведен ниже.

• Организация программ.

• Отладка и тестирование.

• Разработка классов.

• Вычисления.

• Разработка функций и алгоритмов.

• Графика (только двумерная).

• Графические пользовательские интерфейсы.

• Обработка текста.

• Сопоставление регулярных выражений.

• Файлы и потоки ввода-выводы (I/O).

• Управление памятью.

• Научные/числовые/инженерные вычисления.

• Принципы проектирования и программирования.

• Стандартная библиотека языка С++.

• Стратегии разработки программного обеспечения.

• Приемы программирования на языке С.

Эти темы охватывают процедурное программирование (его типичным представителем является язык С), а также абстракцию данных, объектно-ориентированное и обобщенное программирование. Основным предметом книги является именно программирование, т.е. идеи, методы и средства выражения этих идей с помощью программ. Нашим основным инструментом является язык С++, поэтому мы довольно подробно описываем его многочисленные возможности. Однако следует помнить, что язык С++ — это просто инструмент, а не основной предмет изучения этой книги. Иначе говоря, книга посвящена программированию с помощью языка С++, а не языку С++ с небольшим количеством теории.

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

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

Одни темы покажутся некоторым программистам более интересными, чем другие. Однако мы советуем не предвосхищать свои потребности (как вы можете знать, что вам понадобится в будущем?) и хотя бы просмотреть каждую главу. Если вы используете книгу как учебник, а не самоучитель, то ваш преподаватель сам определит выбор глав.

Наш подход можно назвать глубинным, конкретным или концептуальным. Вначале, в главах 1–11, мы быстро (ну, хорошо, относительно быстро) описываем набор навыков, необходимых для написания небольших практических программ. При этом мы описываем много инструментов и приемов, не вдаваясь в детали. Мы акцентируем внимание на простых конкретных программах, поскольку конкретное усваивается быстрее, чем абстрактное. Большинство людей используют именно такой способ обучения. Не рассчитывайте на то, что уже на ранних стадиях обучения вы поймете все до малейших деталей. В частности, пытаясь сделать что-то, отличающееся от того, что только что работало, вы обнаружите “загадочные” явления. Впрочем, попытайтесь! И, пожалуйста, не забывайте выполнять упражнения и решать задачи, которые мы предлагаем. Помните, что на первых порах у вас просто еще нет достаточно знаний и опыта, чтобы понять, что является простым, а что сложным; выявляйте недостатки и учитесь на них.

вернуться

3

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

15
{"b":"847443","o":1}