Читаем Собор и Базар полностью

Интересно, что чем больше вы сознаете, скольким вы обязаны другим людям, тем больше людей считают, что программа написана вами от начала до конца. Это особенно заметно у Линуса. (Когда я читал эту статью на конференции по Perl'у в августе 1997 года, Larry Wall сидел на первом ряду. Как только я произнес вышенаписанные строки, он воскликнул:" Скажи, скажи им, брат!". Все в зале засмеялись, потому что знали, что он тоже работал над созданием Perl'a.) После нескольких недель работы над проектом в таком духе, я начал чувствовать гордость не только перед своими пользователями, но и перед остальными людьми, которые узнавали обо мне. Я снова и снова смотрел на свою почту и удивлялся, неужели, моя жизнь настолько стоящая.

Однако, существуют более фундаментальные уроки, которые не имеют отношения к политике, зато имеют отношение к общему стилю разработки.

12. Часто самые удивительные решения приходят от понимая того, что постановка задачи была неправильной.

Я пытался решить проблему, разрабатывая popclient как комбинированный MTA/MDA cо всевозможными режимами локальной доставки почты. Разработку fetchmail'a требовалось пересмотреть с позиций чистого MTA.

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

Итак, я переформулировал свою проблему. Очевидно, что нужно было (1)добавить поддержку SMTP forwarding в родовой драйвер,(2) сделать это режимом по умолчанию, (3)выбросить все остальные режимы доставки, особенно возможности доставки в файл и доставки в стандартный выходной поток.

Некоторе время я не решался делать шаг 3, чтобы не подводить пользователей, зависящих от альтернативных методов доставки. Теоретически, чтобы получить тот же самый эффект они могли переключиться на использование.forward файлов или их не sendmail'овские эквиваленты. Практически, такой переход мог вызвать проблемы.

Однако, когда я решился на этот шаг, он принес много пользы. Значительная часть кода драйвера исчезла, конфигурация заметно упростилась,стало не нужно заботиться об MDA, пользовательском mailbox'e, поддержке блокировки файлов операционной системой.

К тому же исчез единственный способ потерять почту. Если у вас определена доставка почты в файл, а диск оказывается переполненным, то почту вы теряете. Это не может случиться при SMTP forwarding, так как SMTP listener не вернет OK, до тех пор пока сообщение не будет доставлено или отложено для более поздней доставки.

Также улучшилась производительность (хотя при единичном запуске вы бы этого не заметили). Другое незначительное улучшение заключалось в том, что справочная система (manual page) стала короче.

Позже, мне пришлось добавить доставку через локальный MDA определенный пользователем, для того чтобы справиться с некоторыми ситуациями связанными с динамическим SLIP'ом. Однако, я нашел для этого более простой способ.

Какой же из этого можно сделать вывод? Не колебайтесь выбрасывать устаревшие особенности, если вы можете сделать это без потери эффективности. Антуан де Сент– Экзюпери – человек, который был летчиком и авиаконструктором, сказал:

13. Совершенство в разработке достигается не тогда, когда нечего добавить, а тогда когда нечего убрать.

Если ваш код становится одновременно и лучше и проще, вы поступаете правильно. В процессе разработки fetchmail приобрел свое собственное лицо, отличное от старого popclient'a.

Наступило время для смены имени. Новый дизайн больше походил на двойственный sendmail, чем старый popclient. Итак, через два месяца я переименовал его в fetchmail.

7. Fetchmail расширяется.

В работе над этой программой я использовал много изящных нововведений.

Программа работала хорошо, потому что я использовал ее каждый день, и часто прислушивался к моим бета-тестерам. Я вдруг осознал, что это не просто тривиальная хаккерская задача, которая может быть полезна разве лишь нескольким людям. У меня была программа нужная каждому хаккеру, имеющему UNIX-машину и SLIP/PPP соединение. Благодаря использованию SMPT-forwarding, эта программа могла бы стать «убийцей категории», т. е. программой, которая настолько плотно заполняет свою нишу,что все остальные оказываются просто забытыми.

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

