vineri, 3 august 2012

Counter

Pentru un programator începător, pasul imediat următor după progrămelul "Hello world" e să afişeze acelaşi text de n ori, unde n este introdus manual la execuţia programului.

De menţionat că nici un programator adevărat n-o să-şi pună vreodată problema să afişeze corect textul, adică "Hello, world!" cu virgulă şi semnul exclamării, probabil pentru că doar tradus în română ar suna extrem de misogin să spui "Bună lume!" în faţa unui grup de femei.

Problema care o să bântuiască bântuie toată viaţa nefericitului programator e cum să seteze counter-ul: afişează "Hello world" pentru i de la 1 la n sau pentru i de la 0 la n-1?

Veţi spune că rezultatul e acelaşi, de ce să nu mergem pe prima variantă, care dealtfel pare mult mai simplă?
Ei, bine, aveţi dreptate, exact asta va face şi programatorul, lucru care îl va duce inevitabil spre pierzanie!




Pe de-o parte, dacă nu iniţializezi i-ul cu 1 în cazul în care un "for i=1..n" nu poate fi folosit pentru că n-are break (n.r. frână), orice limbaj de programare ţi-l va seta automat pe 0.
N-aveţi voi idee câte averi s-au pierdut în lumea asta de la o nenorocită de iniţializare a counter-ului!

Pe de altă parte, viaţa asta te forţează să-ţi ieşi din tipare, câteodată chiar ai nevoie de câte un "for i=0..n" sau de vreun "for i=1..n+1", situaţii din care, vă asigur cu mâna pe inimă, nici un programator cu experienţă nu iese basma curată.
Să vă prezint mai jos una dintre aceste situaţii.

Noi stăm la etajul 5 şi azi, când să ieşim spre lift, am dat nas în nas cu doi programatori de la etajul şase, care urcaseră scările pe jos.
S-au oprit deodată şi s-au uitat buimaci la noi, apoi unul la altul până când, într-un final, s-au dumirit.

- Aha, ăsta-i etajul cinci!

Ne-am uitat şi noi unul la altul, am dat amândoi odată dezaprobator din cap şi am tras singura concluzie valabilă:

- Programatori, ce să le faci? Iar au setat counter-ul de la 1 la 6!

Cum să le explici, o dată pentru totdeauna, că parterul trebuie iniţializat cu 0?

Îţi răceşti gura de pomană...
***