Идеальный код
Под редакцией Энди Орама и Грега Уилсона
В этой уникальной книге самые авторитетные разработчики программного обеспечения делятся опытом оригинального решения задач, которые вставали перед ними при реализации крупных IT-проектов.
С помощью этого издания читатель получит возможность оказаться на месте ведущих программистов, увидеть собственными глазами проблемы, возникавшие при реализации разнообразных проектов, и пройти увлекательный путь их преодоления. Авторские статьи отобраны Грегом Уилсоном, редактором журнала «Dr. Dobb's Journal», одного из самых авторитетных IT-изданий в мире, а также редактором издательства O'Reilly Энди Орамом.
Один лишь только список авторов делает эту книгу настоящим бестселлером - здесь вы найдете материалы, написанные такими признанными профессионалами, как Чарльз Петцольд, Джон Бентли, Тим Брэй, Брайан Керниган, и еще тридцатью четырьмя экспертами в области разработки программного обеспечения.
Издательство: Питер, 2011 г.
ISBN 978-5-4237-0331-8, 9780596510046
Количество страниц: 624.
Содержание книги «Идеальный код»:
- 16 Введение
- 17 Глава 1. Поиск соответствий с помощью регулярных выражений
- 18 Практика программирования
- 27 Глава 2. Дельта-редактор Subversion: Интерфейс и онтология
- 28 Управление версиями и преобразование дерева
- 32 Выражение различий в деревьях каталогов
- 33 Интерфейс дельта-редактора
- 46 Глава 3. Самый красивый код, который я никогда не писал
- 46 Мой самый красивый код
- 48 Усиление отдачи при сокращении размеров
- 60 Глава 4. Поиск вещей
- 60 Фактор времени
- 60 Проблема: Данные веб-блога
- 61 Регулярные выражения
- 62 Подключение регулярных выражений к работе
- 66 Ассоциативное устройство хранения
- 69 А нужна ли оптимизация?
- 70 Проблема: Кто выбирал, что и когда?
- 72 Двоичный поиск
- 74 Сильные и слабые стороны двоичного поиска
- 75 Выход из цикла
- 76 Ищите в большом
- 76 Поиск с постингом
- 76 Ранжировка результатов
- 77 Поиск в Интернете
- 78 Вывод
- 79 Глава 5. Правильный, красивый, быстрый (именно в таком порядке): уроки разработки XML-верификаторов
- 79 Роль XML-проверки
- 80 Проблема
- 82 Версия 1: Простейшая реализация
- 83 Версия 2: Имитация BNF-нотации ценой O(N) операций
- 85 Версия 3: Первая оптимизация O(log N)
- 86 Версия 4: Вторая оптимизация: исключение двойной проверки
- 88 Версия 5: Третья оптимизация O(1)
- 93 Версия 6: Четвертая оптимизация: кэширование
- 95 Мораль всей этой истории
- 96 Глава 6. Платформа для проведения комплексного теста: красота, полученная за счет хрупкости конструкции
- 97 Платформа для приемочных испытаний, выполненная в трех классах
- 99 Сложности конструкции платформы
- 101 Открытая платформа
- 102 Насколько просто может быть устроен HTML-napcep?
- 105 Вывод
- 107 Глава 7. Красивые тесты
- 108 Изрядно поднадоевший двоичный поиск
- 111 Знакомство с JUnit
- 113 Подробный разбор двоичного поиска
- 114 Задымление разрешается (и приветствуется)
- 114 Проталкивание через границы
- 118 Элемент случайности в тестировании
- 124 Беспокойства о производительности
- 126 Вывод
- 128 Глава 8. Динамическая генерация кода для обработки изображений
- 152 Глава 9. Нисходящая иерархия операторов
- 153 JavaScript
- 154 Таблица обозначений
- 155 Лексемы
- 156 Старшинство
- 157 Выражения
- 158 Инфиксные операторы
- 160 Префиксные операторы
- 160 Операторы присваивания
- 161 Константы
- 161 Область видимости
- 163 Операторы
- 166 Функции
- 168 Литералы массивов и объектов
- 169 Что нужно сделать и о чем подумать
- 170 Глава 10. Поиск методов ускоренного подсчета заполнения
- 171 Основные методы
- 172 «Разделяй и властвуй»
- 175 Другие методы
- 176 Сумма и разница подсчета заполнения двух слов
- 177 Сравнение подсчетов заполнений двух слов
- 178 Подсчет единичных битов в массиве
- 183 Применение
- 186 Глава 11. Безопасная связь: технология свободы
- 187 С чего все начиналось
- 189 Разбор проблем безопасного обмена сообщениями
- 191 Ключевая роль удобства и простоты использования
- 194 Основы
- 195 Конструктивные цели и решения
- 196 Конструкция основной системы
- 199 Блок тестирования
- 200 Функциональный прототип
- 201 Завершение, подключение, обкатка
- 202 Обновление хранилища электронной почты
- 204 Сохранность дешифрованной информации
- 205 Гималайский хакинг
- 207 Организация защиты кода
- 208 Ревизия Crypt::GPG
- 211 Скрытые манипуляции
- 213 Скорость тоже имеет значение
- 214 Конфиденциальность связи для обеспечения прав человека
- 215 Хакинг цивилизации
- 217 Глава 12. Становление красивого кода в BioPerl
- 218 BioPerl и модуль Bio::Graphics
- 219 Пример выходной информации Bio::Graphics
- 221 Требования, предъявляемые к Bio::Graphics
- 223 Процесс проектирования Bio::Graphics
- 227 Установка параметров
- 229 Выбор классов объектов
- 232 Обработка параметров
- 237 Пример кода
- 238 Динамические параметры
- 242 Расширение Bio::Graphics
- 243 Поддержка веб-разработчиков
- 244 Поддержка изображений типографского качества
- 245 Добавление новых глифов
- 247 Заключение и извлеченные уроки
- 249 Глава 13. Конструкция генного сортировщика
- 250 Пользовательский интерфейс программы Gene Sorter
- 251 Поддержание диалога с пользователем по Интернету
- 254 Небольшой полиморфизм может иметь большое значение
- 257 Фильтрация, оставляющая только значимые гены
- 258 Теория красоты кода в крупных формах
- 262 Вывод
- 263 Глава 14. Как первоклассный код развивается вместе с аппаратным обеспечением (на примере Гауссова исключения)
- 264 Влияние компьютерной архитектуры на матричные алгоритмы
- 266 Декомпозиционный подход
- 267 Простая версия
- 269 Подпрограмма DGEFA библиотеки UNPACK
- 272 LAPACK DGETRF
- 275 Рекурсивное использование LU
- 278 ScaLAPACK PDGETRF
- 283 Многопоточная обработка для многоядерных систем
- 286 Несколько слов об анализе ошибок и итоговом количестве операций
- 287 Дальнейшее направление исследований
- 288 Дополнительная литература
- 290 Глава 15. Долговременные выгоды от красивой конструкции
- 290 В чем, по-моему, заключается красота программного кода
- 291 Представление библиотеки лаборатории ЦЕРН
- 292 Внешняя красота
- 298 Внутренняя красота
- 304 Заключение
- 305 Глава 16. Модель драйверов ядра Linux: преимущества совместной работы
- 306 Скромное начало
- 311 Превращение в еще более мелкие части
- 314 Расширение масштаба до тысяч устройств
- 316 Свободно присоединяемые мелкие объекты
- 317 Глава 17. Иной уровень косвенного подхода
- 317 От кода к указателям
- 320 От аргументов функций к аргументам указателей
- 324 От файловых систем к уровням файловой системы
- 326 От кода к предметно-ориентированному языку
- 328 Мультиплексирование и демультиплексирование
- 330 Уровни навсегда?
- 331 Глава 18. Реализация словарей Python: стремление быть всем во всем полезным
- 333 Что делается внутри словаря
- 335 Специальные приспособления
- 335 Особая оптимизация для небольших хэшей
- 335 Когда специализация приводит к издержкам
- 337 Конфликтные ситуации
- 338 Изменение размера
- 339 Итерации и динамические изменения
- 340 Вывод
- 340 Благодарности
- 341 Глава 19. Многомерные итераторы в NumPy
- 342 Основные сложности обработки N-мерных массивов
- 343 Модель памяти, занимаемой N-мерным массивом
- 345 Происхождение итератора NumPy
- 346 Конструкция итератора
- 346 Перемещение итератора
- 347 Завершение работы итератора
- 348 Настройка итератора
- 349 Определение показаний счетчика итератора
- 350 Структура итератора
- 352 Интерфейс итератора
- 353 Использование итератора
- 354 Итерация по всем, кроме одного измерения
- 355 Множественные итерации
- 357 Истории
- 358 Вывод
- 359 Глава 20. Высоконадежная корпоративная система, разработанная для миссии NASA Mars Rover
- 360 Миссия и совместный информационный портал
- 361 Потребности миссии
- 363 Архитектура системы
- 366 Исследование конкретного примера: Служба информационных потоков
- 381 Глава 21. ERP5: Конструирование с целью достижения максимальной адаптивности
- 382 Общие цели ERP
- 382 ERP5
- 384 Базовая платформа Zope
- 388 Понятия, используемые в ERP5 Project
- 390 Программирование ERP5 Project
- 394 Вывод
- 396 Глава 22. Ложка грязи
- 416 Глава 23. Распределенное программирование с MapReduce
- 416 Пример мотивации
- 419 Модель программирования MapReduce
- 422 Распределенная реализация MapReduce
- 426 Расширения модели
- 427 Заключение
- 428 Дополнительная информация
- 428 Благодарности
- 429 Приложение: Решение задачи подсчета слов
- 431 Глава 24. Красота параллельной обработки
- 432 Простой пример: банковские счета
- 435 Программная транзакционная память
- 441 Реализация транзакционной памяти
- 444 Задача Санта-Клауса
- 448 Основная программа
- 452 Размышления о языке Haskell
- 453 Вывод
- 454 Благодарности
- 456 Глава 25. Синтаксическая абстракция: расширитель syntax-case
- 460 Краткое введение в syntax-case
- 463 Алгоритм расширения
- 474 Преобразование
- 475 Пример
- 477 Вывод
- 479 Глава 26. Архитектура, экономящая силы: объектно-ориентированная рабочая среда для программ с сетевой структурой
- 481 Типовое приложение: служба регистрации
- 484 Объектно-ориентированное проектирование рабочей среды сервера регистрации
- 486 Определение общих свойств
- 487 Увязка вариантов
- 489 Связывание воедино
- 492 Реализация последовательных серверов регистрации
- 493 Реактивный сервер регистрации
- 497 Реализация сервера регистрации с параллельной обработкой
- 504 Вывод
- 505 Глава 27. Объединение деловых партнеров с помощью RESTful
- 505 Предыстория проекта
- 506 Предоставление служб внешним клиентам
- 507 Определение интерфейса службы
- 510 Маршрутизация службы с использованием шаблона Factory
- 512 Обмен данными с использованием протоколов электронного бизнеса
- 517 Вывод
- 518 Глава 28. Красивая отладка
- 519 Отладка отладчика
- 521 Системный подход к процессу отладки
- 522 Проблемы поиска
- 523 Автоматическое обнаружение причины отказа
- 525 Дельта-отладка
- 528 Минимизация входных данных
- 531 Проблема прототипа
- 532 Вывод
- 532 Благодарности
- 532 Дополнительная информация
- 533 Глава 29. Отношение к коду как к очерку
- 538 Глава 30. Когда кнопка остается единственным предметом, связывающим вас с внешним миром
- 539 Основная модель конструкции
- 543 Интерфейс ввода
- 543 Дерево
- 544 Длинный щелчок
- 548 Динамическое изменение заполнения дерева
- 549 Простой набор текста
- 550 Прогнозирование: завершение слова и следующее слово
- 551 Шаблоны и замена
- 552 Реализация кэш
- 553 Распространенные и избранные слова
- 554 Отслеживание путей
- 554 Буфер набора, редактирование и прокрутка
- 556 Буфер обмена
- 557 Поиск
- 557 Макрокоманда
- 558 Эффективность пользовательского интерфейса
- 558 Загрузка
- 558 Будущие направления
- 560 Глава 31. Emacspeak: полноценно озвученный рабочий стол
- 561 Создание речевого вывода
- 562 Говорящий Emacs
- 564 Генерация полноценного речевого вывода
- 569 Использование Aural CSS (ACSS) для стилевого оформления речевого вывода
- 570 Добавление звуковых обозначений
- 574 Беспроблемный доступ к интерактивной информации
- 581 Краткий отчет
- 584 Вывод
- 585 Благодарности
- 586 Глава 32. Код в развитии
- 587 Применение «книгообразного» вида
- 589 Одинаковое должно выглядеть однообразно
- 590 Опасность отступов
- 591 Перемещение по коду
- 592 Используемый нами инструментарий
- 594 Изменчивое прошлое DiffMerge
- 596 Вывод
- 597 Благодарности
- 597 Дополнительная информация
- 598 Глава 33. Создание программ для «Книги»
- 598 Нелегкий путь
- 599 Предупреждение для тех, кто боится скобок
- 600 Три в ряд
- 603 Скользящий наклон
- 605 Неравенство в треугольнике
- 606 Блуждания по извилистостям
- 608 «Что вы говорите!» – то есть «Ага!»
- 610 Вывод
- 610 Дополнительная информация
- 612 Послесловие
- 614 О тех, кто работал над книгой
Инструкция как скачать книгу Под редакцией Энди Орама и Грега Уилсона: Идеальный код в форматах DjVu, PDF, DOC или fb2 совершенно бесплатно.