Friday, November 10, 2017

Less GO TO programming

Nu a părut deloc ciudat când Clark R LAWRENCE a publicat în Datamation, vol.19, nr. 12, 1973, pg. 22-23, articolul A linguistic Contribution of GOTO-less Programming care venea cu detalii fundamentale bine argumentate despre complexitatea indusă de instrucțiunea GOTO și necesitatea de a scăpa de ea.
Pe la mijlocul anilor '70 programatorii noștri au simțit diferențele între programe văzând că pentru o aceeași problemă există posibilitatea de a scrie programe ceva mai simple sau de a scrie programe cu mult mai complicate. Ei au văzut că diferențe o face în primul rând frecvența cu care se utilizează instrucțiunea GO TO. Limbajul FORTRAN este un limbaj în care instrucțiunea GO TO este la ea acasă pentru că:
- eticheta instrucțiunii este regină;
- există instrucțiuni cu etichete încorporate;
- secvențele omogene se delimitează prin etichete;
- chestia cu scărpinatul în ureche ducând mâna pe la ceafă de la FORTRAN se trage.
În limbajul FORTRAN o etchetă este un număr de la 1 la 99999 care se scria pe primele 5 coloane ale foii de programare. Era rezonabil ca etichetele să nu fie definite în progresie aritmetică cu rație 1 pentru a efectua la o adică inserări de instrucțiuni etichetate menținând regula ca șirul de etichete să fie strict monoton crescător în vederea urmăririi cu ușurință a instrucțiunilor la depanare.
În programele FORTRAN apăreau nenumărate instrucțiuni GO TO etichetă.
Exista instrucțiunea GO TO calculat de forma:
GO TO (e1, e2, e3,....., en), I
unde e1, e2, e3,....., en sunt etichete, iar I este o variabilă de control cu valori de la 1 la n și care indică poziția etichetei spre care se efectuează saltul. În cazul în care I are o altă valoare în afara mulțimii specificate se trece la execuția instrucțiunii de după GO TO calculat. E un fel de switch mai primitiv din limbajul C++ , dar tot implementarea structurii alternative multiple făcea acest GO TO calculat.
Instrucțiunea IF() din FORTRAN are forma IF(expresie) e1,e2,e3
unde:
e1 este eticheta instrucțiunii care se execută deacă expresia este mai mică decât zero;
e2 este eticheta instrucțiunii care se execută deacă expresia este egală cuzero;
e3 este eticheta instrucțiunii care se execută deacă expresia este mai mare ca zero.
Această instrucțiune venea în plus cu niște instrucțiuni GO TO pentru că fluxul de prelucrare trebuia controlat cu ce se execută după ce se execută secvențele arătate de cele 3 etichete, ceea ce ducea la creșterea complexității programelor.
Și instrucțiunea DO impunea folosirea unei etichete căci chiar în construcție o avea definită, instrucțiunea având forma 
DO  eticheta var_control=val_init, val_finală, rație
unde:
eticheta - marchează ultima instrucțiune a secvenței de repetat;
var_control - variabila de control cu care se gestionează numărul de repetări;
val_init - valoarea de start a variabilei de control;
val_finală - valoarea cea mai mare pe care o are variabila de control;
rație - valoarea cu care crește variabila de control de la o repetare la alta.
Less GO TO programming adicătelea programarea fără salturi condiționate dorită de programatorii noștri cu ardoare în deceniu al VIII-lea al secotului trecut a fost un vis, dar numai de suprafață, căci în intimitatea ei această programare era bântuită de și mai multe salturi necondiționate, salturi care nu se vedeau, ci erau mascate.
Programarea fără GO TO nu este imposibilă doar aparent, căci atât apelurile de subprograme cât și referirea de paragrafe tot la salturi necondiționate duc, iar programatorii care știu ASSEMBLER la nivel de cod mașină știu cum se execută instrucțiunile CALL și RETURN și mai ales ce se ascunde în spatele lor, care salturi condiționale înseamnă în final, lucru văzut chiar din definițiile lor.
Mai pe românește spus, LESS GO TO este o utopie dacă se coboară la nivel de cod mașină.




(11 noiembrie 2017)

No comments:

Post a Comment