Literate programming: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
mNessun oggetto della modifica
m WPCleaner v2.01 - Fixed using Wikipedia:Check Wikipedia (Errori comuni - Template con parametri duplicati)
Riga 24:
 
=== Critica ===
Nel 1986, [[Jon Bentley]] chiese a Knuth di dimostrare il concetto di literate programming scrivendo un programma in WEB. Knuth produsse un lungo listato monolitico di 8 pagine che fu pubblicato insieme a una critica di Douglas McIlroy di Bell Labs. McIlroy ha elogiato la complessità della soluzione Knuth, e la sua scelta di una struttura di dati ( hash trie di Frank M. Liang), ma ha notato che una più pratica, molto più veloce da implementare, debuggare e modificare soluzione del problema richiedeva solo sei righe di script shell riutilizzando utilities [[Unix]] standard. McIlroy ha concluso dicendo:<ref>{{Cita pubblicazione|autore=Jon Bentley|anno=1986|titolo=Programming pearls|volume=29|pp=471-483|url=https://www.cs.tufts.edu/~nr/cs257/archive/don-knuth/pearls-2.pdf|autore2=D. E. Knuth|autore3=M. D. McIlroy|lingua=en}}</ref>
 
{{Citazione|Knuth ci ha mostrato come programmare intellegibilmente, ma non saggiamente. Apprezzo la disciplina. Non apprezzo il risultato. Ha creato una sorta di intricato uovo Faberge di qualità industriale, magnificamente lavorato, rifinito oltre ogni ordinario desiderio, un autentico pezzo da museo.}}
Riga 125:
* Molly è uno strumento LP scritto in [[Perl]], che mira a modernizzare e ridimensionare il literate programming per mezzo di "HTML pieghevole (folding)" e "viste virtuali" sul codice. Utilizza il markup "noweb" per i file di origine literate.<ref>{{Cita web|data=2019-02-13|titolo=A literate programming "weaver" which can run as CGI to produce folding HTML-formatted documentation and runs with "noweb" tools of Norman Ramsey: unixtechie/Literate-Molly|sito=GitHub|lingua=en|accesso=2019-07-30|url=https://github.com/unixtechie/Literate-Molly}}</ref>
* Codnar è uno strumento di literate programming inverso disponibile come [[RubyGems|Ruby Gem]]. Invece di estrarre il codice sorgente leggibile dal compilatore dalle fonti di documentazione, la documentazione literate viene estratta dai normali file di codice sorgente leggibili dalla macchina. Questo consente a questi file di codice sorgente di essere modificati e mantenuti come al solito. L'approccio è simile a quello utilizzato dai più diffusi strumenti di documentazione [[Application programming interface|API]], come [[Javadoc|JavaDoc]]. Tali strumenti, tuttavia, generano documentazione di riferimento API, mentre Codnar genera una narrazione lineare che descrive il codice, simile a quella creata dai classici strumenti LP. Codnar può coesistere con gli strumenti di documentazione API, consentendo sia un manuale di riferimento che una narrazione lineare generabili dallo stesso set di file di codice sorgente.<ref>{{Cita web|autore=Oren Ben-Kiki|data=2019-06-21|sito=GitHub|titolo=Code Narrator: an inverse literate programming tool. - orenbenkiki/codnar|lingua=en|accesso=2019-07-30|url=https://github.com/orenbenkiki/codnar}}</ref>
* L' editor di testo Leo è un outlining editor che supporta opzionalmente i markup noweb e CWEB L'autore di Leo mescola due approcci diversi: in primo luogo, Leo è un outlining editor, cosa che aiuta nella gestione di testi di grandi dimensioni; in secondo luogo, Leo incorpora alcune delle idee del literate programming, che nella sua forma pura (cioè il modo in cui viene utilizzato dallo strumento Web di Knuth o strumenti come "noweb") è possibile solo con un certo grado di inventiva e l'uso dell'editor in un modo non esattamente previsto dal suo autore (in nodi @root modificati). Tuttavia, questa e altre estensioni (nodi @file) rendono la programmazione della struttura e la gestione del testo efficaci e facilmente gestibili ed in qualche modo simili al literate programming.<ref>{{Cita web|url=http://leoeditor.com/|lingua=en|titolo=Leo's Home Page|autore=Edward K. Ream|lingua=en|data=2 settembre 2008|accesso=3 aprile 2015}}</ref>
* Il [[Haskell (linguaggio)|linguaggio di]] programmazione [[Haskell (linguaggio)|Haskell]] ha il supporto nativo per un semi-literate programming. Il compilatore/interprete supporta due estensioni di file: <code>.hs</code> e <code>.lhs</code> ; quest'ultimo sta per literate Haskell.