Математика

Физика

Химия

Биология

Техника и    технологии

Стиль, разработка, эффективность, отладка и испытание программ-Д. Ван Тассел
Д. Ван Тассел
Т23 Стиль, разработка, эффективность, отладка и испытание программ: Пер. с англ. — 2-е изд., испр., — М.: Мир, 1985.—332 с., ил.
В книге американского автора рассмотрен широкий круг вопросов, касающихся стиля написания программ, рациональных методов их разработки и опти« мизацин, стратегии отладки и тестирования. Приводимые рекомендации основаны на многолетнем опыте автора.
Для специалистов с разной подготовкой — от начинающих программистов до профессионалов, а также для студентов, обучающихся программированию.
ПРЕДИСЛОВИЕ РЕДАКТОРА ПЕРЕВОДА
В каждой области знаний имеется набор методических при< емов, которыми должен владеть хороший специалист. Данная книга посвящена описанию таких приемов и правил их применения в программировании. Весь процесс программирования— от постановки задачи до получения рабочей программы— автор делит на этапы и для каждого из них рассматривает методы и приемы, облегчающие их выполнение.
Для получения необходимых навыков читателю предлагается большое число упражнений разной степени трудности.
Книга является прекрасным руководством по программированию. Особую ценность она представляет для студентов и начинающих программистов, так как помогает им в практическом развитии навыков программирования, ориентируя в направлении создания удобочитаемых, эффективных и правильных программ.
Большинство методических указаний, содержащихся в данной книге, не являются новыми для квалифицированных программистов. Тем не менее пособие принесет пользу и этому контингенту читателей, так как позволит им систематизировать и уточнить свои приемы и методы разработки программ. Книга также представляет интерес для преподавателей по программированию как пособие для чтения лекций и ведения практических занятий.
Предисловие и гл. 1—3 переведены канд. техн. наук В. А. Прониной, гл. 4—6 и приложение — канд. техн. наук Е. К- Масловским. Большие трудности при переводе возникли из-за значительного числа новых терминов, введенных автором, которые не имеют устоявшихся эквивалентов в русском языке.
Э. А. Трахтенгерц
ПРЕДИСЛОВИЕ
Эта книга предназначена для тех, кто уже умеет программировать, но хочет повысить свой профессиональный уровень, и является по существу руководством по программированию.
В книге нашли отражение пять вопросов, редко рассматриваемых в литературе для начинающих программистов: стиль (или удобочитаемость), проектирование, эффективность (или оптимизация), отладка и тестирование программ. Знание этих вопросов приходит с опытом. Опыт является хорошим учителем, но обучающим довольно медленно и бессистемно. Большинство из тех, кто умеет программировать, убедились в том, что нельзя полностью на него полагаться в изучении столь важных вопросов.
Поскольку книга выходит вторым изданием, отметим его основные отличия от первого издания.
Глава 1 «Стиль программирования» расширена и частично переработана. Глава 2 «Проектирование программ» полностью переработана с использованием совершенно нового материала: особое внимание уделяется методу проектирования сверху вниз и структурному программированию. Глава 3 «Эффективность программ» выдержала испытание временем и претерпела лишь незначительные изменения. Глава 4 «Отладка программ» переработана немного: в центре внимания находится вопрос о правильности написания программы с первого раза. Глава 5 «Тестирование программ» переделана довольно значительно: особо отмечены преимущества метода тестирования сверху вниз; обсуждаются также современные, более сложные методы тестирования программ. Глава 6 «101 задача для программиста» также переработана, расширена, задачи систематизированы; хотя здесь приведена 101 задача, в действительности их значительно больше, поскольку в некоторых из них предлагается разработать несколько программ. Задачи этой главы рассчитаны на любой уровень знаний читателя и охватывают достаточно полный набор вопросов по программированию. Упражнения в конце каждой главы претерпели существенные изменения. Они пересмотрены, перекомпонованы и расширены за счет добавления новых задач.
В конце каждой главы помещены советы программисту, отражающие ключевые положения главы. Справочно-библиогра-фический материал первого издания также подвергся изменениям. ,
Мне было приятно работать над вторым изданием книги",, потому что она мне очень нравится (обычно авторы не любят своих произведений), и, кроме того, у меня накопилось много-нового материала. По-видимому, книгой широко пользовались,-так как я получил многочисленные предложения по ее улучшению.
Судя по отзывам, первое издание книги привлекло внимание широкого круга читателей: от профессиональных программистов, работающих с книгой самостоятельно, до лиц, обучающихся на курсах по программированию. В связи с этим упражнения, приводимые в конце каждой главы, я разделил на четыре категории: «Повторение пройденного», «Задания», «Программы» и «Проекты».
Упражнения первого типа служат для того, чтобы выяснить, насколько хорошо усвоен материал главы. Обучающийся должен быть в состоянии ответить на предлагаемые вопросы устно, не прибегая к помощи карандаша и бумаги.
Упражнения второго типа требуют большего времени на обдумывание, и, как правило, необходимы карандаш и бумага, чтобы решить задачи и написать ответы. Многие из этих задач существенно помогают в процессе изучения материала, поэтому читателю предлагается попытаться решить их или по крайней мере прочесть.
Небольшие вычислительные программы, связанные с темой главы, — упражнения третьего типа. Составление этих программ не отнимет много времени, они могут быть предложены для еженедельных домашних заданий.
К упражнениям последнего типа относятся программы или проекты, для которых требуются значительные усилия и время. Многие из проектов могут быть разработаны с-различной степенью детализации, т. е. можно дать или краткую, или очень полную версию решения в зависимости от времени и желания. Кроме того, при решении этих задач зачастую необходимо использование литературных источников.
В приложении подробно обсуждаются возможности коллективной разработки предлагаемых проектов.
Я признателен многим читателям, которые помогли мне при создании второго издания, особенно Ричарду Остингу из Мэ-рилендского университета и Брайену Кернингену из лаборатории Белла.
Денни Ван Тассел
ОГЛАВЛЕНИЕ
Предисловие редактора перевода.....,..... 5
Предисловие................ 6
Глава 1. Стиль программирования ......... 8
1.1. Стандартизация стиля............. 9
1.2. Комментарии . ........ .... 10
1.3. Пропуск строк....... ...... 16
1.4. Пробелы . .............. 16
1.5. Идентификация и последовательная нумерация..... 17
1.6. Выбор имен переменных ,, ........ 18
1.7. Имена файлов........... 21
1.8. Стандартные сокращения........,, 22
1.9. Перенос................ 2.3
1.10. Размещение операторов . ........ 24
1.11. Упорядочение списков по алфавиту........ 25
1.12. Скобки ,............... 29
1.13. Отступы от начала строки.......... 29
1.14. Выбор имен разделов............ 35
1.15. Нечитаемые программы.......,. . . . 35
1.16. Заключение................. 37
1Л7. Советы программисту .... ....... 38
1.18. Упражнения :............ 38
Литература................. 38
Глава 2. Проектирование программ.......... 45
2.1. Стремление к простоте........... 45
2.2. Чтение программ.............. 47
2.3. Описание задачи............. 48
2.4. Выбор алгоритма............... 50
2.5. Описание данных.............. 56
2.6. Выбор языка программирования......... 56
2.7. Универсальность........... . . . 57
2.8. Библиотеки................ 59
2.9. Форматы ввода-вывода............ 61
2.10. Создание условий для работы оператора ...... 62
2.11. Скромные цели.............. 63
2.12. Установление целей...........• 63
2.13. Сложность ......... ..... 64
2.14. Структурное программирование......... 66
329
2.15. Размышления о структурном программировании .... 90
2.16. Кодирование сверху вниз...........91
2.17. Бригада главного программиста.........97"
2.18. Библиотека поддержки разработки........ 10*
2.19. Использование программ............ 10S
2.20. Документирование............. 107
2.21.. Переписывание программ........... 108
2.22. Советы программисту............ 109
2.23. Упражнения.............. 109
Литература................... 115
Глава 3. Эффективность программ . . ........ 117
3.1. Отношение к эффективности.......... 119
3.2. Эффективность или удобочитаемость?....... 119
3.3. Оптимизирующие компиляторы.......... 1201
3.4. Оптимизация программ........... 123
3.5. Эффективность выполнения программ....... 127
3.6. Память................ 129
3.7. Вычисление констант ... -........ 135
3.8. Инициирование переменных .......... 135
3.9. Арифметические операции........... 136
3.10. Обращения к функциям ........... 144
3.11. Оптимизация в процессе компилирования...... 144
3.12. Исключение циклов............ 146
3.13. Организация циклов............ 147
3.14. Оптимизация циклов............ 148
3.15. Условные выражения............ 151
3.16. Логические выражения........... 153
3.17. Индексация . ...........> 153
3.18. Ввод-вывод........... ... 159
3.19. Изучение новых операторов......... 166
3.20. Предупреждающие сообщения......... 166
3.21. Загрузочные модули............ 166
3.22. Модули .. \.................. 167
3.23. Использование сведений о машине и компиляторе . . . . 168 3.24k Заключение . . ............ • 169 .,
3.25. Советы программисту............ 170
3.26. Упражнения.................140
Литература................. 177 ,
Глава 4. Отладка программ ............. 179
4.1. Различие между отладкой и тестированием...... 180
4.2. Отладочный барьер .. ........... 181
4.3. Ошибки в описании задачи.......... 182
4.4. Ошибки в выборе алгоритма ..... .... 183
4.5. Ошибки анализа . . ........... 183
4.6. Ошибки общего характера.......... 184
4.7. Ошибки физического характера.......... 185
4.8 Разметка программной колоды........ 186
4.9. Бесхитростное программирование......... 186
4.10. Правильность программ . ....... 187
4.11. Синтаксические ошибки . . ........ 187
4.12. Виды отладки.............. 191
4.13. Общие рекомендации............ 194
4.14. Неопределенные переменные . ......... 196
4.15. План распределения памяти.......... 197
4.16. Таблица перекрестных ссылок ......... 198
4.17. Опечатки............... 198
4.18. Проверка программы за столом......... 199
4.19. Описание переменных ............ 201
4.20. Ошибки ввода-вывода............ 201
4.21. «Психология» программных ошибок ........ 203
4.22. Патология чисел............. 203
4.23. Обнаружение ошибок............ 204
4.24. Защитное программирование.......... 212
4.25. Утверждения ,............. 216
4.26. Список характерных ошибок.......... 217
4.27. Двумерность программ ,......... 221
4.28. Средства отладки ............ 221
4.29. Отладка в интерактивном режиме........ 224
4.30. Отладочные модули для проверки программ..... 226
4.31. Автоматические проверки ........... 226
4.32. Программирование без ошибок......... 226
4.33. Псевдоотладка.............. 228
4.34. Время, необходимое для отладки . ....... 229
4.35. Предотвращение ошибок............ 229
4.36. Заключение.............. 231
4.37. Советы программисту............ 232
4.38. Упражнения . ........... 232
Литература................. 248
Глава 5. Тестирование (испытание) программ....... 249
5.L Небрежность начинающих программистов . .... 250
5.2. Проблема живучести программы......... 250
5.3. Общие рекомендации............ 251
5.4. Необходимая полнота тестирования........ 252
5.5. Невозможность исчерпывающего тестирования..... 254
5.6. Технические требования к тестированию...... 255
5.7. Необходимость раннего тестирования....... 256
5.8. Проверка правильности проектных решений..... 258
5.9. Методы тестирования ............... 260
5.10. Тестовые данные.............. 263
5.11. Примеры тестов....... и ..... 275
5.12. Тестирование программ математических вычислений . . . 277
5.13. Модули................ 278
5.14. Библиотека программ............ 281
5.15. Тестирование файлов , ........... 281
5.16. Системные испытания............ 281
5.17. Средства тестирования . . ......... 283
5.18. Контроль результатов с помощью проверяемой программы . . 286
5.19. Окончательное утверждение программы....... 288
5.20. Планирование испытаний программ....... 288
5.21. Оценка полноты проверки программы....... 290
5.22. Повторное тестирование............ 291
5.23. Группа тестирования........ ... 292
5.24. Заключительные замечания.......... 294
5.25. Советы программисту..........- 294
5.26. Упражнения . . ..........., . . 295
Литература................. 302
Глава 6. 101 задача по программированию........ 304
6.1. Численные задачи........ .... 304
6.2. Игровые задачи.............306
6.3. Графические задачи........ ... 308
6.4. Криптографические задачи.......... 309
6.5. Задачи на формирование последовательностей символов . . 310
6.6. Статистические задачи......,...... 311
6.7. Задачи на компилирование........... 31Г
6.8. Задачи по сортировке .............. 312
6.9. Вычислительные задачи........... 313
6.10. Задачи с массивами............ 314
6.11. Задачи с процентными доходами......... 314
6.12. Задачи, связанные с деловой и бытовой сферами .... 315
6.13. Задачи на размен денег........... 324
6.14. Задачи о календаре............. 324
Приложение. Групповая разработка проектов...... 324
Литература................. 325
Предметный указатель . . ............ 326

Цена: 150руб.

Назад

Заказ

На главную страницу

Hosted by uCoz