16.4. Оценка проектов с открытым исходным кодом
16.5. Поиск открытого исходного кода
16.6. Вопросы использования программ с открытым исходным кодом
16.7. Вопросы лицензирования
16.7.1. Что определяется как открытый исходный код
16.7.2. Стандартные лицензии на открытый исходный код
16.7.3. Когда потребуется адвокат
Часть IV Сообщество
17 Переносимость: переносимость программ и соблюдение стандартов
17.1. Эволюция С
17.1.1. Ранняя история С
17.1.2. Стандарты С
17.2. Стандарты Unix
17.2.1. Стандарты и Unix-войны
17.2.2. Влияние новых Unix-систем
17.2.3. Стандарты Unix в мире открытого исходного кода
17.3. IETF и процесс RFC-стандартизации
17.4. Спецификации — ДНК, код — РНК
17.5. Программирование, обеспечивающее переносимость
17.5.1. Переносимость и выбор языка
17.5.1.1. Переносимость С
17.5.1.2. Переносимость С++
17.5.1.3. Переносимость shell
17.5.1.4. Переносимость Perl
17.5.1.5. Переносимость Python
17.5.1.6. Переносимость Tel
17.5.1.7. Переносимость Java
17.5.1.8. Переносимость Emacs Lisp
17.5.2. Обход системных зависимостей
17.5.3. Инструменты, обеспечивающие переносимость
17.6. Интернационализация
17.7. Переносимость, открытые стандарты и открытый исходный код
18 Документация: объяснение кода в Web-сообществе
18.1. Концепции документации
18.2. Стиль Unix
18.2.1. Склонность к большим документам
18.2.2. Культурный стиль
18.3. Многообразие форматов документации в Unix
18.3.1. troff и инструментарий Documenter's Workbench
18.3.2. TeX
18.3.3. Texinfo
18.3.4. POD
18.3.5. HTML
18.3.6. DocBook
18.4. Современный хаос и возможный выход из положения
18.5. DocBook
18.5.1. Определения типов документов
18.5.2. Другие DTD-определения
18.5.3. Инструментальная связка DocBook
18.5.4. Средства преобразования
18.5.5. Инструменты редактирования
18.5.6. Связанные стандарты и практические приемы
18.5.7. SGML
18.5.8. Справочные ресурсы по XML-DocBook
18.6. Лучшие практические приемы написания Unix-документации
19 Открытый исходный код: программирование в новом Unix-сообществе
19.1. Unix и открытый исходный код
19.2. Лучшие практические приемы при взаимодействии с разработчиками открытого исходного кода
19.2.1. Хорошая практика обмена исправлениями
19.2.1.1. Отправляйте заплаты, а не целые архивы или файлы
19.2.1.2. Отправляйте исправления к текущей версии кода
19.2.1.3. Не следует включать заплаты для генерируемых файлов
19.2.1.4. Не отправляйте заплат, которые только убирают $-идентификаторы систем RCS или SCCS
19.2.1.5. Используйте вместо формата по умолчанию (-е) форматы -с или -и
19.2.1.6. Сопровождайте заплаты документацией
19.2.1.7. Сопровождайте заплату пояснениями
19.2.1.7. Включайте в код полезные комментарии
19.2.1.9. Не огорчайтесь, если заплата отклонена
19.2.2. Хорошая практика наименования проектов и архивов
19.2.2.1. Используйте GNU-стиль названий с именной частью и номерами (основной.второстепенный.заплата)
19.2.2.2. По возможности необходимо придерживаться локальных соглашений
19.2.2.3. Упорно ищите уникальный префикс имени, который легко вводить
19.2.3. Хорошая практика разработки
19.2.3.1. Не полагайтесь на частный код
19.2.3.2. Используйте автоинструменты GNU
19.2.3.3. Тестируйте код перед выпуском версии
19.2.3.4. Выполняйте контроль ошибок в коде перед выпуском версии
19.2.3.5. Проверяйте орфографию в документации и README-файлах перед выпуском версии
19.2.3.6. Рекомендованные практические приемы переносимости кода С/С++
19.2.4. Хорошая практика создания дистрибутивов
19.2.4.1. Убедитесь, что архивы всегда распаковываются в один новый каталог
19.2.4.2. Включайте в дистрибутив README-файл
19.2.4.3. Придерживайтесь стандартной практики именования файлов
19.2.4.4. Проектирование с учетом обновлений
19.2.4.5. В Linux создавайте RPM-пакеты
19.2.4.6. Предоставляйте контрольные суммы пакетов
19.2.5. Практические приемы хорошей коммуникации
19.2.5.1. Публикация на сайте Freshmeat
19.2.5.2. Публикация в соответствующих группах новостей
19.2.5.3. Создайте Web-сайт
19.2.5.4. Поддерживайте списки рассылки проекта
19.2.5.5. Публикуйте проект в главных архивах
19.3. Логика лицензирования: как выбрать лицензию
19.4. Почему следует использовать стандартную лицензию
19.5. Многообразие лицензий на открытый исходный код
19.5.1. Лицензия MIT или Консорциума X
19.5.2. Классическая BSD-лицензия
19.5.3. Артистическая лицензия
19.5.4. General Public License
19.5.5. Mozilla Public License
20 Будущее: опасности и перспективы
20.1. Сущность и случайность в традиции Unix
20.2. Plan 9: каким представлялось будущее Unix
20.3. Проблемы в конструкции Unix
20.3.1. Unix-файл представляет собой только большой блок байтов
20.3.2. Слабая поддержка GUI-интерфейсов в Unix
20.3.3. Удаление файлов в Unix необратимо
20.3.4. Unix предполагает статичную файловую систему
20.3.5. Конструкция системы управления задачами была плохо реализована
20.3.6. В Unix API не используются исключительные ситуации
20.3.7. Вызовы ioctl(2) и fcntl(2) являются препятствиями
20.3.8. Модель безопасности Unix, возможно, слишком примитивна
20.3.9. Unix имеет слишком много различных видов имен
20.3.10. Файловые системы могут считаться вредными
20.3.11. На пути к глобальному адресному пространству Internet
20.4. Проблемы в окружении Unix
20.5. Проблемы в культуре Unix
20.6. Причины верить
А Глоссарий аббревиатур
Б Список литературы
В Персональный вклад
Г Корни без корней: Unix-коаны Мастера Фу
Предисловие редактора
Мастер Фу и десять тысяч строк
Мастер Фу и Скрипт Кидди
Мастер Фу рассуждает о двух дорогах
Мастер Фу и консультант по методологии
Мастер Фу рассуждает о графическом пользовательском интерфейсе
Мастер Фу и фанатик Unix
Мастер Фу рассуждает о природе Unix
Мастер Фу и конечный пользователь
Дополнительная информация
Сноски
notes
1
2
3
4
5
6
7
Искусство программирования для Unix
ISBN 5-8459-0791-8 (рус.)
Книги, подобные этой, редко появляются на прилавках магазинов, поскольку за ними стоит многолетний опыт работы их авторов. Здесь описывается хороший стиль Unix-программирования, многообразие доступных языков программирования, их преимущества и недостатки, различные IPC-методики и инструменты разработки. Автор анализирует философию Unix, культуру и основные традиции сформированного вокруг нее сообщества. В книге объясняются наилучшие практические приемы проектирования и разработки программ в Unix. Вместе с тем описанные в книге модели и принципы будут во многом полезны и Windows-разработчикам. Особо рассматриваются стили пользовательских интерфейсов Unix-программ и инструменты для их разработки. Отдельная глава посвящена описанию принципов и инструментов для создания хорошей документации.
Книга будет полезной для широкой категории пользователей ПК и программистов.
Вдохновившим меня Кену Томпсону и Деннису Ритчи