Din orice unghi ai privi-o, lumea informatica este o imensa babilonie. Din perspectiva nespecialistului, primul care sare in ochi (sau, ma rog, in urechi) este jargonul tehnic. Pe langa multimea parca nesfarsita de acronime, care mai de care mai fistichii, o sumedenie de cuvinte au fost inventate sau deturnate pentru a descrie lucruri care n-au binevoit sa se plieze unui concept deja numit. Pentru vorbitorii altor limbi decat engleza biruitoare, se adauga un strat suplimentar de confuzie. Le pot insa oferi o consolare: nici anglofonii nu pricep mai nimic din pasareasca informaticienilor.


Nici specialistilor nu le este mai usor. Jargonul este fluid, o multime de expresii noi patrund si prea putine admit sa-l paraseasca. Obiceiul vechi de a dezvolta neologisme pe baza radacinilor latinesti sau eline a fost repede abandonat de o multime de tehnicieni peste care notiunile noi cadeau atat de repede incat nici nu mai aveau vreme sa caute intr-un dictionar. O molie (Oniscus murarius) care a nimerit intr-un releu al unui computer Mark II, provocand o pana, a ajuns sa denumeasca generic defectiunile sistemelor software (bug), pentru ca apoi intregul proces de depanare sa se numeasca debugging. Adesea acronimele si abrevierile s-au transformat in cuvinte care tind sa-si piarda legaturile cu originea… Nu intotdeauna cand cineva iti vorbeste despre “sri-dabal-iu” realizezi imediat ca-i vorba despre WWW, adica World Wide Web.


Dar babilonia nu este doar lingvistica, ci si tehnologica. Teoretic, orice se poate calcula, se poate calcula folosind trei operatii extrem de simple: adunarea unei unitati, scaderea unei unitati (doar pana la zero) si comparatia cu zero. Insa, din motive de eficienta, fiecare procesor implementeaza un set de instructiuni mult mai larg, asa incat calculatoarele inceputului erau inerent incompatibile si se programau in limbajul masinii. Valurile succesive de inovatii au adaugat extensii care au sporit diversitate si au adaugat un nou nivel de complexitate, indus de nevoia de a pastra compatibilitatea cu versiunile anterioare.


Sistemele de operare au urmat aceeasi cale a diversitatii. La inceputuri, fiecare computer avea propriul sistem de operare. Nici nu putea fi vorba de a rula un acelasi program pe computere de tipuri diferite. O doamna din US Navy, pe nume Grace Murray Hopper, are revelatia ca programarea calculatoarelor ar trebui sa fie mai usoara, asa ca de la limbajul masinii se ajunge la limbaje de programare de nivel mai inalt. Teoretic, cu compilatoare corespunzatoare, ar putea eventual permite portarea programelor sursa de pe o platforma de calcul pe alta.


Dar n-a fost sa fie. Impreuna cu procesoarele si cu sistemele de operare, limbajele de programare au sporit exponential babilonia. In scurt timp au aparut sute de limbaje de programare si, mai grav, fiecare dintre ele in zeci de dialecte, variante si versiuni. Organismele de standardizare asistau neputincioase la un proces frenetic si incontrolabil de diversificare. Probabil ca diversitatea era inerenta inceputurilor, cand ritmul inovatiilor este de nestapanit iar orice standard devine vetust inca inainte de a fi publicat. Insa, in mod cert, producatorii s-au intrecut la randul lor in sabotarea deliberata a standardelor in scopuri comerciale. Evident, marii clienti ramaneau prizonierii tehnologiilor promovate de furnizorii lor. Daca ai suruburi speciale, iti trebuie si piulite la fel de speciale.


Sistemul de operare Unix a reprezentat o speranta a reconcilierii. Istoria sa este edificatoare si porneste din tentativa ratata de MIT, AT&T si General Electric de a dezvolta un super-sistem de operare numit MULTICS. Dupa ce proiectul este abandonat, un tanar inginer de la AT&T se distreaza pe un computer DEC PDP-7 incercand sa scrie un joc, botezat Space Travel. Pentru asta, Ken Thompson dezvolta rudimentul unui sistem de operare mult mai putin ambitios decat MULTICS, pe care colegii l-au denumit in gluma UNICS, iar apoi Unix. Dar cand masina initiala de dovedeste prea lenta iar Ken hotaraste sa treaca pe una mai puternica, constata ca trebuie sa ia totul de la inceput si ca treaba asta se va repeta pentru fiecare alta platforma. Aici intervine un prieten al lui Ken, pe nume Dennis Ritchie, care inventeaza un limbaj de programare care sa fie de nivel suficient de inalt pentru a fi eficient, dar totodata suficient de jos – adica apropiat de masina – pentru a permite dezvoltarea functionalitatilor specifice unui sistem de operare. Limbajul s-a numit C iar ideea era urmatoarea: odata ce sistemul de operare era scris in C si nu intr-un limbaj specific masinii, pentru orice nou tip de masina era suficient sa fie dezvoltat un compilator de C, urmand ca acesta sa transpuna sistemul de operare in limbajul masinii respective.


