Let's Do It Romania - 24 Septembrie 2011



   

Răsturnarea turnului Babel

   

Standardele publice şi stabile ale Web-ului tind să instaureze un climat în care diversitatea tehnologiilor se poate armoniza cu nevoia de compatibilitate.


Mircea Sârbu


Din orice unghi ai privi-o, lumea informatică este o imensă babilonie. Din perspectiva nespecialistului, primul care sare în ochi (sau, mă rog, în urechi) este jargonul tehnic. Pe lângă mulţimea parcă nesfârşită 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 să se plieze unui concept deja numit. Pentru vorbitorii altor limbi decât engleza biruitoare, se adaugă un strat suplimentar de confuzie. Le pot însă oferi o consolare: nici anglofonii nu pricep mai nimic din păsăreasca informaticienilor.

Nici specialiştilor nu le este mai uşor. Jargonul este fluid, o mulţime de expresii noi pătrund şi prea puţine admit să-l părăsească. Obiceiul vechi de a dezvolta neologisme pe baza rădăcinilor latineşti sau eline a fost repede abandonat de o mulţime de tehnicieni peste care noţiunile noi cădeau atât de repede încât nici nu mai aveau vreme să caute într-un dicţionar. O molie (Oniscus murarius) care a nimerit într-un releu al unui computer Mark II, provocând o pană, a ajuns să denumească generic defecţiunile sistemelor software (bug), pentru ca apoi întregul proces de depanare să se numească debugging. Adesea acronimele şi abrevierile s-au transformat în cuvinte care tind să-şi piardă legăturile cu originea... Nu întotdeauna când cineva îţi vorbeşte despre "sri-dabăl-iu" realizezi imediat că-i vorba despre WWW, adică World Wide Web.

Dar babilonia nu este doar lingvistică, ci şi tehnologică. Teoretic, orice se poate calcula, se poate calcula folosind trei operaţii extrem de simple: adunarea unei unităţi, scăderea unei unităţi (doar până la zero) şi comparaţia cu zero. Însă, din motive de eficienţă, fiecare procesor implementează un set de instrucţiuni mult mai larg, aşa încât calculatoarele începutului erau inerent incompatibile şi se programau în limbajul maşinii. Valurile succesive de inovaţii au adăugat extensii care au sporit diversitatea şi au adăugat un nou nivel de complexitate, indus de nevoia de a păstra compatibilitatea cu versiunile anterioare.

Sistemele de operare au urmat aceeaşi cale a diversităţii. La începuturi, fiecare computer avea propriul sistem de operare. Nici nu putea fi vorba de a rula un acelaşi program pe computere de tipuri diferite. O doamnă din US Navy, pe nume Grace Murray Hopper are revelaţia că programarea calculatoarelor ar trebui să fie mai uşoară, aşa că de la limbajul maşinii se ajunge la limbaje de programare de nivel mai înalt. Teoretic, cu compilatoare corespunzătoare, ar putea eventual permite portarea programelor sursă de pe o platformă de calcul pe alta.

Dar n-a fost să fie. Împreună cu procesoarele şi cu sistemele de operare, limbajele de programare au sporit exponenţial babilonia. În scurt timp au apărut sute de limbaje de programare şi, mai grav, fiecare dintre ele în zeci de dialecte, variante şi versiuni. Organismele de standardizare asistau neputincioase la un proces frenetic şi incontrolabil de diversificare. Probabil că diversitatea era inerentă începuturilor, când ritmul inovaţiilor este de nestăpânit iar orice standard devine vetust încă înainte de a fi publicat. Însă, în mod cert, producătorii s-au întrecut la rândul lor în sabotarea deliberată a standardelor în scopuri comerciale. Evident, marii clienţi rămâneau prizonierii tehnologiilor promovate de furnizorii lor. Dacă ai şuruburi speciale, îţi trebuie şi piuliţe la fel de speciale.

Sistemul de operare Unix a reprezentat o speranţă a reconcilierii. Istoria sa este edificatoare şi porneşte din tentativa ratată de MIT, AT&T şi General Electric de a dezvolta un super-sistem de operare numit MULTICS. După ce proiectul este abandonat, un tânăr inginer de la AT&T se distrează pe un computer DEC PDP-7 încercând să scrie un joc, botezat Space Travel. Pentru asta, Ken Thompson dezvoltă rudimentul unui sistem de operare mult mai puţin ambiţios decât MULTICS, pe care colegii l-au denumit în glumă UNICS, iar apoi Unix. Dar când maşina iniţială se dovedeşte prea lentă iar Ken hotărăşte să treacă pe una mai puternică, constată că trebuie să ia totul de la început şi că treaba asta se va repeta pentru fiecare altă platformă. Aici intervine un prieten al lui Ken, pe nume Dennis Ritchie, care inventează un limbaj de programare care să fie de nivel suficient de înalt pentru a fi eficient, dar totodată suficient de jos - adică apropiat de maşină - pentru a permite dezvoltarea funcţionalităţilor specifice unui sistem de operare. Limbajul s-a numit C iar ideea era următoarea: odată de sistemul de operare era scris în C şi nu într-un limbaj specific maşinii, pentru orice nou tip de maşină era suficient să fie dezvoltat un compilator de C, urmând ca acesta să transpună sistemul de operare în limbajul maşinii respective.

