Книга: Программист-прагматик. Путь от подмастерья к мастеру
Сноски из книги
· #1При этом можно утешаться изречением, приписываемым контр-адмиралу д-ру Грэйсу Хопперу: «Легче просить прощения, чем получать разрешение».
· #2Это, конечно шутка!
· #3Истекающий актив представляет собой некий актив, чья стоимость со временем уменьшается. Примерами могут послужить склад, доверху заполненный бананами, и билет на бейсбол.
· #4В эру Интернета, многие люди, кажется, забыли о настоящих библиотеках, в которых имеется штат сотрудников и научные материалы.
· #5В оригинале английское слово annoy происходит от старофранцузского enui что также означает «наскучить».
· #6Применение функций средств доступа дополняет книгу Мейера «Uniform Access principle» [Mey97b], в которой говорится, что «все службы, обеспечиваемые неким модулем, должны быть доступны за счет универсальной системы обозначений, которая отличается надежностью независимо от того, хранятся ли эти службы в памяти или вычисляются».
· #7В вертолете имеется четыре основных органа управления. Рычаг управления циклическим шагом несущего винта находится справа от пилота. При его перемещении вертолет движется в соответствующем направлении. Слева от пилота расположен рычаг управления общим шагом несущего винта. Если потянуть за него, то произойдет увеличение шага на всех лопастях и вертолет начнет подниматься. На конце рычага управления общим шагом расположен дроссель. И наконец, есть две ножных педали, которые изменяют тягу на рулевом винте и способствуют повороту вертолета.
· #8В действительности, это наивно. Лишь при очень большом везении большинство требований из реальной жизни не окажут воздействие на многие функции системы. Тем не менее, в идеале каждое функциональное изменение обязано затрагивать лишь один-единственный модуль.
· #9Возьмем нелинейную или хаотическую систему и внесем небольшое изменение в один из входных параметров. Можно получить серьезный и зачастую непредсказуемый результат. Классический пример: взмах крылышек бабочки в Токио может стать началом цепочки событий, приводящих к возникновению смерча в Техасе. Не напоминает ли это явление некоторые известные вам проекты?
· #10Если быть педантичным, то существует много способов стрельбы из пулемета в темное время суток, включая стрельбу с закрытыми глазами (поливая свинцом все вокруг). Но это лишь аналогия, и авторам позволительны некоторые вольности.
· #11При исследовании абсолютной (в противовес относительной) рабочей характеристики, необходимо придерживаться некоего языка, близкого по характеристикам к целевому языку.
· #12Нормальная форма Бэкуса-Наура (BNF) позволяет осуществлять рекурсивное определение контекстно-свободных грамматик. В любой толковой книге по проектированию компиляторов или синтаксическому анализу имеется подробная спецификация формы BNF.
· #13Авторы благодарят Эрика Вота за этот пример.
На самом деле можно приобретать инструментальные средства, поддерживающие только этот способ написания сценариев. Кроме того, можно изучить пакеты с простым исходным текстом (типа Expect), в которых имеются подобные возможности [URL 24]) делается без компиляции. Это существенно упрощает сопровождение в области динамической области приложения.
· #15Для законодателей вполне достаточно значения 3. В законопроекте № 246 Законодательного собрания штата Индиана (1897) была сделана попытка установить, что отныне число «пи» будет равно 3. Во втором чтении законопроект был отложен на неопределенное время, так как некий профессор математики указал, что власть законодателей не распространяется на законы природы.
· #16Для этой цели часто применяется MD5. Великолепное введение в чудесный мир криптографии – книга [Sch95]
· #17Все программы становятся унаследованными, как только они написаны.
· #18Генеральная общая лицензия GNU [URL 57] является разновидностью легального вируса, который используется разработчиками программ с открытым текстом для защиты своих (и ваших) прав. Стоит уделить время ее изучению. Она говорит о том, что пользователь может использовать и модифицировать программы с генеральной общей лицензией, но если он распространяет модифицированные программы, то они подлежат соответствующему лицензированию (и маркируются как таковые), а исходный текст должен быть открыт. Это и есть часть вируса – если ваша программа создается на основе лицензированной программы, то она также подлежит лицензированию. Тем не менее, пользователь не ограничен никоим образом при использовании инструментальных средств – право собственности и лицензирование программ, разработанных при помощи указанных средств, находятся на усмотрении пользователя.
· #19В идеальном случае используемая оболочка должна иметь те же клавиатурные привязки, что и редактор. Например, Bash поддерживает клавиатурные привязки редакторов vi и emacs.
· #20Подобным образом разработано ядро Linux. В данном случае имеются разработчики, разбросанные географически, многие из которых работают над одними и теми же фрагментами текста. Опубликован перечень установочных параметров (в данном случае для редактора Emacs), содержащий описание требуемого стиля отступов.
· #21В книге используется английская аббревиатура SCCS (заглавные буквы), которая обозначает системы управления исходным текстом вообще. Помимо этого, существует также особая система управления, обозначаемая sees (строчные буквы), изначально выпущенная фирмой AT&T вместе с Unix System V.
· #22Почему «резиновый утенок»? Один из авторов книги, Дэйв Хант, учился в лондонском Империал колледже и много работал совместно с аспирантом, которого звали Грег Паг и которого Д. Хант считает одним из лучших известных ему разработчиков. На протяжении нескольких месяцев Грег носил при себе крохотного желтого резинового утенка, которого он ставил на край монитора во время работы. Прошло некоторое время, пока Дэйв не отважился спросить…
· #23В оригинале router обозначает не маршрутизатор ЛВС, а фрезерный станок.
· #24Как насчет создания текста из схемы БД? Существует несколько способов. Если схема содержится в плоском файле (например, операторы create statements), тс синтаксический анализ и генерацию исходного текста можно провести при помощи относительно несложного сценария. В качестве альтернативного способа предлагается следующий: при использовании инструментального средства для создания схемы непосредственно в самой БД необходимо иметь возможность извлечения нужной информации непосредственно из словаря БД. В языке Perl имеются библиотеки, обеспечивающие доступ к большинству основных БД.
· #25Концепция частично основана на ранней работе Дейкстры, Флойда, Хоара, Вирта и др. Более подробная информация о самом языке Eiffel содержится в сети Интернет, см. [URL 10] и [URL 11].
· #26В языках программирования, имеющих своей основой язык С, можно использовать препроцессор или конструкцию с условными операторами с тем, чтобы указанные утверждения не носили обязательного характера. Во многих разработках происходит отключение генерации текста программы для макроса assert при установленном (или сброшенном) флажке этапа компиляции. Можно также поместить текст программы в пределах условного оператора if с постоянным условием, которое многие компиляторы (включая наиболее распространенные Java-системы) отбросят в ходе оптимизации.)
· #27Опасности, возникающие из-за связанности в программе, обсуждаются в разделе «Несвязанность и закон Деметера».
· #28Если n объектов знают друг о друге вес, то при изменении одного-единственного объекта возникает потребность в изменении оставшихся n – 1 объектов.
· #29На мирных (читай – глупых) птиц не действовало даже то, что поселенцы забивали их до смерти спортивными битами.
· #30В книге не рассматриваются подробности параллельного программирования; в хорошем учебнике по информатике даются его основы, включая диспетчеризацию, взаимоблокировку, зависание процесса, взаимоисключение/семафоры и т. д.
· #31Более подробная информация обо всех типах диаграмм UML (унифицированного языка моделирования) содержится в книге [FS97].
· #32Несмотря на то, что база данных показана как единое целое, это не так. Программное обеспечение баз данных разделено на несколько процессов и клиентских потоков, но их обработка производится внутренними программами БД и не является частью примера, приведенного в книге.
· #33Она использует статические данные для сохранения текущей позиции в буфере. Статические данные не защищены от параллельного доступа, поэтому они не являются поточно-ориентированными. Помимо этого, программа strtok затирает первый передаваемый параметр, что может привести к весьма неприятным сюрпризам.)
· #34Более подробная информация содержится в описании шаблона Observer в книге [GHJV95].
· #35Представление и контроллер тесно связаны между собой, и в некоторых реализациях MVC они являются единым целым.
· #36Тот факт, что самолет пролетает над головой, возможно, не представляет интереса, если только это не сотый самолет за ночь.
· #37В этом случае дело может зайти слишком далеко. Один разработчик переписывал абсолютно все исходные тексты, которые ему передавались, т. к. пользовался собственными соглашениями об именовании.
· #38На деле авторам не хватило реальной памяти для выполнения поразрядной сортировки свыше 7 млн чисел на компьютере с процессором Pentium и 64 Мбайт оперативной памяти во время тестирования алгоритмов, используемых в качестве упражнения к данному разделу. После этого была задействована область подкачки, и время сортировки резко сократилось.
· #39Термин «программная интегральная схема», по-видимому, был введен Коксом и Новобилски (1986) в их книге по языку Objective-C под названием «Object-Oriented Programming» [CN91].
· #40Тем не менее существуют иные методики, которые помогают управлять сложностью программ. Две из них – Java beans и АОР – обсуждались в разделе «Ортогональность».
Неделя – это долго или нет? На самом деле нет, особенно если рассматривать процессы, в которых менеджмент и исполнители находятся в разных мирах. Менеджмент дает одно представление о том, как все работает, но как только спускаешься в цех. то встречаешься с иной реальностью, для адаптации к которой требуется время.
· #42Существуют некоторые формальные методики, которые пытаются выразить операции алгебраически, но они редко используются на практике. Эти методы требуют, чтобы аналитики разъясняли их значение конечным пользователям.
· #43Подробные спецификации, несомненно, подходят для систем жизнеобеспечения. Очевидно, что эти спецификации составляются для интерфейсов и библиотек, используемых другими пользователями. Если результаты в целом представляют собой набор стандартных вызовов, лучше убедиться в том, что эти вызовы строго определены.
· #44В команде нет разногласий – но это только внешне. Внутри же команды поощряются оживленные серьезные дискуссии. Хорошие разработчики склонны быть страстными, когда речь идет об их работе.
· #45В книге «The Rational Unified Process: An Introduction» [Kru98] автор выделяет 27 отдельных ролей в пределах проектной команды!
· #46Например, при записи компакт-диска в формате ISO9660, запускается программа, создающая побитовый образ файловой системы 9660. Стоит ли тянуть до последней минуты, чтобы убедиться, что все нормально?
· #47А что же первое? Проклятый склероз.
· #48Ориентировочно можно принять среднюю величину по отрасли равной $ 100000 на душу; в нее входят заработная плата, социальные выплаты, обучение, оборудование рабочего места, накладные расходы и т. д.
· #49На сайте extreme Programming [URL 45] эта концепция обозначена как «непрерывная интеграция, безжалостное тестирование».
· #50Редактор американского издания требовал изменить это предложение на «Если система выходит из строя… «. Авторы сопротивлялись.
· #51В оригинале приводится толкование термина deadline – контрольный срок – в Webster's Collegiate Dictionary: черта, проведенная вокруг тюрьмы (или в ее пределах), за которую заключенный не имеет права выходить под страхом смерти.
· #52Информация подобного рода, как и имя файла, дается тегом RCS $Id$.
· #53Более подробно модели и представления рассмотрены в разделе «Всего лишь визуальное представление».
· #54Технологии XSL и CSS были разработаны для отделения представления от содержимого.
· #55ACM Member Services, РО BOX 11414, New York, NY 10286, USA. => www.acm.org
· #561730 Massachusetts Avenue NW, Washington, DC 20036-1992, USA. -> www.computer.org
- Высказывания программистов-практиков о книге «Программист-прагматик»
- Предисловие
- От авторов
- Глава 1 Прагматическая философия
- Глава 2 Прагматический подход
- Глава 3 Походный набор инструментов
- Глава 4 Прагматическая паранойя
- Глава 5 Гибкость против хрупкости
- Глава 6 Пока вы пишете программу
- Глава 7 Перед тем, как начать проект
- Глава 8 Прагматические проекты
- Приложение А Информационные ресурсы
- Библиография
- Приложение В Ответы к упражнениям
- Сноски из книги
- Содержание книги
- Популярные страницы