Ideea a functionat iar Unix-ul a dobandit un succes instantaneu, fiind adoptat cu entuziasm de mediul academic si apoi de industrie. Sistemul a fost portat cu usurinta pe cele mai diverse platforme hard-soft si ameninta sa devina, impreuna cu limbajul C, un standard universal. Dar n-a fost asa, pentru ca in scurt timp au aparut o multime de variante – numite poetic “arome” (flavors) – care, desigur, au inceput sa nu se mai inteleaga intre ele. Insa catastrofa s-a produs o data cu invazia microcalculatoarelor, care nu aveau forta sa sustina un sistem de tip Unix si au readus situatia la haosul initial: fiecare cu alt sistem de operare, cu alte standarde, cu alte solutii. Toate incompatibile. Dupa o vreme apele s-au mai limpezit si au iesit la iveala invingatorii: Unix in diverse arome pe marile computere si pe puternicele statii grafice bazate pe procesoare RISC, DOS si Windows pe PC-uri bazate pe platforma IBM, MacOS pe Macintosh-urile produse de Apple.


Limbajele de programare au continuat sa se diversifice in voie, fiecare tentativa de standardizare fiind aproape imediat contrazisa de extensiile producatorilor. Poate ca SQL este exemplul cel mai elocvent. Unul dintre putinele standarde stabile in acest domeniu este versiunea ANSI a limbajului C. Insa portabilitatea si interoperabilitatea s-au izbit in continuare de zidul solutiilor, formatelor si protocoalelor proprietare.


Ce s-a mai intamplat apoi se cam stie. Marile computere au murit eroic iar odata cu ele a murit si procesarea centralizata. Microcomputerele au impanzit lumea iar cand frenezia descentralizarii s-a domolit, au inceput sa se lege in retele locale pentru a suplini rolul marilor computere. Insa re-centralizarea s-a dovedit dureroasa si costisitoare iar jucatorii pietei au inteles ca trebuie sa admita o anumita deschidere. Sintagma open systems a fost in voga pe la jumatatea ultimului deceniu al secolului trecut, dar rezultatele au fost modeste. Cuplul Intel/Microsoft a ajuns sa faca legea si sa impuna standardele de facto si un discret monopol in piata informatica.


Marea noutate in peisajul sfarsitului de mileniu a fost sistemul de operare Linux si pleiada de aplicatii open source. Insa toate acestea n-ar fi fost posibile fara expansiunea galopanta a Internetului. Iar aceasta n-ar fi fost galopanta daca un tanar inginer englez, Tim Berners-Lee, n-ar fi avut o memorie precara, ce-l impiedica sa retina oamenii, proiectele si computerele alocate acestora la marele institut european de cercetari pentru fizica particulelor (CERN) de langa Geneva. A inventat un program care utiliza tehnica hipertextului pentru a memora relatii intre informatii diverse. A reusit sa convinga conducerea institutului ca programul sau ar putea fi extrem de util si la nivel institutional. Tim primeste un computer Next si este lasat sa dezvolte sistemul. Rezultatul s-a numit World Wide Web si este pe cale sa revolutioneze lumea.


CERN nu s-a cramponat de proprietatea asupra sistemului iar Tim a publicat standardele pe care se baza – protocolul HTTP si formatul HTML. Au fost dezvoltate programe server si programe client (numite browser) iar sistemul s-a raspandit fulgerator. Ceea ce este extrem de important este ca nevoia de vizibilitate a garantat stabilitatea si caracterul public al standardelor, in ciuda unor tentative de deturnare.


O gaselnita esentiala a fost tehnologia CGI (Common Gateway Interface), care permite serverelor Web sa comunice cu alte programe si sa furnizeze clientilor pagini HTML generate dinamic. Browser-ele Web pot deveni astfel interfata standard cu utilizatorul a unor aplicatii dintre cele mai diverse, indiferent de platforma pe care ruleaza serverele, aplicatiile si clientii.


Diversitatea incepe astfel sa se impace cu compatibilitatea iar Web-ul tinde sa devina un nou turn Babel. Insa rasturnat: nu vom avea niciodata o limba comuna, dar ne vom putea totusi intelege.