[docs] Re: Literate programming for Makefiles

Oleg A. Paraschenko olpa на xmlhack.ru
Вт Ноя 4 20:24:54 MSK 2003


  Привет!

On Tue, 4 Nov 2003 17:56:35 +0300
Vitaly Ostanin <vyt на vzljot.ru> wrote:

...
> 
> Время потрачено для приведения Makefiles к схеме сборки по
> зависимостям. В том, что в процессе приведения встал вопрос
> документирования, нет ничего удивительного.
> 
> Кстати, время, потраченное лично мною на создание
> Makefiles.litprog съэкономит (кстати, как это слово правильно
> пишется?) лично мне время на описание Makefiles в docs-howto.
> 
> А кому-то, возможно, сократит время ковыряния в потрохах
> Makefiles.

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

> 
> Сравнивать это время с количеством док или скриншотов, по-моему,
> неправильно.

  Согласен.

> 
> > > > --
> > > > 
> > > > Какая документация нужна на make? Думаю, примерно такая:
> > > > 
> > > > * для технического писателя (того, кто будет всё это
> > > > использовать);* для разработчика make-файлов,
> > > > высокоуровневая-- понять, что к чему;* для разработчика
> > > > make-файлов, низкоуровневая -- детали.
> > > > 
> > > > Вытаскивание Makefile, хотя бы и с комментариями, не
> > > > является ни одним из этих типов.
> > > 
> > > Не понял.
> > 
> >   Что даст наличие в документации красивых make-файлов с
> >   комментариями тому, кто задаётся вопросом "а что мне с этим
> >   делать?" или "а как работают make-файлы?". Кажется, ничего.
> 
> В документации, кроме красивых make-файлов, будет ответ именно на
> вопрос, как работают именно эти конкретные make-файлы, и почему
> они работают именно так, а не иначе.
> 
> > > > Предположим, что некто хочет добавить что-то в Makefile, но
> > > > не хочет разбираться в сущностях (literate programming).
> > > > Сможет ли он сделать это? Может быть и да, но я бы забил.
> > > 
> > > Сможет, добавив это что-то в Makefile и прислав в рассылку
> > > уведомление об этом. Если два тега нашего litprog -
> > > <alt:doc/> и<alt:code/> - требуют осознания ;), я добавлю
> > > описание в Makefile.litprog самостоятельно.
> > > 
> > > Кстати, подразумевается, что автор Makefile для DocBook имеет
> > > представление о DocBook хотя бы в пределах <para/>.
> > 
> >   Вот это как раз хуже всего. Потому что незнакомый с DocBook
> >   человек будет писать <para/> и не мучиться, а знакомый --
> >   начнёт задумываться, а есть ли <alt:make-target/>,
> >   <alt:make-variable/> и т.д, а кому-то это захочется сделать.
> 
> Кому захочется - вправе задуматься :) Чем это плохо?

  Начнётся работа над этим.

> 
> Серьёзно, чем litprog плох?

> Мешает?

  Да.

> Сложен?

  Нет. В данном случае -- многословен.

> Ну так пишите
> простые Makefile - но их описания должны быть в любом случае, и
> они будут вставлены в документацию.

  Во, ещё придумал:

* Я люблю делать завершённые вещи. #-Комментарии внутри make -- завершённые вещи. LP-комментарии -- нет. Их надо "компилировать". А если при этом make-файл ещё невалиден и ничего не собирается?

* успех php, perl и других basic'ов в том, что как написал -- так сразу и проверил. В варианте с LP надо вначале "компилировать".

> 
> > > > --
> > > > 
> > > > А как настроить подстветку синтаксиса в моём любимом vim?
> > > 
> > > Научить :) Я ничего не знаю про vim - в emacs я переключаю
> > > режимы редактирования - makefile-mode/nxml-mode.
> > 
> >   Что переключать можно, это понятно. Интересует одновременная
> >   подсветка. Как когда php в html -- рассвечивается и то, и
> >   другое.
> 
> Я же сказал, что ничего не знаю про vim. Если мне понадобится это
> в emacs, я залезу в доку и поищу что-нибудь на предмет смешивания
> major modes.
> 
> > > Кстати, прототипы я делал так: писал Makefile, отлаживал, и
> > > переносил в Makefile.litprog с описанием.
> > 
> >   Вот-вот. А надо наоборот. Вначале надо написать для человека,
> >   что происходит, затем ввести код, скомпилировать, и только
> >   тогда начать отлаживать код.
> 
> Можно и так - дело вкуса. На практике программист не всегда
> сразу может сформулировать, что происходит :)

  Одна из целей LP и состоит в том, чтобы программист вначале всё-таки сформулировал, а только потом писал.

> 
> <skipped/>
> 
> > > Так вот, javadoc (TeX, LaTeX, html и т.п.) в качестве
> > > исходного формата для разметки документации я обсуждать не
> > > буду.
> > 
> >   А зря. В данном случае наворачивать не стоит.
> 
> Я уже писал - если два дополнительных тега litprog и
> необходимость предварительной сборки Makefile сильно усложняют
> жизнь - пишите просто Makefile и комментарии в plain text, я
> добавлю в litprog.
> 
> Makefile не так уж часто будут меняться. А вот для понимания
> процесса сборки нормальная дока по ним была бы нелишней.

  Для понимания процесса нужна внешняя по отношению к самим make-файлам дока. LP тут ничем не поможет. 

> 
> > > А вот 1. был бы удобен, но не представляю его на практике.
> > > 
> > > > ...
> > > > # non-doc comment
> > > > ## <para>... comment for docs ...</para>
> > > 
> > > А как отсюда выдирать теги?
> > 
> > Примерно так (не проверил):
> > 
> > echo '<makedoc>'
> > cat Makefile | grep '^##' | sed '/s/^## /'
> > echo '</makedoc>'
> 
> Такая схема ещё больше усложнит подсветку синтаксиса одновременно
> для DocBook и Makefile.

  Неа. В этом случае можно спокойно оставаться в подсветке для make. Ибо добавить <para/> в комментарии -- не проблема. А вот в супе из тегов в XML LP без подсветки можно утонуть.

> 
> А как писать параграф, если он содержит 150 символов? В одну
> строку? Писать комментарии на русском, придерживаясь
> закомментированного объявления XML ? Странно как-то.

  Видимо, да.

> 
> <skipped/>
> 
> -- 
> Regards, Vyt
> mailto:  vyt на vzljot.ru
> JID:     vyt на vzljot.ru


-- 
Oleg



Подробная информация о списке рассылки docs