Am preluat odată un programel de la un tînăr programator, proaspăt livrat de sistemul de învățămînt de specialitate Timișorean (UTT). Programul era mic și în general funcționa, cu excepția situațiilor sau momentelor cînd nu funcționa. Asta nu e grav. Ce era în cod e destul de greu de descris. Asta e grav.
Toate variabilele erau globale (asta e doar una din probleme dar numai de ea mă leg acum). Toate.
Ah, îmi zic eu foarte sigur pe mine, problema lui e ca nu știe cum se declară în limbajul ăsta o variabilă locală…
Eram naiv. Dacă mă uitam mai bine înțelegeam mai mult. Nu numai că variabilele erau globale dar funcțiile nu aveau parametri și nici nu erau funcții decît foarte rar ci proceduri. Urma să înțeleg mai tîrziu de unde izvora eleganța ieșită din comun a interfețelor. Adevărul era hidos și adînc înfipt în cod dar încă nu-l înțelesesem. Procedurile nu aveau parametri pentru că ele modificau variabilele globale, direct. Toate. Așa că nu aveau nevoie. Și de ce ar fi fost altfel?…
Îl abordez și îl rog sa ajusteze puțin codul:
– Te rog, fă cumva să nu mai ai atîtea variabile globale. Nu se prea poate urmări ce-i acolo.
– Dar de ce să nu fie globale? E mai rapid dacă sînt locale?
M-am bîlbîit depășit de situație. Cum puteam să-i explic destul de scurt și elocvent cum e cu vizibilitatea minimă, cu încapsularea, cu afectarea „mediului” doar prin interfață?
M-am dat bătut. Am răspuns cam pierdut „Nu, nu e mai rapid, din contră”. Eram învins. Ce o fi înțeles bietul băiat din asta?…
Credeți că e vina lui? Ar trebui să poți absolvi o facultate cu profil legat de programare sau calculatoare și să poți pune întrebarea asta?
Ce… se mai învață acolo? Un curs despre realitate nu există?
As putea sa impartasesc o experienta asemanatoare cu cea descrisa in postul tau, dar la nivelul invatamantului liceal. Fiind elev la un liceu de matematica-informatica si un amator in ale programarii de ceva timp, am fost foarte entuziasmat cand profesoara noastra de informatica ne-a informat ca in acest semestru vom invata despre functii. Am fost entuziasmat pana in momentul in care profesoara a predat lectia despre parametrii unei functii. Totusi cand trebuia sa folosim functiile in cadrul unui program, ea ne punea sa folosim variabilele globale, functiile neavand parametrii si intorcand nimic, facandu-si treaba direct pe variabilele acelea globale. Nu sunt incantat de acestea, dar incerc sa ma abtin si sa nu ii spun nimic profesoarei, care cu siguranta asa a invatat si ea ca se face.
Eu cred ca dupa gradinita, cand esti invatat lucruri concrete, stanga-dreapta, sus-jos, spate-fata, nimeni nu te mai invata nikmic, din cauza ca trebuie sa predea TEORIA din materie.
@Erik: poate tu ai fost la o gradinita particulara unde ai invatat lucruri concrete in engleza si pe calculator :-p
in compania multinationala la care lucrez, si care administreaza investitii de 20 miliarde de dolari, exista un departament de IT in care lucreaza fo 80 de oameni
cei care ii conduc destinele au creeat o baza de date cu aprox 100 de tabele fara nici un id, fara nici un foreign key. tabelele sint join dupa descrieri (stringuri). alta treaba e ca la un moment dat nu shtiau ca poti sa foloseshti acelasi nume de coloana in doua tabele diferite asa ca au inceput sa denumeasca acelasi lucru cu mai multe sinonime de genul sec_id, secid, code etc; sortarile se fac dupa coloane de tipul short; sumele se salveaza in coloane float
oamenii ashtia sint parte din grupul numit "gurus" in cadrul companiei; am renuntat sa mai sper
Nu raspund la provocari :)))