Наша книга предназначена для читателей разных категорий. Если вы школьник или
студент, вам только что прочитали курс программирования и вы захотели узнать об
этом предмете побольше, эта книга расширит ваше образование моментами,
которые недостаточно подробно освещаются в школе. Если разработка программ
составляет часть вашей работы, но не исчерпывает ее, а только
дополняет другие
формы, то наша книга наверняка поможет вам делать это более эффективно. Если
вы профессиональный программист и чувствуете, что в свое время недостаточно
изучили перечисленные выше вопросы (или же просто хотите освежить их в памяти),
или если вы руководите группой программистов и хотите ставить своим
подчиненным правильные задачи, материал
этой книги вам обязательно пригодится.
Мы надеемся, что наши советы помогут вам писать более качественные программы.
Единственное, что вам необходимо, — это иметь некоторый опыт в
программировании, желательно на С, C++ или Java. Естественно, чем больше ваш
опыт, тем проще вам будет понять и применить наши советы, ничто не сможет
сделать эксперта из новичка
за 21 день.
Для работающих с системами Linux и Unix многие примеры будут более знакомы,
чем для тех, кто использовал только системы Windows и Macintosh, однако все без
исключения найдут в этой книге рекомендации, которые облегчат им жизнь.
Каждая из девяти глав, составляющих книгу, посвящена конкретному глобальному
аспекту практики программирования.
В главе 1 обсуждается стиль программирования
. Хороший стиль настолько
необходим для написания хороших программ, что мы решили начать разговор
именно с него. Хорошо написанные программы лучше, чем плохо написанные, — в
них меньше ошибок, их легче отлаживать и модифицировать, — поэтому
задумываться о стиле надо с самого начала. В этой главе затрагивается и такой
важный аспект хорошего программирования,
как применение идиом,
соответствующих используемому языку программирования.
Алгоритмы и структуры данных — предмет обсуждения главы 2 — занимает
центральное место в учебных планах всех курсов программирования. Поскольку
большинство читателей в той или иной степени уже знакомо с этим материалом, мы
даем лишь краткий обзор ряда алгоритмов и структур данных, которые встречаются
во многих программах
. Более сложные алгоритмы и структуры данных, как правило,
являются производными от этих базовых вариантов, так что главное — разобраться
с основами.
В главе 3 описываются проектирование и реализация небольшой программы,
которая иллюстрирует применение алгоритмов и структур данных в реальном
программировании. Программа реализована на пяти языках; сравнение версий
позволяет увидеть, как в них
обрабатываются одни и те же структуры данных и как в
зависимости от языка изменяются выразительные возможности и
производительность.
Интерфейсы между пользователями, программами и частями программ являются
одной из фундаментальных основ программирования; успех того или иного
программного продукта во многом определяется тем, насколько хорошо
спроектированы и реализованы в нем интерфейсы. В главе
4 показана эволюция
небольшой библиотеки для синтаксического разбора одного широко используемого
формата данных. Хотя пример и невелик,-он иллюстрирует многие понятия,
связанные с проектированием интерфейсов: абстракцию, сокрытие информации,
управление ресурсами и обработку ошибок.