Noweb — A Simple, Extensible Tool for Literate Programming [Romanian]

Original at: http://www.cs.tufts.edu/~nr/noweb/

Noweb – un simplu și extensibil instrument, pentru programare alfabetică

Programare alfabetică este arta de a pregăti programe pentru cititorii umani.

noweb este creat pentru a satisface nevoileprogramatorilor alfabetici rămânând în acelaşi timp cât mai posibil simplă. Avantajele principale acesteia sunt simplitatea, extensibilitate, şi independenţă de limbă – mai ales acesta e vizibil în comparaţie cu alte programe literare. noweb foloseste 5 secvențe de control pentru a WEB 27. Manualul noweb are numai 4 pagini; o pagină suplimentară explică modul de personalizare a producţiei sale LaTeX. noweb lucrează nemaipomenit, cu orice limbaj de programare, şi susține așa coduri ca TeX, latex, HTML, şi troff. Interfața interioră susține hypertext complet sau de indexare și cere aproximativ 250 de linii. Una simplă poate fi scrisă în 40 de linii de awk. Sacrificiu primar relativ la WEB constă în aceea că acest cod este rareori bine printat. Masterul de distribuţie a Noweb-ului  este aici. 

noweb a fost folosit timp de cincisprezece ani, la multe universităţi şi amplasamente industriale. Acesta a fost folosit pentru zeci de mii de linii de cod în limbi, cum ar fi awk, C, C + +, Haskell, Icon, Modula-3, Obiectiv Caml, PAL, perl, Promela, R, Turing, şi Standard ML.  Eu dispun de o listă de persoane şi proiecte care folosesc noweb.

Articole 

  • Andrew L. Johnson and Brad C. Johnson. Literate programming using noweb. Linux Journal, 64-69, October 1997.
  • Norman Ramsey. Literate programming simplified. IEEE Software, 11(5):97-105, September 1994.

Introduce programare literară cu noweb. Articol din Jurnalul Linux este mult mai elementar; articol în Software-ul explică ceea ce face noweb simplu şi extensibil (şi de ce acestea trăsături sunt importante). 

Articol original Linux Journal este afectat de o gravă eroare de imprimare – un fragment de sintaxa este <<nume>> şi nu <<nume> aşa cum se arată în articol. Această eroare este corectată în versiunea Web.  Articol Software-ului este plin de erori minore, trimiteți mie o carte poştală şi eu voi trimite cu bucurie o retipărire cu erori corectate. 

Acest site este un membru Concursului de Web Programare Alfabetică:

 

Pagină următoare

Următori 5 site-uri 

Site întîmplator 

Lista site-elor 

Ce e nou?

Nimic nu e nou. Eu folosesc Noweb 3 în fiecare zi, dar eu nu sunt destul convins în desemnarea aceastuia față de altele “ alfa-versiuni'' până când cineva are timp să termine de scris ghidul pentru hackeri. Şi în mod ideal, Noweb 3 trebuie transportat la Lua, versiunea 5.1. Nouveniţii ar trebui să ştie că versiunile numerotate 2.x sunt mature şi ar putea fi preferate și pentru versiunea 3. Așa din 6 septembrie 2010, versiunea curentă susținută este versiunea 2.11b.

WWW resurse

Detalii şi exemple sunt disponibile prin intermediul WWW: 

• Noweb  întrebări puse frecvent . 
• Documentaţia de utilizare se prezintă sub forma de pagini Unix, care sunt disponibile online. 
• Ghidul One-Page Guide to Using Noweb with LaTeX  dacă nu vă place de citit documentaţie, sau dacă aveţi probleme cu ținerea aminte de ceea ce aţi citit. 
• Exemple de programe prestate în HTML, inclusiv link-uri create în mod automat de la sursa noweb. În majoritate ei au avut fragmente documentaţiei lor în mod automat convertit din latex. 
• Mulţi oameni amabili au trimis cărţi poştale, care au fost online vizibil din aprilie anului 1998. 
• Una dintre cele mai puternice trasături a  noweb-ului constă în aceea că puteţi începe prin utilizarea unui sistem simplu, apoi să adaugați treptat extensii şi particularizări după cum este necesar, toate chiar fără recompilare. Cartea Noweb Hacker's Guide explică modul în care suficient funcţioneazănoweb și detalizează cum de adaugat noi caracteristici. (O versiune HTML a ghidului este disponibilă, dar pentru că este convertită automat din sursa de latex, nu are autoritate). Strategia de extindere este schiţată  aici . 
• Extensii noweb personalizate includ capacitatea de a analiza şi manipula fişiere nuweb, şi capacitatea de a converti LaTeX în HTML. Acest program nuweb format cu instrumente noweb arată ambele. 
• O pagină separată discută capacitatea noweb-ului de indexare. Mai multe idiosincrazități apar deoarece noweb este independent de limbaj. 
• Lyx document processor, care oferă o interfaţă WYSIWYG, dar este compatibil cu LaTeX, a susținut Noweb din luna martie, 1999. 
• Începând cu versiunea 2.8A,distribuţia a inclus noweb-mode lui Thorsten Ohl pentru Emacs. Joe Kelsey a scris o clasă perspectivă pentru emacs mmm-mode, dar aceasta nu funcţionează încă destul de bine. 
• Felix Gaertner a creat Pretzel, un prettyprinter generator care funcţionează cu noweb. 
• Sven Kloppenburg, un student al lui Felix, a creat Noerr, care rescrie mesaje de eroare, astfel încât implementarea limbei fără linie # poate lucra destul de bine cu noweb. 
• Dan Schmidt a creat dpp and fu, care ajuta la aratare ieşirii noweb ca CWEB, precum şi un mod de contur pentru GNU Emacs. 
• Unele site-uri FTP pentru noweb sunt enumerate mai jos. 
• Aici sunt planurile mele pe termen scurt şi lista de ce eu doresc pentru îmbunătăţirea noweb. Puteți sa vă uitați, de asemenea, la planurile pentru  Noweb 3, sau poteți sa vă uitați la un  document mai vechi despre Noweb 3.
 • Rob Partington a făcut o muncă de susținere a referinţelor încrucişate în câmpurile TeX. 
