КнигоПровод.Ru25.11.2024

/ИТ-книги

Индивидуальная отладка программ — Безбородов Ю. М.
Индивидуальная отладка программ
Безбородов Ю. М.
год издания — 1982, кол-во страниц — 192, тираж — 65000, язык — русский, тип обложки — мягк., масса книги — 160 гр., издательство — Физматлит
серия — Библиотечка программиста
цена: 199.00 рубПоложить эту книгу в корзину
Сохранность книги — хорошая

Формат 84x108 1/32. Бумага типографская №2. Печать высокая
ключевые слова — отладк, алгоритмическ, язык, pl/1, фортран, алгол, эвм, дейкстр, миллз, операционн, тестиров, блок-схем, псевдокод, препроцессор

Книга посвящена отладке программ средней сложности или небольших блоков программных систем. Излагаются методика и типовые средства выполнения основных работ, составляющих отладку программ, рассматриваются методы и приёмы разработки программ, предупреждающие появление ошибок и облегчающие их обнаружение и устранение. Общая методика отладки, излагаемая в книге, как правило, не зависит от используемых алгоритмических языков и конкретных отладочных средств, но примеры даются для PL/1, фортрана, алгола и для ОС ЕС ЭВМ.

Илл. 17, Табл. 2, Библ. 16 назв.


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

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

Во-вторых, «большая наука» программирования, которая в своём крайнем выражении отрицает эмпирический, рукотворный характер программного продукта, отрицает вместе с этим и отладку как последовательность экспериментов, направленных на получение достоверного знания о правильности программы. Как говорит Э. Дейкстра, «Отладка может лишь указать на наличие ошибок в программе, но никогда — на их отсутствие». Разрабатываются методы систематического извлечения программы из достоверного исходного знания о способе решения задачи, при этом таким способом, что программист не в состоянии внести неверную команду в программу, если отвлечься от синтаксических ошибок. X. Миллз, описывая такую методику, даёт следующее броское название своему докладу: «Как писать правильные программы и знать об этом».

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

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

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

Хотелось бы отметить и литературные качества книги, не так часто проявляющие себя в современной торопливой научно-технической прозе. В изложении достигнут в целом убедительный баланс между справочной информацией, демонстрацией примеров и авторскими комментариями или вступительными замечаниями. Всё это нанизано на очень чёткую линию изложения, превращающую изучение технического материала в увлекательное чтение. Обращает на себя внимание определённость авторских рекомендаций. Опытному программисту, имеющему свой взгляд на отладку, эта определённость поможет яснее осознать его собственную систему; для начинающего читателя это качество книги послужит надёжным путеводителем в поистине грандиозном конгломерате проблем, с которыми сталкивается программист, приступающий к серьёзной работе в контексте ОС ЕС.

Книга состоит из двух практически равных частей. В первой части рассказывается, как искать, изолировать и исправлять ошибки. Во второй части описываются рабочие процедуры программирования, помогающие предотвращать ошибки. Автор занимает очень сдержанную позицию в вечном споре боевых и штабных офицеров — где решается судьба сражения: на поле боя или в штабе — другими словами, за пультом машины или за письменным столом. Очевидно, что каждый программист решает для себя эту дилемму индивидуально. Заслуга автора в том, что он, оставляя за машиной окончательное суждение о пригодности программы к работе, убедительно показывает продуктивность и экономность «домашнего анализа» и внимательного «просто чтения» программы.

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

ОТ РЕДАКТОРА
А. П. Ершов
Академгородок
Август 1981 г.

ОГЛАВЛЕНИЕ

От редактора5
Предисловие7
 
Введение9
 
0.1. Этапы решения задачи на ЭВМ9
0.2. Неизбежность отладки17
 
Г л а в а  1.  Контроль программы22
 
1.1. Контроль текста22
1.1.1. Просмотр (22). 1.1.2. Проверка (23). 1.1.3. Прокрутка (23). 1.1.4. Печать текста (29). 1.1.5. Трансляция (29). 1.1.6. Статический анализ (30).
1.2. Контроль результатов30
1.2.1. Тестирование (30). 1.2.2. Правила тестирования (32). 1.2.3. Типы тестов (37).
1.3. Классификация методов контроля38
 
Г л а в а  2.  Локализация ошибок39
 
