21 martie 2008

Programator (I)

Am pus prima oara mana pe un calculator la 10 ani (poate 11, nu mai tine nimeni minte). Am fost fascinat, si acum, dupa 16 ani, sunt la fel de fascinat. Atunci a fost prima oara cand mi-am zis ca vreau sa fiu programator, acum vreau in continuare sa fiu programator. Si totusi nu mai vreau sa fiu programator.

Primul calculator, de atunci, era al meu - cadou de ziua mea. Pana atunci nu mai vazusem decat un calculator industrial, cu benzi si cartele perforate - care ocupa o camera intreaga. In aceeasi zi am scris si primul program - copiat litera cu litera dintr-o carte care a venit la pachet; am scris un program care canta o melodie de cateva note. (Ceata lui Pitigoi...) Imi aduc aminte jocurile de pe HC ( si m-am jucat destul, inca mai am munti de casete acasa) dar cel mai bine imi aduc aminte programele. Am copiat cateva carti de Basic (mergand de la cele simple - "sa invatam sa programam", trecand prin manuale, colectii de jocuri .. ) Copiam programe de la televizor - era o emisiune pe TVR in care cineva chiar dadea jocuri si programe pe care puteai sa le inregistrezi pe caseta. Am avut o carte de programe industriale, din care nu intelegeam nimic, dar pe care le copiam doar ca sa vad rezultatul - calculau rezistentele unor structuri, angrenaje si mecanisme, aveau termeni pe care nu ii intelegeam...

Apoi am descoperit LOGO. (Mai tarziu, la facultate, cand am descoperit Lisp am fost fascinat - era Logo ... si era atat de puternic. Anticipez.) Logo m-a tinut in fata ecranului verde (aveam monitor verde-negru, la HC. Inca mai functiona acum 4 ani cand l-am probat ultima oara. ) multe nopti, incercand sa desenez cine stie ce grafice, invatand sa lucrez cu functii, recursivitate sau fisiere. Plus ca ... scriam ca programatorii adevarati, in cuvinte, nu in combinatii de taste .

Cand am vazut prima data windows 3.0 (sau 3.1, cine mai stie) am fost coplesit. Jocuri, dischete,. Windows NT, retea!! Cand am vazut prima oara windows 95 (un demo, instalat de pe 4 sau 5 dischete ... acum stau si ma gandesc, cum putea fi demo la un sistem de operare... ) ne-a trebuit (eram mai multi, era un eveniment) cateva ore ca sa intelegem noile concepte ...

Apoi lumea se juca si eu invatam comenzi in dos. Imi aduc si acum aminte ce multumit am fost cand am aflat ca poti sa scrii HELP si sa afli o gramada de chestii. (chestia asta ma ajuta in continuare). Am trecut repede prin toate generatiile de 286, 386, 486; am vazut si un MAC - dar era doar o piesa de muzeu, oricat m-am rugat - nu am avut voie sa il pornesc. Apoi pe la 16 ani am avut primul meu PC - un Pentium I. Imi aduc aminte ca in prima noapte m-am jucat (aveam cateva jocuri instalate, cand l-am cumparat) Probabil m-am jucat si in zilele urmatoare, dar imi aduc aminte cum am gasit intr-o dimineata un manual de Basic, un fisier htm pe care il studiam in dos. Era al naibii de frustrant , si am inceput sa-mi iau notite, pentru ca era o singura consola. Apoi am avut o revelatie fantastica - am pornit dos- ul de sub windows si puteam lucra in acelasi timp. Apoi am aflat ca Basicul e o chestie prafuita. Am aflat de pascal. Am scris in pascal tot ce am putut (dupa acelasi pattern de in urma cu caativa ani - "sa invatam sa programam", manuale, carti de jocuri, apoi din ce in ce mai tehnic.) Am scris in pascal pana am programat un Paint (in echipa cu cineva) Un paint in care pusesem cam tot ce avea Paint-ul original - forme, culori, salvam fisiere, incarcam fisiere (in format propriu, bineinteles). Apoi am abandonat Pascal - eram in clasa a 11 ( sau a 12-a?) si am descoperit Borland C++.

Apoi am plecat la facultate. Si am descoperit internet-ul. Am descoperit internet-ul in laboratoare cu niste calculatoare ciudate, unde nu mergea nimeni niciodata. Toti se ingramadeau in cele doua sali cu cateva calculatoare cu win95, si prioritate aveau (normal) cei din anii terminali, nu bobocii. Incet incet am aflat ca acele calculatoare ciudate erau terminale, si limbajul acela ciudat era un sistem de operare - am auzit de novell, de netware, apoi de unix si linux ... Si am invatat mai intai mecanic comenzile - whoami, whereami, telnet, lynx ... Apoi mi-am adus aminte de HELP. Si am aflat ca se cheama "man".

