Литературное программирование, часть 2

Jan 14, 2010 23:37


Обещанного, конечно, три года ждут, но я справился раньше :)

Итак, второй пост про литературное программирование.

В предыдущем посте я описал историю и идеи литературного программирования, сейчас я хочу привести некоторые примеры ( Read more... )

geek, knuth, literate programming, lie algebras, scheme

Leave a comment

Comments 28

anonymous January 15 2010, 02:02:45 UTC
Ваша статья наскоро переразмеченная для Molly:

http://github.com/unixtechie/Literate-Molly/tree/26aabce8b68536e9aab4a920667f1fcb835f00e6/examples

В ней нет ссылок. Математические фонты в браузерах (Firefox, Opera) у меня не показывают красиво кривую вашу "h" и "h*" (есть, но плохо читается)
Возможно, что картинки mimeTeX (вместо AWCIMathML.js) были бы красивее.

также я не форматировал "justification".
Перевод сделал наполовину конвертером, затем поправил руками.

Reply

anonymous January 15 2010, 02:11:07 UTC
P.S. разумеется я проверил и код, который Molly.pl tangles out из переразмеченного (из TeX'а в HTML) исходника, разница с noweb в одном символе, пробеле перед закрывающей скобкой.
Она там должна быть по тому алгоритму, который у меня считает отступы.

Так что сравнивайте:

(а) какой формат удобнее читать, когда работаешь над файлом. Я НЕ читаю исходник в редакторе (vim), я читаю его в веб браузере, а пишу в редакторе ссылаясь на номера строчек.
Мне необходимость плавать в noweb-исходнике кажется серьезно тормозящей возможность работать над большими файлами

(б) какой формат дает более чистый печатный документ (разумеется, TeX)

(в) в каком формате чего не хватает (я не делал, например, ничего для автоматизации ссылок или нумерации уравнений)

И так далее.

Reply

anton_nazarov January 15 2010, 13:49:48 UTC
Я думаю, что перевод TeX-а в html - это отдельная большая задача, для решения которой есть несколько отдельных пакетов (TeX4ht, latex2html, HeVEA), которые не лишены недостатков. Я собираюсь написать, как можно использовать latex2html с noweb.
Ваше решение хорошее и легкое, а TeX нужен далеко не всем.

А как вы пишете?
Одновременно держите на экране браузер и vim, читаете одну половину экрана, а пишете на другой?

Reply

how I work етц. anonymous January 15 2010, 14:46:40 UTC
Да, на экране два окна, но смотреть в них одновременно как правило не надо ( ... )

Reply


andrastro January 15 2010, 03:51:08 UTC
Вроде даже я что-то понял.

А не уж-то на лиспе (или я обознался? :-) ) приятно программу писать? У меня был опыт на первом курсе - замучался... :-)
Хотя когда сдал, попробовал что-то для себя. Вроде легче было :-)

Reply

anton_nazarov January 15 2010, 13:56:33 UTC
Это диалект Lisp-а Scheme.
Мне он нравится тем, что он очень простой (в минимальном варианте), поэтому есть даже на моём старинном КПК.
Кроме того, так как он очень простой, то в нём нет каких-то непонятных косяков, вроде особенности списков Maple, которые на самом деле являются массивами и поэтому жестоко тормозят при добавлении в них элементов.
На Lisp (особенно Common Lisp и Emacs Lisp :)) очень приятно писать в emacs, он тогда превращается в очень продвинутую IDE для этих языков.

Reply


axiger January 15 2010, 06:18:13 UTC
спасибо, с нетерпением жду третьего поста

Reply

anton_nazarov January 15 2010, 13:57:58 UTC
Надеюсь, что я не буду так долго тормозить, как было с этим постом.
Я сегодня уже часть написал :)

Reply


anonymous January 19 2010, 18:01:16 UTC
Почему то всегда думал с точки зрения, что блоки вида:

<>=

код

@

вставлены в текст. В Sweave первая @ необязательна что ли?

Reply

anonymous January 20 2010, 11:01:24 UTC
yep, программы как правило начинают обработку находясь в режиме "документация"

Reply

anton_nazarov January 20 2010, 13:08:52 UTC
Насколько я понимаю, да.
В документации к noweb сказано следующее:
Documentation chunks begin with a line that starts with an
at sign (@) followed by a space or newline. They have no
names. Code chunks begin with
<>=
on a line by itself.
...
If the first
line in the file does not mark the beginning of a chunk, it
is assumed to be the first line of a documentation chunk.

Reply


sumerk January 19 2011, 19:54:49 UTC
А как соотносится литературное программирование с итеративным процессом программирования при котором дописывание кода происходит после компиляции, потом снова дописывания, потом опять компиляции, и число функционала программы всегда растет, при том, что начиналась программа с исходника Хэлло ворлд? Ведь если исходник WEB-документа парсится в два файла - исходник проги и хэлп-файл, то обратно их собрать уже нельзя??? Скажем, внеся изменения в исходник проги. Тогда литературное программирование вообще не вписывается в современность.

Можно ли интегрировать в Дельфи литературное программирование?

Кнут ведь писал свою первую прогу на бумаге, а потом ее вводил в комп.

Reply

sumerk January 19 2011, 20:21:45 UTC
Ой, я видел, что обсуждение идет в январе, но не сообразиЛ. что прошлого года))) Так что если не интересная для вас тема, то можно не разжевывать.

Reply

anton_nazarov January 20 2011, 14:02:44 UTC
Я вам ответил. Действительно, последнее время я не писал литературных программ, однако сейчас возвращаюсь к тому, что было сделано одновременно с написанием этого поста и я вижу определенную пользу литературного подхода :)

Reply

anton_nazarov January 20 2011, 14:00:20 UTC
Ну так надо смотреть на литературную программу как на исходник, а то, что получается в результате выполнения WEB(cWEB,noweb,etc) не трогать. Точно так же, как при разработке на C/C++ никто не пытается редактировать объектные файлы (.o).

Соответственно, запуск web/noweb надо добавить в make-файл перед вызовом компилятора.

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

Reply


Leave a comment

Up