Книга: Программист-прагматик. Путь от подмастерья к мастеру

Сноски из книги

· #1

При этом можно утешаться изречением, приписываемым контр-адмиралу д-ру Грэйсу Хопперу: «Легче просить прощения, чем получать разрешение».

· #2

Это, конечно шутка!

· #3

Истекающий актив представляет собой некий актив, чья стоимость со временем уменьшается. Примерами могут послужить склад, доверху заполненный бананами, и билет на бейсбол.

· #4

В эру Интернета, многие люди, кажется, забыли о настоящих библиотеках, в которых имеется штат сотрудников и научные материалы.

· #5

В оригинале английское слово annoy происходит от старофранцузского enui что также означает «наскучить».

· #6

Применение функций средств доступа дополняет книгу Мейера «Uniform Access principle» [Mey97b], в которой говорится, что «все службы, обеспечиваемые неким модулем, должны быть доступны за счет универсальной системы обозначений, которая отличается надежностью независимо от того, хранятся ли эти службы в памяти или вычисляются».

· #7

В вертолете имеется четыре основных органа управления. Рычаг управления циклическим шагом несущего винта находится справа от пилота. При его перемещении вертолет движется в соответствующем направлении. Слева от пилота расположен рычаг управления общим шагом несущего винта. Если потянуть за него, то произойдет увеличение шага на всех лопастях и вертолет начнет подниматься. На конце рычага управления общим шагом расположен дроссель. И наконец, есть две ножных педали, которые изменяют тягу на рулевом винте и способствуют повороту вертолета.

· #8

В действительности, это наивно. Лишь при очень большом везении большинство требований из реальной жизни не окажут воздействие на многие функции системы. Тем не менее, в идеале каждое функциональное изменение обязано затрагивать лишь один-единственный модуль.

· #9

Возьмем нелинейную или хаотическую систему и внесем небольшое изменение в один из входных параметров. Можно получить серьезный и зачастую непредсказуемый результат. Классический пример: взмах крылышек бабочки в Токио может стать началом цепочки событий, приводящих к возникновению смерча в Техасе. Не напоминает ли это явление некоторые известные вам проекты?

· #10

Если быть педантичным, то существует много способов стрельбы из пулемета в темное время суток, включая стрельбу с закрытыми глазами (поливая свинцом все вокруг). Но это лишь аналогия, и авторам позволительны некоторые вольности.

· #11

При исследовании абсолютной (в противовес относительной) рабочей характеристики, необходимо придерживаться некоего языка, близкого по характеристикам к целевому языку.

· #12

Нормальная форма Бэкуса-Наура (BNF) позволяет осуществлять рекурсивное определение контекстно-свободных грамматик. В любой толковой книге по проектированию компиляторов или синтаксическому анализу имеется подробная спецификация формы BNF.

· #13

Авторы благодарят Эрика Вота за этот пример.

· #14

На самом деле можно приобретать инструментальные средства, поддерживающие только этот способ написания сценариев. Кроме того, можно изучить пакеты с простым исходным текстом (типа 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 и АОР – обсуждались в разделе «Ортогональность».

· #41

Неделя – это долго или нет? На самом деле нет, особенно если рассматривать процессы, в которых менеджмент и исполнители находятся в разных мирах. Менеджмент дает одно представление о том, как все работает, но как только спускаешься в цех. то встречаешься с иной реальностью, для адаптации к которой требуется время.

· #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 были разработаны для отделения представления от содержимого.

· #55

ACM Member Services, РО BOX 11414, New York, NY 10286, USA. => www.acm.org

· #56

1730 Massachusetts Avenue NW, Washington, DC 20036-1992, USA. -> www.computer.org

----

Оглавление книги


Генерация: 0.053. Запросов К БД/Cache: 0 / 0
поделиться
Вверх Вниз