Искусство программирования для Unix - Реймонд Эрик Стивен
Искусство программирования для Unix - Реймонд Эрик Стивен — читать книгу онлайн
Настройте размер и шрифт текста, включите тёмную тему для удобного чтения. Переходить между страницами можно стрелками внизу или сочетанием Ctrl + ← / →.
81 Управляющая программа (harness programm) представляет собой упаковщик, предназначенный для того, чтобы предоставлять вызываемым им программам доступ к некоторому специальному ресурсу. Данный термин часто употребляется при характеристике средств тестирования, которые предоставляют тестовые нагрузки и (часто) примеры корректного вывода для проверки фактического вывода тестируемых программ.
82 СтраницаScript-Fu <http: //www.xcf .Berkeley.edu/-gimp/script-fu/script-fu.html>.
http://www.cs.yorku.ca/~oz/wily
http://plan9.bell-labs.com/sys/doc/acme/acme.html
83 формуле: An + с, где А — некоторый неизвестный постоянный коэффициент пропорциональности, а С — неизвестная константа, представляющая время установки. Линейный поиск определенного значения в списке представляет собой алгоритм типа О (и). Алгоритм О(п') выполняется за время An' плюс величина более низкого порядка (которая может быть линейной либо логарифмической или любой другой функцией ниже квадратичной). Поиск повторяющихся значений в списке (примитивным методом, без сортировки списка) является алгоритмом О(п'). Аналогично, алгоритмы порядка О(п') имеют среднее время выполнения, вычисляемое по кубической формуле. Такие алгоритмы часто слишком медленны для практического применения. Порядок О (log п) типичен для поиска по дереву. Взвешенный выбор алгоритма часто может сократить время выполнения с 0(п') до О (log п). Иногда, когда требуется рассчитать использование алгоритмом памяти, можно заметить, что оно изменяется как O(l) или О (я), или О(п). Как правило, алгоритмы с использованием памяти О(п') или более высокого порядка являются непрактичными.
2 Удвоение мощности в течение каждых 18 месяцев, обычно цитируемое в контексте закона Мура, подразумевает, что можно достичь 26% прироста производительности просто путем приобретения нового аппаратного обеспечения через 6 месяцев.
Молодые читатели могут не знать, что раньше терминалы печатали (на бумаге и очень медленно).
84 Термины, введенные здесь для обозначения проблем проектирования, происходят из устоявшегося жаргона хакеров, описанного в книге lb66].
85 Разделение случайной и необязательной сложности означает, что рассматриваемые здесь категории не являются тем же, что сущность и случайность в очерке Фреда Брукса "No Silver Bullet" [8], однако в философском смысле они имеют одинаковое происхождение.
86 http://plan9.bell-labs.com/sys/doc/sam/sam.html
87 Разработчиками Emacs были Ричард М. Столлмен (Richard М. Stallman) и Берии Гринберг (Bcrnie Greenberg). Первоначальный редактор Emacs был изобретением Столлмена, первая версия со встроенным языком Lisp была создана Гринбергом, а окончательная на сегодняшний день версия создана Стол-лменом на основе версии Гринберга. К 2003 году нет полного изложения истории разработки редактора, но эту тему освещает статья Гринберга "Multics Emacs: The History, Design, and Implementation", которую можно найти в Web но ключевым словам.
88 За пределами мира Unix этот прирост аппаратной производительности на три порядка в значительной мере затмевается соответствующим понижением производительности программ.
89 ерьезность данной проблемы подтверждается богатым сленгом, выработанным Unix-програм-мистами для описания различных ее разновидностей: "псевдонимная ошибка" (aliasing bug), "нарушение выделенной области памяти" (arena corruption), "утечка памяти" (memory leak), "переполнение буфера" (buffer overflow), "разрушение стека" (stack smash), "отклонение указателя" (fandango on core), "недействительный указатель" (stale pointer), "подкачка памяти" (heap trashing), а также вызывающее справедливые опасения "вторичное повреждение" (secondary damage). Пояснения приведены в Словаре хакера chttp: / /www.catb.org/-esr/jargon>.
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 года.