Noweb – un instrument simplu, extensibil pentru programarea literatelor

Sursă originală – https://www.cs.tufts.edu/~nr/noweb/

Programarea Literate este arta pregătirii programelor pentru cititorii umani.

noweb este conceput pentru a satisface nevoile programatorilor grațioși, rămânând însă cât mai simplu posibil. Principalele sale avantaje sunt simplitatea, extensibilitatea și independența limbajului – deosebit de vizibile în comparație cu alte instrumente de programare în format literat. noweb folosește 5 secvențe de control pentru WEB-ul 27. Manualul Noweb este de numai 4 pagini; o pagină suplimentară explică cum să personalizați ieșirea LaTeX. noweb funcționează “ din cutie ” cu orice limbaj de programare și acceptă capetele back-end-ului TeX, latex, HTML și troff. Un capăt spate pentru a susține hipertextul complet sau indexarea durează aproximativ 250 de linii; una mai simplă poate fi scrisă în 40 de linii de awk. Sacrificiul primar față de WEB este că acest cod este rareori destul de impresionat. Noweb este distribuit de la CTAN.

noweb a fost folosit timp de cincisprezece ani la multe universități și site-uri industriale. Acesta a fost folosit pentru zeci de mii de linii de cod în limbi precum awk, C, C ++, Haskell, Icon, Modula 3, Obiective Caml, PAL, Perl, Promela, R, Turing și Standard ML. Mențin o listă de persoane și proiecte care utilizează noweb .

Articolele

să introduci programări literate cu noweb . Articolul din revista Linux este mai elementar; articol în Software – ul explică ceea ce face noweb simplu și extensibil (și de ce acestea sunt importante).

Originalul articolului din jurnalele Linux este marcat de o eroare gravă de tipărire – sintaxa de bucăți este <<name>> și nu <<name> așa cum se arată în articol. Această eroare este corectată în versiunea Web. Articolul din Software este plin de erori minore; trimite-mi o carte poștală și vă voi trimite cu bucurie o reprint cu erorile corectate.

Acest site este membru al inelului de programare Literate Web :

AnteriorUrmător →Următoarele 5 site-uriSite-ul alesLista site-urilor

Ce mai e nou?

În 2012, am învățat că nu mai există niciun mod Emacs care să suporte Noweb și chiar să funcționeze cu Emacs 23 sau Emacs 24. Cel mai apropiat este modul lui Dave Love, dar suferă de unele probleme grave legate de “bufferele indirecte”. Dave însuși pare să fi dispărut din rețea.

În caz contrar, nimic nu este nou. Eu folosesc Noweb 3 în fiecare zi, dar cred că rațiunea pentru Noweb 3 a venit și a plecat și mă îndoiesc că o voi lua vreodată din stadiul “alpha” sau o voi transfera la Lua versiunea 5.x, merită.

Cei nou-veniți ar trebui să știe că versiunile numerotate 2.x sunt mature și pot fi preferate față de versiunea 3. Începând cu 21 iulie 2011, versiunea actuală acceptată este versiunea 2.11b.

Resursele WWW

Detalii și exemple sunt disponibile prin WWW:

  • Noweb Întrebări frecvente .
  • Documentația de utilizator ia forma de Unix om pagini , care sunt on – line.
  • One-pagină Ghid de utilizare a Noweb cu LaTeX este locul pentru a merge , dacă nu vă place documentația de lectură, sau dacă aveți probleme amintindu ce ai citit.
  • Exemplu de programe redate în HTML, inclusiv legături hipertext create automat din sursa noweb . Majoritatea au avut bucăți de documentație convertite automat din latex.
  • Mulți oameni au trimis cărți poștale , care au fost vizionate online din aprilie 1998.
  • Unul dintre cele mai mari avantaje ale lui Noweb este că puteți începe folosind un sistem de vanilie, apoi adăugați treptat extensii și personalizări după cum este necesar, toate fără a fi recompilate. Ghidul Noweb hacker explică modul în care noweb funcționează suficient de detaliat pentru a adauga noi caracteristici. (O versiune HTML a ghidului este disponibilă, dar deoarece este convertită automat din sursa de latex, nu este autoritară.) Strategia de extensibilitate este schițată aici .
  • extensiile customizate ale lui noweb includ abilitatea de a parsa și manipula fișierele nuweb și capacitatea de a converti LaTeX în HTML. Acest program nuweb formatat cu ajutorul instrumentelor noweb dezvăluie ambele.
  • O pagină separată discută despre noweb e indexare capacitate. Există mai multe idiosincrazii, pentru că noweb este independent de limbă.
  • Procesorul de documente Lyx , care oferă o interfață WYSIWYG , dar este compatibil cu LaTeX, a susținut Noweb din martie 1999.
  • De la versiunea 2.8a, distribuția a inclus modelul Thomsten Ohl noweb-mode pentru Emacs. Joe Kelsey a scris o clasă promitatoare pentru emacs mmm-mode, dar nu funcționează încă din cutie încă.
  • Felix Gaertner a construit Pretzel , un generator destul de amplu care funcționează cu noweb .
  • Sven Kloppenburg, student al lui Felix, a construit Noerr , care rescrie mesajele de eroare, astfel încât implementările limbajului fără linie să poată funcționa bine cu noweb.
  • Dan Schmidt a construit dpp și fu , ceea ce face ca ieșirea noweb să arate ca și CWEB, precum și un mod de a schița conturul emacs-urilor GNU.
  • Unele site-uri ftp pentru noweb sunt listate mai jos .
  • Aici sunt planurile mele pe termen scurt și lista de dorințe pentru îmbunătățiri la noweb . De asemenea, puteți să vă uitați la planurile pentru Noweb 3 sau puteți să vă uitați la o hârtie albă mai veche despre Noweb 3 .
  • Rob Partington a făcut niște lucrări de susținere a referințelor încrucișate în TeX simplu .
  • Dreptul de autor liberal al lui Noweb este prezentat mai jos .

