Литеральное программирование reloaded...
От: Зверёк Харьковский  
Дата: 04.03.06 17:45
Оценка: 13 (3)
...или Codepedia
Автор: Зверёк Харьковский
Дата: 29.09.05
, не ты ли это?


Вики литерального программирования: каждая статья является одновременно и программой. Вики-движок википедии дополнен синтаксисом средства литерального программирования noweb.
FAQ — це мiй ай-кью!
Re: Так нечестно :)
От: Mamut Швеция http://dmitriid.com
Дата: 05.03.06 10:07
Оценка:
http://rsdn.ru/Forum/Message.aspx?mid=1713647&only=1
Автор: Mamut
Дата: 04.03.06




dmitriid.comGitHubLinkedIn
Re[2]: Так нечестно :)
От: DEMON HOOD  
Дата: 05.03.06 13:45
Оценка:
Здравствуйте, Mamut, Вы писали:

зато ты выложил на 9 часов раньше
silent RSDN@Home 1.2.0 alpha [618] Windows XP 5.1.2600.65536
Re[2]: Так нечестно :)
От: Зверёк Харьковский  
Дата: 05.03.06 14:30
Оценка:
Здравствуйте, Mamut, Вы писали:

M>http://rsdn.ru/Forum/Message.aspx?mid=1713647&only=1
Автор: Mamut
Дата: 04.03.06


M>


Pardon moi. Я сейчас рсдн читаю в режиме "только 4 форума раз в сутки". "Прочее" в эти 4 не входит.
FAQ — це мiй ай-кью!
Re[3]: Так нечестно :)
От: Mamut Швеция http://dmitriid.com
Дата: 05.03.06 17:21
Оценка:
ЗХ>Pardon moi. Я сейчас рсдн читаю в режиме "только 4 форума раз в сутки". "Прочее" в эти 4 не входит.

Je vous pardon У меня похожая ситуация



dmitriid.comGitHubLinkedIn
Re: Литеральное программирование reloaded...
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 06.03.06 09:37
Оценка: :)
Здравствуйте, Зверёк Харьковский, Вы писали:

ЗХ>Вики литерального программирования: каждая статья является одновременно и программой.


Я вот статью начинал писать на эту тему, так и не собрался. А вот оригинальные TANGLE и WEAVE на Delphi перевел, кому надо --- могу поделиться Вообще, я называю его литературное программирование (от слова литература). Кто-то еще называет содержательное программирование. В одном месте я встречал перевод как документированное программирование. Вещь интересная, но... (1) Программисты сейчас в дефиците. Одна из современный тенденций развития IT --- уменьшить квалификацию среднестатистического программиста в проекте. А в данном случае нужны не просто хорошие программисты, но и хорошие публицисты. (2) Чтобы пользоваться TANGLE + WEAVE желательно знать TeX. (3) Инструменты TANGLE и WEAVE выполнены на уровне 1980-x годов. Среды, которая бы реализовала идеи литературного программирования (в идеале отладка по форматированному тексту, и т. д.) нету .

Но до чего все-таки приятно программировать в таком стиле и набирать программы вот так последовательно:

@* Введение.         
Приступим писать шахматную программу... Пойдем на все тяжкие...
Даже, скорее, на сегодня не программу, а шаблон программы для
работы по протоколу WinBoard, через каналы (pipes). Это даст
нам довольно-таки хороший интерфейс, и противники есть, будет 
с чем сравнивать и куда стремиться!

@ Перечислим наиболее общие моменты, которые могут нам пригодиться.
Во-первых, это реализация директив компилятора. Создадим соответствующий 
макрос для того, чтобы не писать всякий раз последовательность,
состоящую из знаков коммерческого <@@>, фигурных скобочек и амперсандов,
которая выглядит как абракадабра и затрудняет внешний вид исходника.

@d preprocessor(#) ==   @{@&$#@}
@f preprocessor == nil
@f string == nil

@ Надо как-то помечать отладочный код. Сделаем это более современными
чем в \.{TANGLE} и \.{WEAVE} средствами, а именно через препроцессор.

@d debug == preprocessor(IFDEF DEBUG)
@d gubed == preprocessor(ENDIF)
@f debug == begin
@f gubed == end


@ Как жаль, что в Delphi нет сишного оператора return! При обычном 
программировании я довольно часто набирал последовательность
|begin Result := Something; Exit end;|. Но в нашем распоряжении 
есть механизм макросов системы WEB, который позволит нам устранить 
этот недостаток!

@d return(#) == begin Result := #; Exit; end

@ Мы подошли к общей структуре нашей программы, которая до боли
знакома прогараммистам Delphi.

@p @<Директивы компилятора@>
program mu;
uses Windows, SysUtils;
type
  @<Типы@>
var
  @<Глобальные переменные@>
@<Процедуры, функции@>
begin
  Randomize;
  try
    @<Инициализация протокола@>
    @<Цикл приема и ответа на команды@>
  except
    on E: Exception do
      @<Обработка исключения@>
  end;
  preprocessor(WARNINGS OFF) {Убиваем предупреждение о тексте после end.}
end.

@......................................
Re: Литеральное программирование reloaded...
От: TheBeard Россия  
Дата: 07.03.06 20:19
Оценка:
Только вот кроме Кнута никто этим, похоже, не пользуется. Я, помню,
долго рылся в исходниках эмулятора MMIX
(http://www-cs-faculty.stanford.edu/~knuth/mmix.html) и чувствовал
скорее неудобство.

Кстати, почему "литеральное"? "Literate" ведь означает просто "грамотный".
Posted via RSDN NNTP Server 2.0
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.