Programarea literara este arta de a pregati programe pentru cititorii umani.

Norman Ramsey, pe pagina de start noweb.

Programarea alfabetizata (LP) incearca sa abordeze o problema comuna cu sistemele software: citind codul se poate descoperi cum se face un lucru, dar nu si de ce se face asa. Fiecare program are o teorie a functionarii incorporata in logica sa, dar aceasta este adesea ascunsa. Comentariile din cod si documentatia API-urilor sunt utile, dar insuficiente pentru aceasta sarcina. Adesea, sistemele de generare a documentatiei furnizate cu un limbaj de programare nu ofera o modalitate de contextualizare a codului pe care il descriu in cadrul sistemului mai mare. Pentru programele care se bazeaza pe un fundal matematic mai avansat, este, de asemenea, adesea dificil sa incorporezi ecuatii sau alte marcaje in documentatie.

Instrumentele LP existente, cum ar fi WEB, noweb si Org Babel, incearca sa abordeze acest lucru adoptand urmatoarea abordare:

  1. Incorporati codul sursa al programului intr-un document de proza care explica gandirea autorului.
  2. Furnizati mecanisme pentru abstractizarea codului in bucati abstracte, care pot fi recombinate in ordine diferite decat sunt definite si referite prin document.
  3. Procesati documentul combinat intr-unul din cele doua moduri: fie incurcati codul sursa din document intr-o versiune compatibila cu computerul, fie teseti documentul intr-un formular gata de citire.

In general, aceasta este o imbunatatire a documentatiei in linie si poate oferi cititorului mult mai mult context decat abordarile de masa. Din pacate, sufera si unele dezavantaje grave:

  • Codul sursa este incorporat intr-un document, facandu-l inaccesibil instrumentelor specifice limbajului, cum ar fi editori, compilatoare si instrumente de analiza statica. Pentru a le utiliza, codul trebuie mai intai incurcat.
  • In mod similar, pentru a-ti construi programul alfabetizat, utilizatorul final trebuie sa aiba instalate instrumentele adecvate in plus fata de instrumentele lingvistice necesare pentru a compila sursa.
  • Majoritatea programatorilor au petrecut ani de zile lucrand direct in reprezentarea sursa prietenoasa cu masinile, mai degraba decat intr-un stil alfabetizat, introducand o bariera in calea intrarii in scrierea de programe alfabetizate. Portarea unui proiect existent catre o reprezentare alfabetizata este netiviala.

verso | recto adopta o abordare diferita. Acesta considera fisierul sursa ca un cetatean de prima clasa la care se face referire prin documentatie. Mai degraba decat incorporarea codului sursa in documente sau documente in codul sursa, adnotarile usoare sunt folosite pentru a marca sectiuni de interes din cod, care pot fi usor mentionate prin documente in proza. Nu exista un pas de incurcare, iar fisierele sursa raman intrari pe deplin valabile pentru compilatoare, editoare si alte instrumente. Nu este nevoie sa traduceti numerele de linie sau formatarea intre sursele alfabetizate si ceea ce vede compilatorul.

Ceea ce sistemele LP traditionale sunt corecte

O gramada de lucruri! Iata cateva idei pe care sistemele traditionale au initiat-o si verso | recto le imprumuta:

  • Sprijiniti o relatie de la multi la multi intre documentele LP si fisierele sursa.
    • In noweb, un document poate contine mai multe bucati radacina care pot fi trimise fiecare catre fisiere sursa diferite si mai multe documente LP pot fi introduse simultan in instrumentul de incurcare (acestea sunt concatenate).
  • Instrumentele mai moderne accepta mai multe limbaje de programare si markup.
  • noweb ofera o arhitectura canalizata, care faciliteaza inserarea etapelor de procesare pentru a satisface nevoile unui utilizator.
  • Acestea genereaza indici si referinte incrucisate in cadrul rezultatului citibil de catre om.

Folosind verso | recto

verso | recto este condus de adnotari din fisierele dvs. sursa, definind regiunile la care pot fi referite alte documente.

Adnotarea unui fisier

Adnotarile sunt destul de simple. Pentru a marca o regiune de cod pentru referinta, pur si simplu adaugati o pereche de comentarii in jurul regiunii cu simbolurile @ <si> @, urmate de un ID unic.

