Записки программиста, обо всем и ни о чем. Но, наверное, больше профессионального.

2008-05-16

Literate Programming

Продолжаю тренироваться в переводе. Сразу скажу, это не последний текст с ресурса:

http://www.literateprogramming.com/

Donald Knuth. The CWEB System of Structure Documentation. Addison-Wesley. 1994. pg. 1.

Философия в основе CWEB такова - опытный системный программист, желающий предоставить наилучшее документирование своего продукта, нуждается в двух вещах одновременно: язык типа TeX для форматирования (документирования) и язык типа C для программирования. Ни один из них (языков) не может предоставить лучшее документирование по отдельности, когда же их подходяще сопрячь, мы получаем систему заметно более полезную нежели применяя языки отдельно.



Структура программы может быть представлена как "паутина" сделанная из множества повязанных кусочков. Чтобы описать (документировать) подобную программу нам надо разьяснить каждую индивидуальную часть паутины и то, как она (часть) связана с соседями. Типографские инструменты предоставляемыеTeX дают нам возможность разьяснить локальную структуру каждой части делая ее (структуру) наглядной (видимой), а программерские инструменты предоставляемые языком типа C делают возможным для нас разьяснить алгоритмы формально и недвусмысленно. Обьединяя их оба, мы можем разработать стиль программирования увеличивающий наши возможности постигать структуту комплексных частей софта, и в то же время документированные программы могут быть механически транслированы в работоспособный софт адекватно документированный.



Кроме того, предоставляя документирующие инструменты, CWEB улучшает язык C предоставляя возможности перестановок кусков текста программ, так что большая система может быть понята целиком в терминах маленьких сегментов и их локальных взаимосвязей. CTANGLE программа так названа потому как берет предоставленную паутину и перемещает сегменты из веб структуры в последовательность требуемую C. Преимущество программирования на CWEB в том, что алгоритмы могут быть выражены в "распутанной" форме, где каждый сегмент разьяснен отдельно. CWEAVE программа так названа потому как берет представленную веб и сплетает порции TeX & C содержащиеся в каждом сегменте, увязывая исходный материал в структурированный документ.

Кстати, я и не знал, что то, к чему я при программировании стремлюсь, имеет простое название - LP

Комментариев нет:

Отправить комментарий

Архив блога

Ярлыки

linux (241) python (191) citation (186) web-develop (170) gov.ru (159) video (124) бытовуха (115) sysadm (100) GIS (97) Zope(Plone) (88) бурчалки (84) Book (83) programming (82) грабли (77) Fun (76) development (73) windsurfing (72) Microsoft (64) hiload (62) internet provider (57) opensource (57) security (57) опыт (55) movie (52) Wisdom (51) ML (47) driving (45) hardware (45) language (45) money (42) JS (41) curse (40) bigdata (39) DBMS (38) ArcGIS (34) history (31) PDA (30) howto (30) holyday (29) Google (27) Oracle (27) tourism (27) virtbox (27) health (26) vacation (24) AI (23) Autodesk (23) SQL (23) Java (22) humor (22) knowledge (22) translate (20) CSS (19) cheatsheet (19) hack (19) Apache (16) Manager (15) web-browser (15) Никонов (15) Klaipeda (14) functional programming (14) happiness (14) music (14) todo (14) PHP (13) course (13) scala (13) weapon (13) HTTP. Apache (12) SSH (12) frameworks (12) hero (12) im (12) settings (12) HTML (11) SciTE (11) USA (11) crypto (11) game (11) map (11) HTTPD (9) ODF (9) Photo (9) купи/продай (9) benchmark (8) documentation (8) 3D (7) CS (7) DNS (7) NoSQL (7) cloud (7) django (7) gun (7) matroska (7) telephony (7) Microsoft Office (6) VCS (6) bluetooth (6) pidgin (6) proxy (6) Donald Knuth (5) ETL (5) NVIDIA (5) Palanga (5) REST (5) bash (5) flash (5) keyboard (5) price (5) samba (5) CGI (4) LISP (4) RoR (4) cache (4) car (4) display (4) holywar (4) nginx (4) pistol (4) spark (4) xml (4) Лебедев (4) IDE (3) IE8 (3) J2EE (3) NTFS (3) RDP (3) holiday (3) mount (3) Гоблин (3) кухня (3) урюк (3) AMQP (2) ERP (2) IE7 (2) NAS (2) Naudoc (2) PDF (2) address (2) air (2) british (2) coffee (2) fitness (2) font (2) ftp (2) fuckup (2) messaging (2) notify (2) sharepoint (2) ssl/tls (2) stardict (2) tests (2) tunnel (2) udev (2) APT (1) CRUD (1) Canyonlands (1) Cyprus (1) DVDShrink (1) Jabber (1) K9Copy (1) Matlab (1) Portugal (1) VBA (1) WD My Book (1) autoit (1) bike (1) cannabis (1) chat (1) concurrent (1) dbf (1) ext4 (1) idioten (1) join (1) krusader (1) license (1) life (1) migration (1) mindmap (1) navitel (1) pneumatic weapon (1) quiz (1) regexp (1) robot (1) science (1) serialization (1) spatial (1) tie (1) vim (1) Науру (1) крысы (1) налоги (1) пианино (1)