Ideea a funcţionat iar Unix-ul a dobândit un succes instantaneu, fiind adoptat cu entuziasm de mediul academic şi apoi de industrie. Sistemul a fost portat cu uşurinţă pe cele mai diverse platforme hard-soft şi ameninţa să devină, împreună cu limbajul C, un standard universal. Dar n-a fost aşa, pentru că în scurt timp au apărut o mulţime de variante - numite poetic "arome" (flavors) - care, desigur, au început să nu se mai înţeleagă între ele. Însă catastrofa s-a produs odată cu invazia microcalculatoarelor, care nu aveau forţa să susţină un sistem de tip Unix şi au readus situaţia la haosul iniţial: fiecare cu alt sistem de operare, cu alte standarde, cu alte soluţii. Toate incompatibile. După o vreme apele s-au mai limpezit şi au ieşit la iveală învingătorii: Unix în diverse arome pe marile computere şi pe puternicele staţii grafice bazate pe procesoare RISC, DOS şi Windows pe PC-uri bazate pe platforma IBM, MacOS pe Macintosh-urile produse de Apple.

Limbajele de programare au continuat să se diversifice în voie, fiecare tentativă de standardizare fiind aproape imediat contrazisă de extensiile producătorilor. Poate că SQL este exemplul cel mai elocvent. Unul dintre puţinele standarde stabile în acest domeniu este versiunea ANSI a limbajului C. Însă portabilitatea şi interoperabilitatea s-au izbit în continuare de zidul soluţiilor, formatelor şi protocoalelor proprietare.

Ce s-a mai întâmplat apoi se cam ştie. Marile computere au murit eroic iar odată cu ele a murit şi procesarea centralizată. Microcomputerele au împânzit lumea iar când frenezia descentralizării s-a domolit, au început să se lege în reţele locale pentru a suplini rolul marilor computere. Însă re-centralizarea s-a dovedit dureroasă şi costisitoare iar jucătorii pieţei au înţeles că trebuie să admită o anumită deschidere. Sintagma open systems a fost în vogă pe la jumătatea ultimului deceniu al secolului trecut, dar rezultatele au fost modeste. Cuplul Intel/Microsoft a ajuns să facă legea şi să impună standardele de facto şi un discret monopol în piaţa informatică.

Marea noutate în peisajul sfârşitului de mileniu a fost sistemul de operare Linux şi pleiada de aplicaţii open source. Însă toate acestea n-ar fi fost posibile fără expansiunea galopantă a Internetului. Iar aceasta n-ar fi fost galopantă dacă un tânăr inginer englez, Tim Berners-Lee, n-ar fi avut o memorie precară, ce-l împiedica să reţină oamenii, proiectele şi computerele alocate acestora la marele institut european de cercetări pentru fizica particulelor (CERN) de lângă Geneva. A inventat un program care utiliza tehnica hipertextului pentru a memora relaţii între informaţii diverse. A reuşit să convingă conducerea institutului că programul său ar putea fi extrem de util şi la nivel instituţional. Tim primeşte un computer Next şi este lăsat să dezvolte sistemul. Rezultatul s-a numit World Wide Web şi este pe cale să revoluţioneze lumea.

CERN nu s-a cramponat de proprietatea asupra sistemului iar Tim a publicat standardele pe care se baza - protocolul HTTP şi formatul HTML. Au fost dezvoltate programe server şi programe client (numite browser) iar sistemul s-a răspândit fulgerător. Ceea ce este extrem de important este că nevoia de vizibilitate a garantat stabilitatea şi caracterul public al standardelor, în ciuda unor tentative de deturnare.

O găselniţă esenţială a fost tehnologia CGI (Common Gateway Interface), care permite serverelor Web să comunice cu alte programe şi să furnizeze clienţilor pagini HTML generate dinamic. Browser-ele Web pot deveni astfel interfaţa standard cu utilizatorul a unor aplicaţii dintre cele mai diverse, indiferent de platforma pe care rulează serverele, aplicaţiile şi clienţii.

Diversitatea începe astfel să se împace cu compatibilitatea iar Web-ul tinde să devină un nou turn Babel. Însă răsturnat: nu vom avea niciodată o limbă comună, dar ne vom putea totuşi înţelege.


 

(Publicat în Ziarul Financiar - august 2004)

 

Copyright © 2004 Mircea Sârbu