el mejor video porno videos porno corridas
porno abuela sex porne
porno incesto asiatico videosdeincesto
videos porno corridas madura española con joven
tios desnudos porno agresivo
muy jovencitas porno hentai scat
madres viciosas colegialas cachondas
lesbianas maduras españolas penes de abuelos
casadas cachondas creampie abuelas
travestis meando española folla
comiendo polla escuchar relatos porno
sexo playa nudista corrida boca
chochitos jovencitos corridas internas peludas
porno forzadas como folla mi vecina
pilladas desnudas pornotrans
coñitos sexo con viejas
forzadas a follar videos porno casero españa
cine xxx miakalifa
incesto italiano porno porno gay chino
cerdas com gratis porno viola a su madre

ID-ul poate fi orice sir de caractere alfanumerice si caracterele /, _ sau -, desi ar trebui sa fie atat unic in proiectul dvs., cat si valid in fisierul sursa pe care il adnotati. Caracterul de punct (.) Este rezervat, deoarece este utilizat pentru referinte. Alte caractere pot fi adaugate in viitor. Daca un personaj pe care doriti sa il utilizati nu este listat aici, va rugam sa depuneti o problema pe GitHub (sau mai bine, trimiteti un PR)!

Referinta adnotarilor

Pentru a face referire la o adnotare intr-un alt fisier, adaugati o linie care contine simbolul @@ urmata de ID-ul adnotarii (de ex. @@ 12345). Cand fisierul este tesut folosind comanda recto (vezi sectiunea urmatoare), linia va fi inlocuita cu continutul adnotarii. Puteti adauga orice marcaj care va place in jurul liniei pentru a oferi formatare.

Uneori este, de asemenea, de dorit sa faceti referire la metadate despre o adnotare. In prezent, verso | recto accepta urmatorii operatori de inserare a metadatelor:

  1. Nume de fisier. @? id.file insereaza numele fisierului din care a fost extrasa adnotarea.
  2. Numarul de linie. @? id.line introduce numarul de linie pe care a inceput adnotarea.
  3. Numar coloana. @? id.col introduce numarul coloanei la care a inceput adnotarea. (In prezent, aceasta valoare este intotdeauna 0, deoarece adnotarile incep intotdeauna la inceputul unei linii.)
  4. Locatie rapida. @? id.loc introduce numele fisierului, numarul liniei de pornire si numarul coloanei pentru adnotare in fisierul format (linie: col). Acest lucru este util daca doriti doar sa va referiti rapid la metadate fara a va intoarce cu formatarea.

Teserea unui document pentru consumul uman

Comanda verso va citi toate adnotarile din fisierele specificate pe linia de comanda, va extrage adnotarile si va afisa rezultatul in stdout. La randul sau, comanda recto isi va citi adnotarile din stdin. Acest lucru face ca cele doua programe sa fie usor de utilizat impreuna prin conducte:

verso main.rs lib.rs | recto build chap1.tex chap2.tex blog / home.md ^ ^ ^ ^ ^ ^ + ——- + | + ——— + ——— + | | | | | | + — Fisiere sursa + — Director iesire + — Fisiere proza

Fiecare dintre fisierele tesute este scris in directorul de iesire, furnizat ca primul argument, in aceeasi locatie relativa ca pe linia de comanda. De exemplu, fisierul blog / home.md de mai sus va fi scris in build / blog / home.md atunci cand este tesut.

Retineti ca, desi cele doua programe par sa ruleze in paralel, verso nu va trimite intrarea catre recto pana cand nu va extrage adnotari cu succes din toate fisierele sursa care i-au fost date si ca recto nu va incepe sa teasa fisiere impreuna pana cand nu primeste acele adnotari. . Din acest motiv, daca verso-ul esueaza, recto-ul va esua si el.

Numele

Recto si verso sunt, respectiv, textul scris sau tiparit pe partea „dreapta” sau „frontala” si pe partea „din spate” a unei foi de hartie intr-un articol legat, cum ar fi un codex, o carte, o foaie larga sau o brosura.

Wikipedia – Recto si Verso

(Retineti ca, in mod convenabil, programul verso merge in stanga tevii in timp ce recto merge in dreapta.)

Colaboratori

  • @nickpascucci
  • @karlicoss

Munca viitoare

  • Adaugati suport pentru a permite adnotari suprapuse.
  • Adaugati suport pentru formatarea personalizata a proprietatilor de adnotare in iesirea tesuta.
  • Paralelizati procesarea fisierelor in Verso si atat citirea din stdin, cat si citirea fisierelor in Recto.
  • Adaugati optiunea –annotations-from pentru a specifica o alta sursa decat stdin pentru adnotari.