A Literate Programming (GP; English Literate Programming ) egy olyan fogalom, programozási módszertan és dokumentáció, amelyben a program természetes nyelvű prózából áll, makrohelyettesítésekkel és programozási nyelvi kóddal [1] . A kifejezést és magát a koncepciót Donald Knuth javasolta 1981-ben, amikor egy számítógépes elrendezési rendszert Τ Ε Χ fejlesztett ki .
Az írástudó programozás olyan, mint a programozási előadások magyarázata, természetes nyelvű „ pszeudokód ” kifejezésekkel. Világossá teszik az összetett kódot, és sok más beágyazott absztrakciót és kódot rejtenek el egy formális programozási nyelvben egyetlen kifejezés alatt.
A GP bizonyos értelemben "pszeudokódban való programozás" tetszőleges frázisokkal, amelyeket aztán makrókként kibővítenek egy forrásfájlból származó segédprogram segítségével, amely tartalmazza a fogalmak dokumentált szöveges magyarázatát, magát a kódot és a pszeudokódot.
Más szavakkal, a program nem emelkedő vagy csökkenő hierarchiaként épül fel, hanem "egymástól függő fogalmi hálózatként" (innen ered az első háziorvosi rendszer neve - "Web"), és "gondolatfolyamként" jön létre. ezen a hálózaton keresztül koherens, logikus módon, ami külsőleg irodalmi esszészerűvé teszi a leírást. A prezentáció sorrendje függetlennek bizonyul a nyelvi fordító követelményeitől.
Változtassuk meg a hagyományos prioritásokat a programok létrehozása során: ahelyett, hogy feladatunkra úgy gondolnánk, hogy utasításokat készítünk „Mit csináljunk?” a számítógép esetében arra fogunk összpontosítani, hogy elmagyarázzuk másoknak elképzeléseink leírását arról, hogy mit kell tennie a számítógépnek a program irányítása alatt.
– Donald Knuth , http://community.livejournal.com/ru_perl/249441.htmlA Knuth által az 1970-es évek " strukturált programozásának " alternatívájaként javasolt háziorvosi rendszert a kedvező vélemények ellenére nem alkalmazták széles körben az eszköztámogatás és azok integrációjának hiánya miatt [2] .
Egy másik probléma az volt, hogy a GPU a kötegelt feldolgozásra összpontosított , míg a programozási rendszerek egyre inkább a WYSIWYG eszközökre [2] .
A HP elterjedését ráadásul hátráltatta az a tévhit is, miszerint az "írástudó programoknak" monolitikusaknak kell lenniük, és hogy a HP a hipertext ellentéte [2] .
Sokan azt gondolják, hogy a GPU csak egy dokumentáló rendszer vagy formázási rendszer a hétköznapi megjegyzésekhez. Valójában a kevés vagy egyáltalán nem kommentárt tartalmazó program megírható a háziorvosi megközelítéssel, ahogy a bőbeszédű megjegyzések önmagukban nem hoznak létre háziorvosi megközelítést.
A leggyakoribb félreértés a makrorendszer szerepével kapcsolatos, amely lehetővé teszi, hogy tetszőleges absztrakciós rendszereket építsünk az absztrakciók fölé, és a darabok sorrendjét géporientáltról gondolkodást igénylőre változtassuk. Ezért teljesen helytelen olyan interfész dokumentációs rendszerek használatát GPU programozásnak tekinteni, mint a JavaDoc, doxygen, DOC++, autoduck, POD.
Egy másik tévhit az, hogy D. E. Knuth a "felülről lefelé irányuló" megközelítést akarta rögzíteni a szoftverrendszerek fejlesztésében. Valójában a felülről lefelé és alulról felfelé irányuló megközelítések kombinálását javasolja, amint az a TeX könyvben található idézetből következik: A program: „ A szerző azonban azt sugallja, hogy a program megértésének legjobb módja az, ha nagyjából követjük a A TeX komponensei, ahogyan az éppen olvasott WEB-leírásban szerepelnek, mivel a jelen sorrend az „alulról felfelé” és a „felülről lefelé” megközelítés előnyeit egyesíti egy kissé bonyolult rendszer megértésének problémájában. »