2.1. Средства локализации41
2.1.1. Аварийная печать (41). 2.1.2. Печать в узлах (48). 2.1.3. Слежение (52). 2.1.4. Прокрутка (55). 2.1.5. Другие средства (57). 2.1.6. Классификация средств (57).
2.2. Использование средств61
2.2.1. Сравнение средств (61). 2.2.2. Идентификация печати (62). 2.2.3. Минимизация печати (62). 2.2.4. Автоматизация сверки (63). 2.2.5. Включение отладочных средств (65).
2.3. Методика локализации66
2.3.1. От симптома к ошибке (66). 2.3.2. Обратное отслеживание (67). 2.3.3. Природа ошибки (69). 2.3.4. Некоторые замечания (70).
 
Г л а в а  3.  Исправление ошибок72
 
3.1. Виды исправлений72
3.1.1. Исправление алгоритма (72). 3.1.2. Исправление программы (73).
3.2. Средства исправления программ74
3.2.1. Построчные исправления (74). 3.2.2. Контекстные исправления (77).
3.3. Классификация видов исправлений79
 
Г л а в а  4.  Предупреждение ошибок80
 
4.1. Традиционные приёмы80
4.1.1. Этапность разработки (80). 4.1.2. Уровень языка (81). 4.1.3. Наглядность текста программы (82). 4.1.4. Личные приёмы (83). 4.1.5. Стандарты программирования (84). 4.1.6. Защита от ошибок (84).
4.2. Модульность программы86
4.2.1. Модульность (86). 4.2.2. Реализация модульности (86). 4.2.3. Строение программ (88). 4.2.4. Трудности (89). 4.2.5. Локальность исправлений (92). 4.2.6. Хранение модулей во внешней памяти (95).
4.3. Структурированность программы96
4.3.1. Стандартные структуры (96). 4.3.2. Простота программы (98). 4.3.3. Дополнительные структуры (99), 4.3.4. Трудности (100).
 
Г л а в а  5.  Нисходящее проектирование103
 
5.1. Общие положения103
5.1.1. Сущность нисходящего проектирования (103). 5.1.2. Первый пример (104). 5.1.3. Очевидность решений (116). 5.1.4. Обобщённые данные (117).
5.2. Характерные черты118
5.2.1. Второй пример (118). 5.2.2. Модульность и структурированность (127). 5.2.3. Блок-схема и псевдокод (128).
5.3. Особенности применения129
5.3.1. Трудности и преимущества (129). 5.3.2. Нисходящее тестирование (131).
 
Г л а в а  6.  Примеры разработки и отладки134
 
6.1. Преобразование текста134
6.1.1. Постановка задачи (134). 6.1.2. Проект (134). 6.1.3. Алгоритм (136). 6.1.4. Программа (139). 6.1.5. Отладка (144).
6.2. Перевод программы146
6.2.1. Техническое задание (146). 6.2.2. Проект (146), 6.2.3. Алгоритм (151).
 
П р и л о ж е н и е.  Препроцессорные средства159
П.1. Общие сведения (159). П.2. Пример (160). П.З. Основные элементы и выражения (162). П.4. Основные операторы (166). П.5. Процедура и обращение к ней (171). П.6. Оператор включения текста (174). П.7. Программа и задание (175). П.8. Синтаксические формы (181). П. 9. Сравнение препроцессорных и процессорных средств PL/1 (185).
 
Литература188
Предметный указатель189

Книги на ту же тему

  1. Сравнительный курс языка PL/1 (на основе алгола-60), Безбородов Ю. М., 1980
  2. Фортран и искусство программирования персональных ЭВМ, Уорд Т., Бромхед Э., 1993
  3. Сборник задач по программированию. — 2-е изд., перераб., Бухтияров А. М., Зикевская Л. М., Фролов Г. Д., 1970
  4. Этюды для программистов, Уэзерелл Ч., 1982
  5. Язык программирования Эль-76. Принципы построения языка и руководство к пользованию. — 2-е изд. испр. и доп., Пентковский В. М., 1989
  6. Программирование на языке Ада, Вегнер П., 1983
  7. Языки программирования. Концепции и принципы, Кауфман B. Ш., 1993
  8. Универсальные языки программирования. Семантический подход, Калинин А. Г., Мацкевич И. В., 1991
  9. Сравнительное изучение языков программирования, Хигман Б., 1974
  10. Программирование и алгоритмические языки, Криницкий Н. А., Миронов Г. А., Фролов Г. Д., 1975
  11. Программирование на современных алгоритмических языках: Учебное пособие для втузов.— 3-е изд., перераб. и доп., Пярнпуу А. А., 1990
  12. Генерация операционной системы ОС ЕС, Назаров С. В., Барсуков А. Г., 1985

© 1913—2013 КнигоПровод.Ruhttp://knigoprovod.ru