"Эрик С.Рэймонд. Собор и Базар (Linux) " - читать интересную книгу автора

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

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

Прежде чем мы вернемся к общим рекомендациям по разработке программ, я
расскажу о нескольких уроках, которые я вынес из опыта работы над
fetcnmail'ом.
Синтаксис файла rc, включает в себя некоторые 'шумные' ключевые слова,
которые полностью игнорируются синтаксическим анализатором. Предлагаемый
синтаксис (напоминающий английский язык) значительно более читаемый, чем
традиционные пары слово-значение, которые вы получите после того, как
уберете все лишнее.
Этот эксперимент начался поздно ночью, когда я заметил, насколько
обЪявления в файле rc стали напоминать небольшой императивный язык. (Вот
почему я заменил ключевое слово 'server' на 'poll').
Традиционно программисты стремятся использовать точные и краткие
управляющие конструкции. Это правильно, потому что вычислительные ресурсы
дорогие, и процесс синтаксического анализа должен быть максимально простым и
дешевым.
Потому брать за основу английйский язык невыгодно, так как в нем около
50% избыточных конструкций.
Для меня это не является причиной, чтобы избегать синтаксиса
естественного языка. Дешевое исполнение инструкций и краткость не должны
стать конечной целью. В первую очередь язык должен быть удобным для людей, а
не дешевым для компьютеров.
Существуют еще несколько поводов для беспокойства. Во-первых,
нежелательно, чтобы возросшая стоимость синтаксического анализа, стала сама
по себе источником ошибок. Во-вторых, при попытке сделать язык
"англоподобным", часто требуется, чтобы "английский" потерял свою форму
настолько, чтобы он походил на естественный язык, не больше, чем
традиционный синтаксис. (Это можно часто видеть в языках запросов
"четвертого поколения" и языках коммерческих баз данных.) В управляющих
конструкциях fetchmail'a этих проблем удалось избежать, так как область
действия языка сильно ограничена. Он практически не является общецелевым
языком,и поэтому несложно перейти от небольшого подмножества английского
языка к действительному языку управления. Отсюда можно извлечь еще один
урок:
16. Если ваш язык не является полным по Тьюрингу, добавьте немного
синтаксического сахара.
Другой урок касается безопасности. Некоторые пользователи fetchmail'a
просили меня изменить программу так, чтобы она хранила зашифрованные пароли
в файле rc.