Одна из особенностей формата Pod - его структура. На первый взгляд, есть некоторое внешнее сходство между документацией, написанной в формате Perl5 POD, и текстом в формате Perl6 Pod. Это потому, что различия лежат в основе синтаксической структуры обоих форматов.

Синтаксическая структура Pod

Основным элементом формата Pod (как и в perl5 POD) являются директивы, используемые для определения границ блоков Pod, описания конфигурационной информации (=config) и т.д. Каждая директива начинается с символа "равно" (=) в начале строки.

Примеры директив:

    =config head2  :like<head1> :formatted<I>
    =begin pod
    =end pod

Содержимое документа состоит из одного или нескольких блоков. Каждый блок Pod может быть определен в виде трех равнозначных формах:

  • Разграниченные блоки /Delimitedblocks
  • Блоки-параграфы/Paragraph blocks
  • Сокращенные блоки /Abbreviated blocks

Все три формы соответственно представлены на рисунке.

Подробнее о каждой будет рассказано немного ниже.

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

В perl5 POD блок документации начинается с первой встреченной директивы и закачивается директивой =cut. Например:

   =head1 test head
   Some text
   =cut

Таким образом получается, что структура Perl5 POD состоит из одного типа блока с указанными правилами определения границ, где директива =cut является неотъемлемой частью и служит признаком завершения блока. После этой директивы, обработчик (parser) Perl5 POD переключается в "молчаливый" режим пока не встретит следующий символ = в начале строки.

Именно изменения в определении границ блоков документации и являются тем фундаментальным различием обоих форматов.

Новые 3 формы определения блока Pod стали эволюционным развитием Perlpod Pod от POD (Plain Old Documentation).

Comments:0

Недавно вышла очередная версия rakudo #23 ("Lisbon"). Rakudo - реализация perl6 на ассемблере для Parrot ( подробнее). От версии к версии увеличивается число успешно пройденных тестов на соответствие спецификациям языка Perl6. Спецификации называются "Synopsis" и собраны здесь: perlcabal.org/syn/. Новая версия успешно проходит 85,5% тестов.

Порт rakudo для FreeBSD

Для того, чтобы облегчить процесс установки perl6, мной был создан и поддерживается в актуальном состоянии порт rakudo для FreeBSD. Пока он дожидается внесения в официальное дерево портов (ports/130629), последние версии появляются на странице проекта rakudoport.

Установка perl6

Так как rakudo использует виртуальный процессор parrot, понадобится предварительно установить и его. Если в системе установлен parrot из портов, то его нужно удалить. Текущий порт устарел. Мантэйнер порта lang/parrot в курсе требуемых изменений (ports/140832).

Итак, чтобы можно было писать и запускать программы на perl6, достаточно выполнить несколько простых действий:

Скачать порты в один каталог
parrot-1.8.0.tgz и rakudo-200911.tgz
Распаковать и установить каждый
Это можно сделать следующими командами:
    tar xzf parrot-1.8.0.tgz
    ( cd parrot && make install clean )
    tar xzf rakudo-200911.tgz
    ( cd rakudo && make install clean )

Теперь можно запустить команду:

perl6 -e 'say "Hello, world "'

Или выполнить:

man perl6

Архитектура и версии

Проверял работу perl6 на 7.2-CURRENT и 7.0-PRERELEASE amd64. Сведений о других версиях у меня нет, но уверен, что проблем не возникнет. Последние полгода сборки проходят без ошибок.

Comments:0

