8.2.7. Учебный пример: синтаксис конфигурационного файла fetchmail

8.2.7. Учебный пример: синтаксис конфигурационного файла fetchmail

Рассмотрим пример 8.5.

Конфигурационный файл может рассматриваться как императивный мини-язык. Существует предполагаемый поток выполнения: повторяющаяся, циклическая обработка списка команд опроса ("засыпающая" на время в конце каждого цикла) и последовательный сбор почты с каждого из указанных узлов для каждого пользователя, связанного с определенными узлами. Данный язык далек от универсальных языков. Все, что он способен делать, — создавать последовательность команд опроса серверов.

Как и в случае с программой pic(1), данный мини-язык можно рассматривать как объявления либо как слабый императивный язык и бесконечно спорить об отличиях. С одной стороны, в нем нет ни условных операторов, ни рекурсии, ни циклов. Фактически он вообще не имеет явных управляющих структур. С другой стороны, он описывает скорее действия, чем зависимости, что отличает его от исключительно декларативного синтаксиса, подобного GUI-описаниям Glade.

Пример 8.5. Синтетический код fetchmailrc

#Опрашивать данный узел первым в цикле.

poll pop.provider.net proto pop3

 user "jsmith" with pass "secret1" is "smith" here

 user jones with pass "secret2" is "jjones" here with options keep

# Опрашивать данный узел вторым

poll billywig.hogwarts.com with proto imap:

 user harry_potter with pass "floo" is harry_potter here

# Опрашивать данный узел третьим в цикле.

# Пароль будет взят из файла ~/.netrc

poll mailhost.net with proto imap:

 user esr is esr here

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

Примечательной особенностью синтаксиса .fetchmailrc является использование необязательных ключевых слов, которые поддерживаются просто для того, чтобы язык спецификаций более походил на английский язык. Ключевые слова "with" и однократное употребление слова "options" в примере фактически не являются обязательными, но позволяют упростить описания для чтения.

Традиционно подобный синтаксис называется синтаксическим сахаром (syntactic sugar). Данному термину сопутствует известное высказывание о том, что "синтаксический сахар вызывает рак двоеточий"[85]. Действительно, чтобы синтаксический сахар не создавал трудностей больше, чем может решить проблем, его необходимо использовать умеренно.

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

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

6.1.2. Учебный пример: параметр -v программы fetchmail

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

6.1.2. Учебный пример: параметр -v программы fetchmail fetchmail — программа-шлюз. Ее главной задачей является преобразование между протоколами удаленной загрузки почты РОРЗ или IMAP и собственным протоколом Internet SMTP для обмена почтой. Он чрезвычайно широко распространен на


7.2.6.4. Учебный пример: использование сигналов в программе fetchmail

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

7.2.6.4. Учебный пример: использование сигналов в программе fetchmail Утилита fetchmail обычно устанавливается для работы в качестве демона в фоновом режиме, который без вмешательства пользователя периодически собирает почту со всех удаленных узлов, указанных в конфигурационном


10.6.1. Учебный пример: fetchmail

Из книги Сетевые средства Linux автора Смит Родерик В.

10.6.1. Учебный пример: fetchmail Программа fetchmail использует только две переменные среды — USER и НОМЕ. Данные переменные входят в состав предопределенного набора конфигурационных данных, инициализируемых системой, и используются многими программами.Значение переменной НОМЕ


14.4.1.1. Учебный пример: fetchmail

Из книги Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil автора Ковязин Алексей Николаевич

14.4.1.1. Учебный пример: fetchmail Наилучший пример использования С — само ядро Unix, для которого язык программирования, свободно поддерживающий операции на аппаратном уровне, действительно является сильным преимуществом. Но fetchmail представляет собой пример пользовательской


15.4.2.1. Учебный пример: использование make для преобразования файла документации

Из книги автора

15.4.2.1. Учебный пример: использование make для преобразования файла документации В make-файле программы fetchmail, например, есть три правила, которые связывают файлы FAQ, FEATURES и NOTES с исходными HTML-файлами fetchmail-FAQ.html, fetchmail-features.html и design-notes.html.HTML-файлы предназначены для просмотра на


6.1.2. Учебный пример: параметр -v программы fetchmail

Из книги автора

6.1.2. Учебный пример: параметр -v программы fetchmail fetchmail — программа-шлюз. Ее главной задачей является преобразование между протоколами удаленной загрузки почты POP3 или IMAP и собственным протоколом Internet SMTP для обмена почтой. Он чрезвычайно широко распространен на Unix-машинах,


7.2.6.4. Учебный пример: использование сигналов в программе fetchmail

Из книги автора

7.2.6.4. Учебный пример: использование сигналов в программе fetchmail Утилита fetchmail обычно устанавливается для работы в качестве демона в фоновом режиме, который без вмешательства пользователя периодически собирает почту со всех удаленных узлов, указанных в конфигурационном


8.2.7. Учебный пример: синтаксис конфигурационного файла fetchmail

Из книги автора

8.2.7. Учебный пример: синтаксис конфигурационного файла fetchmail Рассмотрим пример 8.5.Конфигурационный файл может рассматриваться как императивный мини-язык. Существует предполагаемый поток выполнения: повторяющаяся, циклическая обработка списка команд опроса


10.6.1. Учебный пример: fetchmail

Из книги автора

10.6.1. Учебный пример: fetchmail Программа fetchmail использует только две переменные среды — USER и НОМЕ. Данные переменные входят в состав предопределенного набора конфигурационных данных, инициализируемых системой, и используются многими программами.Значение переменной HOME


14.4.1.1. Учебный пример: fetchmail

Из книги автора

14.4.1.1. Учебный пример: fetchmail Наилучший пример использования С — само ядро Unix, для которого язык программирования, свободно поддерживающий операции на аппаратном уровне, действительно является сильным преимуществом. Но fetchmail представляет собой пример пользовательской


15.4.2.1. Учебный пример: использование make для преобразования файла документации

Из книги автора

15.4.2.1. Учебный пример: использование make для преобразования файла документации В make-файле программы fetchmail, например, есть три правила, которые связывают файлы FAQ, FEATURES и NOTES с исходными HTML-файлами fetchmail-FAQ.html, fetchmail-features.html и design-notes.html.HTML-файлы предназначены для просмотра на


Структура конфигурационного файла ntp.conf

Из книги автора

Структура конфигурационного файла ntp.conf Для настройки средств NTP используется файл ntp.conf, который обычно размещается в каталоге /etc. Как и во многих других конфигурационных файлах, строки, содержащие комментарии, начинаются с символа #, а в остальных строках задаются


Формирование конфигурационного файла AMANDA

Из книги автора

Формирование конфигурационного файла AMANDA Особенности работы пакета AMANDA определяются содержимым конфигурационных файлов amanda.conf, которые обычно находятся в подкаталогах каталога /etc или /usr/local/etc. Обычно конфигурационные файлы AMANDA размещаются на двух уровнях


Пример конфигурационного файла зоны

Из книги автора

Пример конфигурационного файла зоны В листинге 18.2 приведен пример простого конфигурационного файла зоны. Этот файл начинается с имени зоны (threeroomco.com) и раздела, в котором определяются параметры домена по умолчанию. Эти параметры детально рассматриваются ниже. За этим