Высказывания программистов-практиков о книге \"Программист-прагматик\" | 1 |
Предисловие | 1 |
От авторов | 2 |
Кому адресована эта книга? | 2 |
Как происходит становление программиста-прагматика? | 2 |
Прагматики-одиночки и большие команды | 3 |
Непрерывность процесса | 3 |
Как составлена эта книга | 3 |
Исходные тексты программ и другие ресурсы | 3 |
Ваши отклики | 3 |
Благодарности | 3 |
Глава 1 Прагматическая философия | 4 |
1 Мой исходный текст съел кот Мурзик | 4 |
Принятие ответственности | 4 |
2 Энтропия в программах | 5 |
3 Суп из камней и сварившиеся лягушки | 5 |
4 Приемлемые программы | 6 |
Находите компромисс с пользователями | 6 |
Знайте меру | 7 |
5 Портфель знаний | 7 |
Ваш портфель знаний | 7 |
Построение вашего портфеля | 7 |
Цели | 7 |
Возможности обучения | 8 |
Критическое осмысление | 8 |
6 Общайтесь! | 8 |
Глава 2 Прагматический подход | 10 |
7 Пороки дублирования | 10 |
Как возникает дублирование? | 11 |
Навязанное дублирование | 11 |
Неумышленное дублирование | 11 |
Нетерпеливое дублирование | 12 |
Коллективное дублирование | 12 |
8 Ортогональность | 12 |
Что такое ортогональность? | 12 |
Преимущества ортогональности | 13 |
Проектные группы | 13 |
Проектирование | 13 |
Инструментарии и библиотеки | 14 |
Написание текста программы | 14 |
Тестирование | 14 |
Документация | 15 |
Жизнь в условиях ортогональности | 15 |
9 Обратимость | 15 |
Гибкая архитектура | 16 |
10 Стрельба трассирующими | 16 |
Программа, которую видно в темноте | 16 |
При стрельбе трассирующими вы не всегда попадаете в цель | 17 |
Программа трассировки и создание прототипов | 17 |
11 Прототипы и памятные записки | 18 |
Для чего создаются прототипы | 18 |
Как использовать прототипы | 18 |
Создание прототипов архитектуры | 18 |
Как не надо использовать прототипы | 19 |
12 Языки, отражающие специфику предметной области | 19 |
13 Оценка | 21 |
Насколько точной является \"приемлемая точность\"? | 21 |
Из чего исходят оценки? | 21 |
Что сказать, если вас просят оценить что-либо | 22 |
Глава 3 Походный набор инструментов | 22 |
14 Преимущества простого текста | 23 |
Что такое простой текст? | 23 |
Недостатки | 23 |
Преимущества простого текста | 23 |
Подводим итог | 24 |
15 Игры с оболочками | 24 |
Утилиты оболочек и системы Windows | 25 |
16 Мощь редактирования | 25 |
Один-единственный редактор | 25 |
Средства редактирования | 26 |
Производительность | 26 |
Куда же направиться? | 26 |
Какой же редактор выбрать? | 26 |
17 Управление исходным текстом программ | 27 |
Команда, в которой я работаю, не использует систему управления исходным текстом | 27 |
Программы управления исходным текстом | 27 |
18 Отладка | 28 |
Психология процесса отладки | 28 |
Умонастроение отладки | 28 |
С чего начать? | 28 |
Стратегии отладки | 28 |
Элемент удивления | 30 |
Контрольные вопросы при отладке | 30 |
19 Обработка текста | 30 |
20 Генераторы текстов программ | 31 |
Пассивные генераторы | 31 |
Активные генераторы текста | 32 |
Генераторы текста не должны быть слишком сложными | 32 |
Генераторы текста не всегда генерируют тексты программ | 32 |
Глава 4 Прагматическая паранойя | 32 |
21 Проектирование по контракту | 33 |
Реализация принципа ППК | 34 |
ППК и аварийное завершение работы программы | 34 |
Другие случаи применения инвариантов | 35 |
Динамические контракты и агенты | 35 |
22 Мертвые программы не лгут | 36 |
Аварийное завершение не означает \"отправить в корзину для мусора\" | 36 |
23 Программирование утверждений | 37 |
Не отключайте утверждения | 37 |
24 Случаи, в которых используются исключения | 38 |
Что является исключительным? | 38 |
Обработчики ошибок как альтернатива исключению | 38 |
25 Балансировка ресурсов | 39 |
Объекты и исключения | 39 |
Балансировка и исключения | 40 |
Случаи, при которых балансировка ресурсов невозможна | 40 |
Проверка баланса | 40 |
Глава 5 Гибкость против хрупкости | 41 |
26 Несвязанность и закон Деметера | 41 |
Сведение связанности к минимуму | 41 |
Закон Деметера для функций | 42 |
А не все ли равно? | 42 |
27 Метапрограммирование | 43 |
Динамическая конфигурация | 43 |
Приложения, управляемые метаданными | 43 |
28 Временное связывание | 44 |
Последовательность операций | 44 |
Архитектура | 45 |
Проектирование с использованием принципа параллелизма | 45 |
Развертывание | 46 |
29 Всего лишь визуальное представление | 46 |
Протокол \"Публикация и подписка\" | 46 |
Принцип \"модель-визуальное представление-контроллер» | 47 |
Отходя от графических интерфейсов | 47 |
Все такой же связанный (после стольких лет) | 48 |
30 Доски объявлений | 48 |
Реализация концепции доски объявлений | 48 |
Пример приложения | 49 |
Глава 6 Пока вы пишете программу | 49 |
31 Программирование в расчете на стечение обстоятельств | 50 |
Как программировать в расчете на стечение обстоятельств | 50 |
Преднамеренное программирование | 51 |
32 Скорость алгоритма | 51 |
Что подразумевается под оценкой алгоритмов? | 51 |
Система обозначений О() | 51 |
Оценка с точки зрения здравого смысла | 52 |
Скорость алгоритма на практике | 52 |
33 Реорганизация | 53 |
Когда осуществлять реорганизацию? | 53 |
Как производится реорганизация? | 54 |
34 Программа, которую легко тестировать | 55 |
Модульное тестирование | 55 |
Тестирование в рамках контракта | 55 |
Создание модульных тестов | 56 |
Применение тестовых стендов | 56 |
Построение тестового окна | 57 |
Культура тестирования | 57 |
35 Злые волшебники | 57 |
Глава 7 Перед тем, как начать проект | 58 |
36 Карьер для добычи требований | 58 |
В поисках требований | 58 |
Документация требований | 59 |
Чрезмерная спецификация | 60 |
Видеть перспективу | 60 |
Еще одна мелочь… | 60 |
Поддержка глоссария | 60 |
Прошу слова… | 60 |
37 Разгадка невероятных головоломок | 61 |
Степени свободы | 61 |
Есть более простой способ! | 61 |
38 Чувство готовности | 62 |
Здравое суждение или промедление? | 62 |
39 Западня со стороны требований | 62 |
40 Круги и стрелки | 63 |
Какова отдача от методов? | 63 |
Нужно ли использовать формальные методы? | 64 |
Глава 8 Прагматические проекты | 64 |
41 Команды прагматиков | 64 |
Никаких разбитых окон | 64 |
Сварившиеся лягушки | 65 |
Общайтесь | 65 |
Не повторяйте самого себя | 65 |
Ортогональность | 65 |
Автоматизация | 66 |
Чувствуйте момент, когда нужно остановиться | 66 |
42 Вездесущая автоматизация | 66 |
Все в автоматическом режиме | 66 |
Компилирование проекта | 67 |
Автоматизация процесса сборки | 67 |
Автоматические административные процедуры | 67 |
Дети сапожника | 68 |
43 Безжалостное тестирование | 68 |
Что тестировать | 69 |
Как проводить тестирование | 69 |
Когда тестировать | 71 |
Кольцо сжимается | 71 |
44 Все эти сочинения | 71 |
Комментарии в программе | 71 |
Исполняемые документы | 72 |
Технические писатели | 72 |
Печатать документ или ткать его на холсте? | 73 |
Языки разметки | 73 |
45 Большие надежды | 73 |
Передача надежд | 73 |
Небольшой довесок | 74 |
46 Гордость и предубеждение | 74 |
Приложение А Информационные ресурсы | 74 |
Профессиональные общества | 75 |
Собираем библиотеку | 75 |
Интернет-ресурсы | 76 |
Библиография | 78 |
Приложение В Ответы к упражнениям | 79 |
Находясь на переднем крае программирования, книга \"Программист-прагматик. Путь от подмастерья к мастеру\" абстрагируется от всевозрастающей специализации и технических тонкостей разработки программ на современном уровне, чтобы исследовать суть процесса – требования к работоспособной и поддерживаемой программе, приводящей пользователей в восторг. Книга охватывает различные темы – от личной ответственности и карьерного роста до архитектурных методик, придающих программам гибкость и простоту в адаптации и повторном использовании.Прочитав эту книгу, вы научитесь:Бороться с недостатками программного обеспечения;Избегать ловушек, связанных с дублированием знания;Создавать гибкие, динамичные и адаптируемые программы;Избегать программирования в расчете на совпадение;Защищать вашу программу при помощи контрактов, утверждений и исключений;Собирать реальные требования;Осуществлять безжалостное и эффективное тестирование;Приводить в восторг ваших пользователей;Формировать команды из программистов-прагматиков и с помощью автоматизации делать ваши разработки более точными.