Programare competenta

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 11 iulie 2015; verificările necesită 17 modificări .

Programarea alfabetizată (GP; English  Literate Programming ) este un concept, metodologie de programare și documentare, în care programul constă din proză în limbaj natural intercalate cu substituții macro și cod în limbaje de programare [1] . Termenul și conceptul însuși au fost propuse de Donald Knuth în 1981, în timpul dezvoltării unui sistem de layout computerizat Τ Ε Χ .

Programarea alfabetizată este ca explicațiile din prelegerile de programare folosind expresii în „ pseudocod ” în limbaj natural. Ele aduc claritate codului complex și ascund multe alte abstracții imbricate și cod într-un limbaj de programare formal sub o singură frază.

GP este, într-un sens, „programare în pseudocod” cu fraze arbitrare, care sunt apoi extinse ca macrocomenzi folosind un utilitar dintr-un fișier sursă care include atât explicații textuale documentate ale conceptelor, codul în sine și pseudocodul.

Esența abordării

Cu alte cuvinte, programul este construit nu ca o ierarhie ascendentă sau descendentă, ci ca o „rețea interdependentă de concepte” (de unde și numele primului sistem GP - „Web”) și este creat ca un „flux de gândire” care trece prin această rețea într-un mod coerent, logic, care în exterior face ca descrierea să pară un eseu literar. Ordinea prezentării se dovedește a fi independentă de cerințele traducătorului de limbă.

Să schimbăm prioritățile tradiționale în crearea programelor: în loc să ne gândim la sarcina noastră ca la crearea unor instrucțiuni „Ce să facem?” pentru computer, ne vom concentra pe explicarea altor oameni a descrierilor viziunii noastre despre ceea ce ar trebui să facă computerul sub controlul programului.

Donald Knuth , http://community.livejournal.com/ru_perl/249441.html

Acceptare

Sistemul GP pe care Knuth l-a propus ca alternativă la „ programarea structurată ” din anii 1970, în ciuda recenziilor favorabile, nu a fost adoptat pe scară largă din cauza lipsei de suport pentru instrumente și a integrării acestora [2] .

O altă problemă a fost concentrarea GPU-ului pe procesarea în loturi , în timp ce sistemele de programare erau din ce în ce mai concentrate pe instrumentele WYSIWYG [2] .

În plus, răspândirea HP a fost împiedicată de concepția greșită că „programele alfabetizate” ar trebui să fie monolitice și că HP este opusul hipertextului [2] .

Mulți oameni cred că GPU-ul este doar un sistem de documentare sau un sistem de formatare pentru comentarii obișnuite. De fapt, un program cu comentarii puține sau fără comentarii poate fi scris folosind abordarea GP, la fel cum notele detaliate prin ele însele nu creează o abordare GP.

Cea mai frecventă neînțelegere se referă la rolul macrosistemului, care vă permite să construiți sisteme arbitrare de abstracțiuni peste abstracții și la schimbarea ordinii pieselor de la orientate pe mașină la cea care necesită gândire. Astfel, este absolut greșit să luăm în considerare utilizarea sistemelor de documentare a interfeței precum JavaDoc, doxygen, DOC++, autoduck, POD ca programare GPU.

O altă concepție greșită este că D. E. Knuth a vrut să repare abordarea „de sus în jos” în dezvoltarea sistemelor software. De fapt, el propune să combine abordările de sus în jos și de jos în sus, după cum reiese dintr-un citat din cartea TeX: The program: „ Dar autorul sugerează că cel mai bun mod de a înțelege acest program este să urmezi aproape ordinea Componentele TeX așa cum apar în descrierea WEB pe care o citiți acum, deoarece comanda actuală este menită să combine avantajele abordărilor „de jos în sus” și „de sus în jos” a problemei înțelegerii unui sistem oarecum complicat. »

Instrumente existente

Note

  1. Uneori metodologia este numită figurativ „programare literară”
  2. 1 2 3 Sametinger, 1997 , 18. Programare alfabetizată.

Literatură

Link -uri