Programare Literate și impresionare

Așa cum a fost inițial conceput de Don Knuth, programarea în litere implică un cod de tipărit : afișarea acestuia folosind mai multe fonturi, simboluri matematice și cu indentări stilizate și pauze de linie. Cred că acest tratament a fost inspirat de “sintaxa de publicare” a lui Algol 60. Din trei motive, cu toate acestea, eu rareori folosesc o mostră de relief:

  • Majoritatea programelor mele sunt editate cel puțin de câte ori sunt citite și este distractiv să trebuiască să comutați între ASCII simplu pentru editare și fonturi fantezii și simboluri pentru citire. Este mult mai bine pentru instrumentul de programare alfabetică să afișeze codul exact așa cum este scris. (Cred în distincție tipografică pentru numele bucăților.)
  • Prettyprinting este în mod necesar o funcție dependentă de limbă și nu am timp să creez imprimante drăguțe pentru fiecare din multele limbi pe care le folosesc.
  • Experiența mea cu etichetări este că tinde să distragă oamenii de la munca reală de programare și scriere. Oamenii petrec o mulțime de timp tinkering cu prettyprinters, încercând să obțineți ieșire doar dreptul.

Văd un loc pentru dactilografiere – tipărirea poate fi utilă pentru programele de arhivă care sunt citite mult mai des decât sunt editate, de exemplu, dacă apar în cărți sau jurnale publicate. noweb sprijină prettyprinting prin utilizarea filtrelor “ prettyprinting, „“ și există mai multe astfel de filtre în noweb e contrib director, inclusiv unul care am scris, așa că acest lucru ar fi mai bine caseze toate zvonurile pe care nu le voi folosi un prettyprinter.

Intră în contact

Îmi place să aud de la utilizatorii noweb ; dacă ați bucurat de noweb , de ce nu – mi trimite o carte poștală locală pentru colecția mea ? Adresa mea este:  Norman Ramsey 
  Departamentul de Informatică, Halligan Hall 
  161 Colegiul Ave 
  Tufts University 
  Medford, MA 02155 
               SUADe asemenea, puteți trimite poștă electronică la nr@cs.tufts.edu .

În cazul în care pentru a obține noweb

Pentru utilizatorii de Linux, vă recomandăm să primiți pachetul Debian . Pentru alții, încercați CTAN . Am încercat, de asemenea, să fac un RPM Red Hat ; Aș aprecia să aud dacă funcționează.

(Notă pentru cei vechi: noweb este încă oglindită pe CTAN, dar de când am început să distribuim acum, la începutul anilor 1990, ideile noastre despre cum să schimbăm lucrurile – ca și ideile noastre despre ceea ce este mare – Încă de la prăbușirea acestui serviciu în jurul anului 2003, nu mai recomand să primesc noweb de la CTAN.) Binarele precompilabilepentru Debian și NetBSD 1.3.x (g) sunt disponibile.

Jim Pettigrew a scris instrucțiuni de instalare pentru Windows 7 (pe partea de sus a mingw).

Recunoasteri

  • Mulțumită lui Preston Briggs pentru recunoașterea Aho-Corasick și pentru discuții utile.
  • Mulțumită lui Dave Hanson pentru cpif.
  • Mulțumită lui Dave Love pentru vrăjitoria lui LaTeX.
  • Mulțumită lui Joseph Reynolds pentru că mi-a cerut să rezolv [[...]].
  • Mulțumită lui Aharon Robbins pentru că a lucrat cu troff (în sfârșit!).
  • Mulțumită lui Bill Trost pentru capătul original original HTML.
  • Mulțumită lui Lee Wittenberg și lui Phil Miller pentru binarele DOS.
  • Mulțumită lui Lee Wittenberg și lui Carl Gregory pentru nucleul Ghidului One-Page .
  • Datorită Garret Prestwood pentru interfața inițială a conductelor și a tampoanelor utilizate în versiunea 3.

Drepturi de autor

Noweb este copyright 1989-2011 de Norman Ramsey . Toate drepturile rezervate.

Aveți dreptul să utilizați și să distribuiți noweb în orice scop, gratuit. Aveți dreptul să modificați noweb și de a crea lucrări derivate, cu condiția să păstreze notificarea privind drepturile de autor, dar rezultatul nu poate fi numit noweb fără acordul meu scris. Puteți face orice doriți cu programe create cu noweb . Puteți chiar vinde chiar și noweb , de exemplu, ca parte a unei distribuții CD-ROM, cu condiția ca ceea ce vindeți să fie adevăratul, complet și nemodificat noweb .


Fără să fie elitist, lucrul care va împiedica programarea în cunoștință de cauză să devină o metodă de bază este că ea necesită gândire și disciplină. Traficul principal este stabilit de oameni care doresc rezultate rapide în timp ce folosesc aproape aceleași metode pe care toți ceilalți le folosesc, iar programarea în cunoștință de cauză nu va avea niciodată acest tip de recurs. Acest lucru nu se îndepărtează de utilitatea sa ca abordare.                         -Patrick TJ McPhee