Category: литература

Category was added automatically. Read all entries about "литература".

anonym_mouse

Литературное программирование Доналда Кнута

...
Тут по френд-лентам замелькало интервью с Кнутом, и там опять упоминается одно из малоизвестных его изобретений: "Литературное Программирование"

Интересно, а вы не пробовали писать как он предлагает?


Идея Literary Programming
Т.е. пишется как бы текст лекции, статьи, объяснения или эссе, в который вставлены абзацы-куски кода. Это намеренно сделано так, что читается подряд, как связный текст и предназначено в первую очередь для человеческих глаз.

Затем два простеньких инструмента (command-line utilities по 40-60кб, "tangle" и "weave") жуют исходник на "литературном программистском языке", т.е. смеси текста и программы с минимальной, простой разметкой как бы в виде комментариев и выдают - один чистый код (C у Кнута, но Haskel, ML, Perl, .... в поздних утилитах для ЛП - вообще любой язык), второй - красиво отформатированную статью-документацию.

Отличие от обычных схем документирования в том, что его utilities позволяют менять последовательность и логику во время написания программы, освобождая её от машинной, и одновременно создавать любые иерархии абстракций на человеческом языке, которые потом будут правильно развернуты и вставлены в исходники

Кнут выдумал это очень давно, и его оригинальные инструменты работают на основе его же собственного TeX'а (т.е. программист пишет свой исходник-эссе пользуясь TeXовой разметкой), но сегодня есть варианты для, например, "вики-синтаксиса".

Главная идея Кнута в том, что такой стиль СИЛЬНО ПОМОГАЕТ делать ПРОЕКТЫ БОЛЬШОГО РАЗМЕРА. Это - огромная проблема. Человеческий мозг начинает затирать после первых 1000-1300 строчек, приходится сосредоточиваться значительно сильнее чтобы все помнить и не сажать ошибок, и далее приходится вводить особые способы деления на куски, выдумывания новых абстракций более высокого уровня чтобы затем писать на "новом языке" и т.д.

Мой успешный опыт расширения горизонта охвата - "логическое программирование" (Пролог). Кнут утверждает, что "литературное программирование" (literate programming) обладает подобным эффектом


Поясняющий пример

Пример взят из документации программы для "литературного программирования" "noweb" и написан на языке Ц, хотя сама методология работает не привязана ни к одному конкретному языку (и в документации, кстати, отмечалось её успешное применение с перлом)

Для примера давайте рассмотрим HTML-документ созданный из одного классического примера - микро-программы для подсчета букв, слов и строчек в файле, юникс "wc" utility.
Я не привожу разметку исходника (она очень проста), здесь мы прочитаем HTML-форматированную документацию-программу-"эссе" Collapse )

  • nishkam

Perl Best Practices

Доброго времени суток!


Для начала позвольте представиться -- Валерий Студенников, занимаюсь программированием на Perl более 7 лет и очень люблю этот язык.


Меня очень вдохновила книга Perl Best Practices by Damian Conway. Книга потрясающая и уникальная в своём роде. Знания, в ней изложенные, позволяют улучшить качество разрабатываемого кода и увеличить свой skill level до небывалых высот.
Но к сожалению переводы этой книги на русский язык пока отсутствуют, за исключением некоторых выдержек из этой книги, которые я переводил некоторое время назад.


Сейчас я занимаюсь переводом этой книги, с тем, чтобы потом напечатаь её через какое-либо издательство (разумеется, со всеми авторскими отчислениями автору оригинала и т.п.).
Проблема в том, что книга довольно большая (500+) страниц и у одного меня на её перевод уйдёт около года, учитывая загрузку на основном месте работы.
Поэтому если есть люди, которым эта тема интересна и у которых нет проблем с английским (и с русским ;), приглашаю принять участие в переводе. Разумеется, гонорар пропорционально сделанной работе, Ваше имя в списке переводчиков и т.п..


Пишите на despairr [at] gmail [dot] com.