В этом году конференция Google Developer Day (#gdd09ru) проходила в здании кинотеатра "Октябрь" на Новом Арбате. На афишах красовались сервисы от Google.

Общие темы

Открытие прошло в виде небольших презентаций основных технологий :

  • Google Wave
  • Google App Engine
  • Google Android
  • Google Web Toolkit

Помимо инженеров Google, на конференции выступали разработчики из Яндекс. В секции "Бизнес" после доклада посвященного AdWords, они рассказали о сервисе Яндекс.Директ.

Большинство докладов были ознакомительными. Но даже и они собирали полные залы. Например на вводном докладе "Разработка для мобильного веба" нельзя было даже пройти ( сидели на ступеньках).

Понравились доклады:

Скорость и пользователь
оптимизация web сайтов
Как заинтересовать посетителя
использование бесплатных сервисов для коммерческих целей

Некоторые факты

  • Novell ведет разработку сервиса с использованием технологии Google Wave
  • 65% мобильного веба просматривается из устройств Apple, 8% - Google Android
  • В вечернее время трафик с мобильных устройств преобладает над трафиком с персональных компьютеров
  • Video Sitemaps - определяет связь видеороликов с контентом сайта
  • Яндекс.Метрика - теперь доступен для всех желающих. Этот сервис аналогичен Google Analytics, но обладает средствами мониторинга ресурса с уведомлением владельца при аномалиях в трафике
  • Page Speed - инструмент оптимизации сайта

Материалы конференции

Организаторы объявили, что трансляции выступлений, проходивших в 1 и 2 залах, будут доступны для всех желающих. Некоторые презентации промелькнули в twitter'е мероприятия: @gddru

Немного фотографий с Google Developer Day.

Уже некоторое время для меня представляет интерес новый диалект Pod - развитие привычного формата ведения документации POD (Palin Old Documentation). Новый Pod предлагается к введению в Perl6 и его спецификация описана в Synopsis 26. Последняя редакция этого документа представлена в 2007 году и совсем скоро ожидаются очередные изменения.

Мой интерес имеет определенные причины: Pod - является тем самым форматом, с помощью которого я решаю свои задачи по обработке текстовых данных. А именно:

  • ведение документации
  • подготовка презентаций
  • формат статей этого блога

Я уверен, что этот список со временем будет только увеличиваться и будут появятся новые примеры использования Perldoc Pod. Потому что он:

  • однороден
  • компактен
  • выразителен
  • расширяем !

Это те качества, которые смогут привлечь к нему внимание большого количества почитателей.

Perl6 планируется к выходу в начале следующего года и полной реализации Perldoc Pod пока нет. В канун прошедшей весной конференции YAPC::Russia 2009 мне удалось обнаружить только две реализации этого диалекта. Одна из которых ( реализованная на rakudo) у меня отказалась работать, а вторая, созданная автором спецификации Damian Conway, была ограничена только двумя форматами экспорта: text и xhtml. Именно поэтому, я приступил к самостоятельной реализации этого формата на perl5 (Perl6::Pod).

Циклом статей на тему perl6 Pod, я не только хочу рассказать про новый диалект. Еще одна цель - пройтись по уже реализованным частям Synopsis 26, а также продолжить разработку оставшихся.

Введение

Широко известный формат ведения документации в perl5 - POD (Plain Old Documentation) отпраздновал в этом году 15 лет. Вместе с новой версией perl6 готовится новый формат : Perldoc Pod. Чем отличается perl5 POD от Perldoc Pod ?

Немного исторических дат, связанных с обоими форматами:

18 октября 1994
В списке анонса perl 5.000 присутвует поддержка POD
18 October 1994:
It was a complete rewrite of Perl. 
A few of the features and pitfalls are: 
 ...
  * The documentation is much more extensive 
    and perldoc along with pod is introduced.
  ..
9 апреля 2005
S26: cпецификация формата Pod для perl6. Автор - Damian Conway.
25 Apr 2007
Последняя модификация
August 16, 2009
S26 - The Next Generation ( preview).

В то время как существующий ныне POD означает Perl Old Documentation, cпецификация s26 представляет новый формат следующим образом:

Perldoc - легкий в использовании язык разметки с простой, однозначной моделью документа. Perldoc - поддерживает множество синтаксических диалектов, которые преобразуются в стандартные объекты модели. Стандартный диалект Perldoc - "Pod".

Таким образом Pod избавился от слова "старый".

Comments:0

<<Раньше - Позже