• Drepturile de autor liberal Noweb sunt  date mai jos.

Programare alfabetică și printare

Cum iniţial a conceput Don Knuth, programare alfabetică implică codul printat: afişarea, folosind mai multe fonturi, simboluri matematice, şi cu indentare stilizată şi sfârşituri de linii. Cred că acest tratament a fost inspirat de publicarea sintaxeiAlgol 60. Din trei motive, cu toate acestea, eu rareori utilizez printare: 

• Cele mai multe dintre programele mele sunt editate, cel puţin la fel de des ca acestea sunt citite, şi mult distrage atentia comutare între între simplul ASCII pentru fonturi editare şi născocite şi simboluri pentru lectură. Este mult mai bine pentru instrumentul de programare alfabetică de a afişa codul exact cum este scris. (Eu cred în distincţii tipografice pentru fragmente de nume). 
• Pintare este neapărat o funcţie dependentă de limbă, şi nu am timp pentru a crea destulă prontare pentru fiecare dintre mai multe limbi ce eu folosesc. 
• Experienta mea cu printare constă în aceea că este o tendință spre distragerea atenţiei oamenilor de la adevărata muncă de programare şi de scris. Oamenii petrec o mulţime de timp printînd, încercînd în rezultat să  obţină ceva drept.

Văd un loc pentru printare -aceasta poate fi de ajutor pentru programele de arhivare care sunt citite mult mai des decât sunt editate, de exemplu, în cazul în care apar în cărţile publicate sau reviste.  noweb sprijină printare prin utilizarea de filtrelor de printare, și există mai multe astfel de filtre in directorul noweb, inclusiv unul care am scris, astfel încât acesta a anulat toate zvonurile că niciodată nu voi folosi un printare.

Contacte

Îmi place să auscult  utilizatorii noweb-ului, dacă s-au bucurat de noweb, de ce nu trimiteți o carte poştală locală pentru colecţia mea?  Adresa mea este: 
  Norman Ramsey
  Department of Computer Science, Halligan Hall
  161 College Ave
  Tufts University
  Medford, MA 02155
               USA

Puteţi trimite, de asemenea, la poştă electronică la nr@cs.tufts.edu.

Unde puteți obţine noweb 

Pentru utilizatorii de Linux, aș recomanda să obţineţi pachetul Debian. Pentru alţii, este disponibil un fişier gzipped tar file. De asemenea, am încercat să fac un Red Hat RPM; Aş aprecia comentariiîn cazul în care acesta funcţionează. 

(Notați  la cronometre vechi:. Noweb este încă reflectat pe CTAN, dar de când am început distribuirea noweb-lui la începutul anilor 1990, ideile noastre despre cum să realizăm lucrurile s-au schimbat, s-au și ideile noastre de ceea ce este mare. În zilele rele vechi, CTAN a creat ZIP fişiere tar din zbor pentru a economisi spaţiu pe disc. Având în vedere că prăbuşirea acestui serviciu a avut loc circa 2003, nu mai recomandăm obţinerea noweb-lui din CTAN) Sunt disponibile de asemenea coduri binare precompilate pentru Debian 1.3.x şi NetBSD (g). 

Mulţumiri

• Mulțumesc lui Preston Briggs pentru instrumentul Aho-Corasick, şi pentru consulații. 
• Mulțumesc lui Dave Hanson pentru cpif. 
• Mulțumesc lui Dave Dragostea pentru magicul LaTeX. 
• Mulțumesc lui Joseph Reynolds prodding pentru mine să se stabilească [[...]]. 
• Mulțumesc lui Aharon Robbins pentru că a făcut munca cu troff (în sfârşit!). 
• Mulțumesc lui Bill Trost pentru bazele de date HTML. 
• Mulțumesc lui Wittenberg Lee Miller şi Phil pentru coduri binare DOS. 
• Mulțumesc lui Lee Wittenberg şi Grigorie Carl pentru nucleul Ghidului de o Pagină. 
• Mulțumesc lui Garret Prestwood pentru conducta iniţială şi interfeţele tampon folosite în versiunea 3.

Drepturi de autor 

Drepturile de autor Noweb aparțin  lui Norman Ramsey 1989-2011. Toate drepturile sunt rezervate. 
Puteţi folosi şi distribui noweb pentru orice scop, gratis. Puteţi modifica noweb şi de a crea opere derivate, cu condiţia să păstrați drepturile de autor, dar rezultatul nu poate fi numit noweb fără acordul meu scris. Puteţi face tot ce vă place cu programe create cu noweb. S-ar putea vinde chiar noweb sine, de exemplu, ca parte a unei distribuţii CD-ROM-ului, cu condiţia ca ceea ce se vinde este adevărat, complet, şi noweb e nemodificat. 


Fără dorinţa de a fi elitar, lucru care va preveni de programare alfabetică să devină o metodă de masă este nevoia de gândire şi disciplină. Mainstream-ul este stabilit de către persoanele care doresc rezultate rapide în timp ce utilizaţi aproximativ aceleaşi metode pe care oricine altcineva pare a fi utilizat, precum şi de programări culte care niciodată nu au de gând să aibă acest tip de recurs. Acest lucru nu a mers departe de utilitatea sa ca o abordare. –  Patrick TJ-McPhee 

ok ok