У Эндрю Таненбаума была идея построить простую UNIX-подобную систему для 386 машины, чтобы использовать ее как обучающий инструмент. Линус Торвальдс использовал идеи Minix, прежде чем Эндрю понял, что из них может получиться.

Перейти на страницу:

Похожие книги

В шаге от вечности. Как я стал киборгом, чтобы победить смерть
В шаге от вечности. Как я стал киборгом, чтобы победить смерть

• Захватывающая история от первого лица – ученого, который решил превратиться в киборга, чтобы победить неизлечимую болезнь, поразившую его ЦНС.• Реальный опыт использования самых последних достижений робототехники, ИИ и хирургии в создании получеловека-полуробота.• Описание эксперимента, который способен изменить будущее смертельно больных людей.В 2017 году американскому ученому-робототехнику Питеру Скотту-Моргану диагностировали боковой амиотрофический склероз – болезнь, которую врачи признают неизлечимой (этот недуг в свое время разрушил нервные клетки Стивена Хокинга). Но Скотт-Морган не сдался. Он использовал обширные знания, опыт и новейшие технологии, чтобы заменить часть пострадавших функций своего организма электроникой. Затем ученый решил переместить свой аватар в компьютер с помощью искусственного интеллекта и стать Питером 2.0, чтобы не просто победить болезнь, но получить шанс на вечную жизнь в машине. Эта книга описывает эксперимент, похожий на сюжет научно-фантастического фильма, однако совершенно реальный. Благодаря стараниям ученого люди с инвалидностью получают шанс выжить. Эксперимент Питера 2.0 способен изменить будущее.Цитаты«Была зима. Мы отправились в погоню за северным сиянием и забрались уже очень далеко к северу от полярного круга, где я и отмокал в тот день в горячей ванне. Потом встал – вода была еще теплой – и вытер полотенцем все тело выше колен. Поднял левую ногу, стряхнул капли, как собака, которая наступила во что-то неприятное, и поставил ее на коврик. Как следует отряхнуть правую ногу я не смог. Она лишь слегка колыхалась».«Каждому человеку от рождения дано право изменить мир. К этому выводу я пришел к своему шестнадцатому дню рождения, и мне нравилось думать, что добиться перемен можно, только нарушая правила».«Месяца четыре, если не ошибаюсь, я провел в стадии отрицания, прежде чем принять, наконец, для себя новую истину: вероятно, это не просто период. Вероятно, я сейчас не просто экспериментирую с новым стилем жизни, подразумевающим ограниченные возможности, чтобы потом вернуться к привычному, как у всех, темпу передвижения. Вероятно, теперь я инвалид».Для кого:Для тех, кто интересуется последними достижениями в области ИИ, хирургии и робототехники.

Питер Скотт-Морган

Зарубежная компьютерная, околокомпьютерная литература
Внедрение SAP R/3: Руководство для менеджеров и инженеров
Внедрение SAP R/3: Руководство для менеджеров и инженеров

Это практическое всеобъемлющие руководство было написано специально для тех, кто выбирает стратегию внедрения SAP в организации. «Внедрение SAP R/3: руководство для менеджеров и инженеров» объясняет, что означает понятие «эпоха ERP», почему информация является одним из ключевых ресурсов предприятия, как SAP способствует росту конкурентоспособности компании, а также преимущества методологии ASAP в планировании и использовании ресурсов при внедрении SAP. Подход к ERP-системам, используемый в данной книге, будет крайне полезен менеджерам и специалистам, которым необходимо представить высшему руководству своих компаний основания для внедрения SAP; кроме того, данная книга будет весьма полезной тем, кто занимается проектами SAP или планирует такой проект в ближайшем будущем. Для тех читателей, кто непосредственно занят в проектах SAP, эта книга станет надежным руководством и поможет внести существенный вклад в развитие проекта.

Вивек Кале

Зарубежная компьютерная, околокомпьютерная литература / Прочая компьютерная литература / Книги по IT