Apoi am aflat ce inseamna "cu adevarat" programarea. C, C++, Java, C++, C++, C++. Am invatat ce inseamna baze de date, (de la fox la Oracle). C++, C++, C++ ... C++ sub linux, C++ de Windows (MFC) . Am visat liste si pointeri, am construit sisteme de operare, am scris probleme cu matrici cu multi de 0. Retele neuronale, compilatoare. C++. (da, am invatat multe limbaje de programare, enumerarea ar fi prea lunga, credeti-ma pe cuvant. )

Am invatat sa programam intrun limbaj ciudat, cu multe paranteze - Lisp. (Ce chestie, asta seamana cu logo .. Da.. Logo e un subset de lisp - fara paranteze.) Lisp e cel mai puternic limbaj de programare pe care l-am invatat vreodata. Lisp este homoiconic - limbajul in sine si datele pe care le manipuleaza sunt reprezentate similar. Programul poate scrie programe. A fost mult timp sinonim cu inteligenta artificiala (am fost fascinat de subiect).

Si (destul de tarziu, pentru ca noi am studiat multa teorie) am aflat de web. (de programare web, adica) Am aflat de html, de asp si php, am aflat de css (da, css exista de mult, nu a fost inventat anul trecut, doar a fost redescoperit in ultimul timp .. ) si de flash. Am aflat de xml, xslt, xpath rdf si alte tehnologii de care programatorii web (de pe la noi) nu prea se ating nici azi.

Pe parcurs am descoperit si linux-ul, si am fost fascinat (la fel ca multi altii) nu de puterea, sau de stabilitatea, sau mai stiu eu ce caracterisitica fenomenala a sistemului, ci de libertatea pe care o insemna.

Dupa o introducere ... de 17 ani, am ajuns si la subiect. Pentru mine programarea a insemnat mereu fascinatie. Mereu in 17 ani am vrut sa fiu programator. Si totusi acum am aflat ca programarea inseamna altceva. Programare inseamna sa faci repede si cu atentie o chestie cretina, pentru ca firma sa mearga bine. Programarea inseamna sa faci un lucru anume, in exact un singur mod, de fiecare data, indiferent daca e bine sau nu. Programarea inseamna sa copii la nesfarsit lucruri pe care le-ai mai facut inainte. Programare inseamna sa fii mereu gata de cearta, pentru a demonstra ca greseala nu iti apartine. Programare inseamna sa faci bine lucrurile pe care stii sa le faci, fara sa te complici cu ceva nou.

Sa fii programator inseamna sa nu ai initiativa, sa nu fii creativ. Pardon, sa fii creativ, sa ai initiativa, dar nu acum, acum trebuie sa facem asta. Si trebuie sa facem asa. Asta nu se poate face pentru ca noi nu am facut-o niciodata. Asta nu se poate.

Nu se poate. Esti naiv. Esti neatent. Repede. Esti vinovat. Nu e bine ce faci. Nu faci bine. Nu asa. Asa. Nu ai voie. Cere aprobare. Verifica. Cere permisiune. Verifica din nou. Esti neatent. Nu ai dreptate. Nu stii. Nu ai experienta.

You will comply. Resistence is futile.

Voi nu sunteti programatori, voi sunteti functionari. Resistance is not futile.

3 comentarii:

IronMAN spunea...

"nu inventezi tu roata"... imi suna asa de cunoscut.

Mia spunea...

De acord. Asa e atunci cand faci programare intr-o companie. Orice initiativa personala dispare, e cumplit, e ca si cum ti-ar frange spiritul.
Mai e totusi o sansa...freelancer. Ca freelancer poti face ceea ce vrea clientul in MODUL in care vrei TU. Dar banuiesc ca stii deja...
Ceea ce vreau sa spun este ca situatia nu e chiar atat de deprimanta. O cale se gaseste mereu.

Bamse spunea...

ei, programarea e chestie de stiinta care se intampla pe mai multe calculatoare, dar cand e vorba de unu` care se crede sef si-ti spune ca "tu nu esti platit sa gandesti" chiar daca tu vrei sa intervii deoarece vezi ca se intampla ceva grav sau chiar mortal.
"romania tara tuturor posibilitatilor" unde nu ai voie sa ai idei, sa gandesti si poate intr-o zi nu o sa avem voie nici macar sa respiram.