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