Искусство программирования для Unix
Шрифт:
88 За пределами мира Unix этот прирост аппаратной производительности на три порядка в значительной мере затмевается соответствующим понижением производительности программ.
89 ерьезность данной проблемы подтверждается богатым сленгом, выработанным Unix-програм-мистами для описания различных ее разновидностей: "псевдонимная ошибка" (aliasing bug), "нарушение выделенной области памяти" (arena corruption), "утечка памяти" (memory leak), "переполнение буфера" (buffer overflow), "разрушение стека" (stack smash), "отклонение указателя" (fandango on core), "недействительный указатель" (stale pointer), "подкачка памяти" (heap trashing), а также вызывающее
90 Последний стандарт С++, датированный 1998 годом, был широко распространенным, но слабым, особенно в области библиотек.
91 См. очерк Тома Кристианссна (Tom Christiansen) "Csh Programming Considered Harmfulкоторый можно легко найти в Web.
92 Существует Web-сайт проекта Freenet chttp://lbreenetproject. org>.
93 URL-запроса для получения статистических данных: <http: //sourcef orge. net/sof twaremap/ trove_list.php?form_cat=160>.
94 Распространенное более новое описание языка Perl как "швейцарской бензопилы" является производным.
95 PLY можно загрузить со страницы <http: //systems. cs. uchicago. edu/ply/ >.
96 Пакет CUP доступен на странице <http: //www. cs .princeton. edu/-appel/modern/java/CUP>.
97 Пакет Jack доступен на странице <http://www.javaworld.com/javaworld/jw-12-1996/ j w-12-jack, html >.
98 Пакет Yacc/M доступен на странице <http://david.tribble.com/yaccm.html>.
99 http://cm.bell-labs.com/cm/cs/upe/
100 Блочный тест представляет собой тестовый код, прикрепленный к модулю для проверки корректности представления. Использование термина "блочный тест" подразумевает, что тест написан разработчиком одновременно с основным кодом и означает порядок, при котором версии модуля не считаются завершенными до тех нор, пока к ним не прикреплен тестовый код. Данный термин и идея возникли в методологии "Экстремального программирования", популяризированной Кентом Беком (Kent Beck), но получили широкое распространение среди Unix-программистов примерно с 2001 года.
101 Более подробная информация по данным и родственным командам управления компиляцией приведена в справочном мешо Emacs: p+processes- >compile.
102 Подробнее эти и родственные команды описываются в подразделе справочной системы Emacs, озаглавленном Version Control (Управление версиями).
103 Агентство NASA, в котором целенаправленно создавалось программное обеспечение, предназначенное для использования в течение десятилетий, научилось настаивать на доступности исходного кода для всех создателей программного обеспечения для аэрокосмической техники.
104 Обе системы PDP-7 Unix и Linux стали примерами "неожиданной живучести". Unix в качестве "игрушки для опытов" была создана несколькими исследователями в перерывах между основными проектами. Наполовину она была предназначена для экспериментов с файловой системой и наполовину для поддержки компьютерной игры. Linux была охарактеризована своим создателем как "мой эмулятор терминала с выросшими ногами" 85]
105 Таким образом, литера "С" в названии языка С означает Common (общий) или, возможно, "Christopher". Аббревиатура BCPL
106 Документ доступен в Web: <http: //anubis. dkuug. dk/JTC1/SC22/WG14/www/charters
107 Первоначальный пробный стандарт в 1985 году назывался IEEE-IX. Название "POSIX" было предложено Ричардом Столлменом. Введение в POSIX.1 гласит "Ожидается произношение "поз-икс" как "позитив", а не "по-сикс" или в других вариантах. Произношение опубликовано в целях обнародования стандартного способа ссылки на стандартный интерфейс операционной системы".
108 Один Linux-дистрибьютор, а именно Лазермун (Lasermoon) из Великобритании, добился сертификации POSIX. 1 FIPS 151-2, но вышел из бизнеса, поскольку потенциальных клиентов сертификация не интересовала.
109 Эта тема обсуждается в книге "Just for Fun " 85]
110 Web-поиск, вероятно, предоставит популярную страницу, на которой сатирически описывается семиуровневая модель OSI сравнивается.
111 Эти слова впервые были произнесены членом руководства IETF Дэйвом Кларком (Dave Clark) в 1992 году на бурном собрании, в ходе которого IETF отвергла протокол открытого взаимодействия систем.
112 9 RFC 1149 доступен в Web— <http://www.ietf.org/rfc/rfcll49.txt>. Его реализация описана на стр. chttp: //www.blug. Iinux.no/rfcll4 9/writeup .html>.
10 RFC 2324 доступен в Web — chttp: //www. ietf .org/rfc/rfc2324 . txt>.
11 RFC 3514 доступен в Web — chttp: //www. ietf .org/rfc/rfc3514 . txt>.
113 В XML-жаргоне то, что здесь названо "диалектом" (dialect), называется "приложением" (application). Автор избегает использования слова "приложение", поскольку в данном случае оно противоречит другому более широко распространенному его значению.
114 Это название — дань кинофильму, вышедшему в 1958 году, который вошел в историю как "наихудшее из созданного", "Plan 9 from Outer Space". Документацию, включая обзорную статью, описывающую архитектуру, наряду с полным исходным кодом и дистрибутивом, который инсталлируется на PC, можно без труда найти с помощью Web-поиска по фразе "Plan 9 from Bell Labs".
115 История о том, как была создана UTF-8, включает в себя описание безумной ночной работы Кена Томпсона и Роба Пайка — <http://www.cl. cam.ac.uk/-mgk25/ucs/utf-8-history.txt>.
116 Ищите F_NOTIFY в fcntl(2).
117 Данный параграф основывается на аналитической статье Генри Спенсера, вышедшей в 1984 году. Он отметил, что управление задачами было необходимо и целесообразно точно учесть в POSIX.1 и последующих стандартах Unix, поскольку оно "просачивается" в каждую программу и, следовательно, должно быть продумано в любом интерфейсе "приложение-система". Отсюда и одобрение POSIX ошибочной конструкции, когда правильные решения "выходили за рамки", а следовательно, даже не рассматривались.