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

Этот проект вырос в нечто значительноое. Используя этот же способ (только в гораздо меньшем масштабе), я позаимствовал идеи у Карла Харриса и Гарри Хочхейзера. Вряд ли кого-нибудь из нас можно назвать гением. Однако, обычно научная, инженерная и промышленная разработка совершается не гениями, хаккерами.

Результаты этой работы были и быстрыми, и хорошими. Это был успех, которого хаккер ждет всю жизнь. Теперь, чтобы улучшит fetchmail, я писал код не только для себя, но также добавлял некоторые особенности, необходимые другим людям. Программа же при этом оставалась и простой, и рациональной.

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

Я реализовал эту особенность частично потому, что об этом просили пользователи, а частично потому, что это помогло обнаружить ошибки в single-drop. Мне пришлось обобщить проблему адресации. Усилия себя оправдали. Изучение RFC 822 заняло у меня очень много времени, так как пришлось изучить множество несвязанных меджу собой деталей.

Multidrop-адрессация была замечательным решением. Вот что я из нее вынес:

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

Другим важным изменеием, сделанным по просьбе моих бета-тестеров, стала поддержка 8-битовой операции MIME. Реализовать это было просто, потому что я старался оставить код 8-битным. Не потому что я чувствовал, что придется реализовывать эту особенность, а потому что я старался следовать следующему правилу:

15. Когда вы разрабатываете gateway software, старайтесь не вмешиваться в поток данных, пока вас к этому не вынудят.

Если бы я не стал следовать этому правилу, поддержка 8-битового MIME, стала бы очень трудной. А так мне просто пришлось прочитать RFC 1652.

Некоторые европейские пользователи просили меня добавить возможность ограничивать число писем за один сеанс (чтобы они могли контролировать издержки своих дорогих телефонных сетей). Я долго сопротивлялся этому, и до сих пор не уверен, что поступил правильно. Однако если вы пишете не только для себя, вы должны слушать ваших покупателей. Независимо от того получаете ли вы от них деньги.

8. Несколько уроков из опыта работы над fetchmail'ом.

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

Синтаксис файла rc, включает в себя некоторые 'шумные' ключевые слова, которые полностью игнорируются синтаксическим анализатором. Предлагаемый синтаксис (напоминающий английский язык) значительно более читаемый, чем традиционные пары слово-значение, которые вы получите после того, как уберете все лишнее.

Этот эксперимент начался поздно ночью, когда я заметил, насколько обЪявления в файле rc стали напоминать небольшой императивный язык. (Вот почему я заменил ключевое слово 'server' на 'poll').

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

Потому брать за основу английйский язык невыгодно, так как в нем около 50% избыточных конструкций.

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

Существуют еще несколько поводов для беспокойства. Во-первых, нежелательно, чтобы возросшая стоимость синтаксического анализа, стала сама по себе источником ошибок. Во-вторых, при попытке сделать язык «англоподобным», часто требуется, чтобы «английский» потерял свою форму настолько, чтобы он походил на естественный язык, не больше, чем традиционный синтаксис. (Это можно часто видеть в языках запросов «четвертого поколения» и языках коммерческих баз данных.) В управляющих конструкциях fetchmail'a этих проблем удалось избежать, так как область действия языка сильно ограничена. Он практически не является общецелевым языком,и поэтому несложно перейти от небольшого подмножества английского языка к действительному языку управления. Отсюда можно извлечь еще один урок:

16. Если ваш язык не является полным по Тьюрингу, добавьте немного синтаксического сахара.

Другой урок касается безопасности. Некоторые пользователи fetchmail'a просили меня изменить программу так, чтобы она хранила зашифрованные пароли в файле rc.

Я не сделал этого, потому что это не добавляет никакой защиты. Любой человек, имеющий право читать ваш файл, мог бы запустить fetchmail под вашим именем и, возможно, декодировать ваш пароль. Шифрование пароля в .fetchmailrc могло бы дать людям ложное чувство защищенности. Общее правило здесь следующее:

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

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

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

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

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

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

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

Вивек Кале

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