vineri, aprilie 19, 2024

IT: Infernul bibliotecilor

Acum mai bine de zece ani lucrurile păreau destul de clare în programare. Orice programator serios lucra în C sau un derivat al lui, cel mai probabil C++, eventual Java. Restul, mai ales cei care foloseau limbaje interpretate, precum Basic sau php pentru încă proaspătul fenomen web erau priviţi ca “amatori”.

Lucrurile au început să se complice prima dată atunci când cererea de aplicaţii web a devenit predominantă. Era vremea când Microsoft lansa .net pentru a putea ocupa o piaţă unde Java părea singura tehnologie posibilă.  Şi s-au complicat şi mai rău atunci când jucătorii mari, începând cu Google, au hotărât să transforme industria de hosting într-un fel de hypermarket care să ofere tot ce o companie şi-ar dori ( şi să închidă “buticurile” numite datacentere pe care orice firmă medie le întreţine )

Dincolo de discuţia dacă această strategie e câştigătoare sau nu ( şi unde probabil răspunsul nu va fi nici nu şi nici da, ci “depinde” )  noul curent a descoperit iute că avem nevoie de limbaje noi, de tehnologii şi abordări noi.  Pur şi simplu tehnologia momentului nu era potrivită scopului propus.

Mai întâi tehnologia web era incredibil de limitată comparativ cu cea desktop. Modul de lucru client-server era exact ceea ce îi spune numele: browserul întreabă, serverul răspunde. Nu este propriu-zis un canal bidirecţional, în tot cazul nu e sincron.

Pe de altă parte, mutarea serviciilor la provider înseamnă folosirea de altfel de servere. La tehnologia actuală, un singur server low end, destinat în general clienţilor mici, s-ar putea să facă faţă aproape oricărei aplicaţii “enterprise” pentru o companie medie sau chiar mare. Dar în “cloud” lucrurile stau altfel ( IBM a lansat anul ăsta un nou mainframe, după o pauză de câţiva ani) . Ori lucrul pe servere cu multe “core”-uri în condiţiile de folosire judicioasă a resurselor , cere tehnologie specifică. În plus, aplicaţile trebuie să poată fi mutate cu uşurinţă de pe o maşină pe alta, dintr-un datacenter în altul, în mod absolut transparent. Acest lucru cere tool-uri specifice, care trebuie să poată fi dezvoltate, şi mai ales sincronizate mereu, pentru că timpul este un adversar din mai multe puncte de vedere: timpul necesar dezvoltării, timpul necesar sincronizării aplicaţiilor, timpul necesar deployment-ului…. şi dincolo de toate, ceea ce îl interesează pe client, timpul de răspuns.  Ceea ce noi rezolvăm de obicei cu un script s-ar putea să nu fie destul de bun într-un loc unde vorbim de mii de maşini sau de milioane de “containere”.

Aşa tehnologiile web au ajuns un amestec de limbaje şi tehnologii vechi, noi  şi vechi dar modernizate. Bătrânele JavaScript-uri, jucării parte şi ele pe vremuri în “războiul browserelor” ( niciodată interpretorul Internet Explorer nu era compatibil cu cel Netscape/Mozilla ) au trebuit extinse, refăcute, mai mult sau mai puţin standardizate pentru a deveni o componentă esenţială în aplicaţiile actuale.

În zona web, limbajele interpretate par a fi câştigat războiul contra celor compilate. ( deşi lucrurile sunt relative, pentru că “server side” putem avea orice) . Cel puţin pe partea de client ele au cel putin avantajul de a putea fi actualizate transparent, iar problema puterii de calcul nu prea se mai pune.

În cealaltă zonă, a managementului, lucrurile sunt mai delicate. Acolo performanţele chiar contează, e nevoie de aplicaţii simple, robuste şi rapide. Acolo e zona în care Google a dezvoltat go, o extensie a ideilor din C .

O trasatură comună a noilor tehnologii pare a fi capacitatea de actualizare automată. Ele nu numai că sunt pentru web, dar “trăiesc” în web: într-un fel sau altul, mare parte din bibliotecile lor sunt stocate undeva într-un repository disponibil web. Abordarea diferă, dar într-un fel sau altul fiecare accesează acest “repository” cumva: fie o dată, pentru a descărca bibliotecile, fie la fiecare folosire (folosind bineînţeles şi mecanismul de “cache” pentru a îmbunătăţi viteza)

Ori, aceste repository-uri se schimbă şi se updatează mereu. Deocamdată nu ştim ce se va întâmpla, dar probabil că la un moment dat vom ajunge la un nou turn Babel al bibliotecilor, aşa cum programarea clasică, de desktop, a ajuns la cel al bibliotecilor dinamice, la vremea respectivă. Greu de spus cum se va remedia, dar am încă în faţa ochilor un tabel Excel pe care ni-l dăduse un trainer de la Fujitsu, cu lista de aplicaţii de management pentru servere şi versiunea de Java pe care funcţionează. Probabil în versiunea 2.0, tabelul Excel va fi disponibil şi el pe github.

Distribuie acest articol

5 COMENTARII

  1. Practic, calculatoarele noastre personale vor deveni simple statii de vizualizare a datelor si informatiilor stocate in data center-uri imense, in care securitatea si volumul informatiei vor fi cele mai importante aspecte.

  2. Imi pare rau, dar articolul e greu de urmarit si de inteles chiar si de cei care lucreaza in domeniu si cunosc cum stau lucrurile, iar unele afirmatii sunt chiar uluitoare, de exemplu cea cu limbajele interpretate care au castigat razboiul cu cele compilate … in browser (pentru ca server-side chiar spuneti ca poate fi orice).

    Puteti da exemple concrete de librarii despre care vorbiti si care e relevanta lor pentru cei care nu se ocupa de managementul unui data center? Pentru majoritatea oamenilor din IT problema nu exista pentru ca nu se intalnesc cu ea vreodata.

    • Daca articolul e greu de urmarit este probabil vina mea. ( daca nu stii sa explici clar inseamna ca nu cunosti destul de bine subiectul :) )

      In ceea ce priveste librariile, primul exempu este chiar cel dat de mine, cu Java: rare sunt aplicatiile care merg pe orice versiune de Java ( si nici cu .Net nu imi e rusine). De fapt chiar ideea articolului a pornit de la faptul ca ma luptam cu ceva aplicatii de instalat in Ruby on Rails care, evident, necesitau biblioteci cu versiuni mutual exclusive ( dupa cum probabil stiti, sistemul este ca aplicatiile sa isi descarce „gems”-urile de pe net. Dar problemele astea sunt la fel de vechi ca Visual Basic-ul, aproape toate programelele veneau inca de atunci cu „dll-ul” lor (adica versiunea pentru care au fost scrise) . In programarea web, imi cam pastrez parerea, aplicatiile interpretate ( node.js, php, ruby, python etc etc) tind sa castige batalia.

      • Cred ca de fapt va referiti la (ne)seriozitatea unor dezvoltatori de aplicatii si limbaje de programare. PHP e gratuit, dar incompatibil de la o versiune la alta, pentru Ruby ati dat deja exemplul potrivit, problemele de compatibilitate cu Java sunt bine stiute. Cu Visual Basic singurele probleme de care stiu erau versiuni diferite de DLL decat „astepta” aplicatia sa aibe pentru ca fiecare aplicatie venea cu DLL-uri proprii care le suprascriau pe cele existente, astfel in functie de ordinea instalarii se putea ajunge ca versiunea curenta sa fie cea mai veche.

        In schimb nu am auzit de un asemenea iad in limbaje suportate de companii serioase, gen Borland (da, nu mai este relevanta dar a fost), Microsoft (.NET are versiuni care coexista pasnic pe acelasi computer si fiecare aplicatie e compilata pentru versiunea dorita; am mentionat ca este compilata?) sau SAP (ABAP e folosit la greu in companiile mari, mai mult decat Java). Pentru ca iadul e creat in mare parte de jungla de aplicatii facute mai mult sau mai putin responsabil de dezvoltatori care au un interes limitat de a oferi suport complet sau de a mentine actuala aplicatia lor; sunt foarte multi binevoitori care publica gratuit o aplicatie, dezvoltatorii incep sa o foloseasca si intre timp autorul original se apuca de altceva si abandoneaza aplicatia. Se ajunge la un ecosistem compus din franturi de componente mai mult sau mai putin functionale, finisate, suportate si actuale – cred ca in mare parte e vina celor care folosesc acest zoo al IT-ului si nu a autorilor binevoitori care publica acele componente de obicei sub forma „take it as it is, if you don’t like it chose something else”.

        • Multumesc pentru completari, sunt cu adevarat binevenite. Eu nu vreau sa dau vina pe nimeni, cred ca asta este situatia; nici nu mi se pare foarte normal sa am si sa folosesc trei versiuni de .Net simultan ( asa pot folosi si sapte versiuni de ruby sau de Java simultan, dar nu e normal ). E si expresia unui nou stil de lucru, pe care (honni soit qui mal y pense) l-as numi „copy-paste”. Tendinta e de a construi totul din „prefabricate”, fie ca se potrivesc fie ca nu. Din cauza asta „prefabricatele” tind sa devina cat mai stufoase ( ca sa acopere toate cazurile) iar programele le folosesc in exces. Evident ca ulterior se dovedeste ca biblioteca nu e destul de completa, se mai adauga ceva, sa zicem un parametru care intamplator devine obligatoriu, noi nu am scris programul asa, daca il modificam pierdem „backward compatibility”, daca nu il modificam nu mai merge pe versiunile noi, deci mai introducem un case…. si tot asa, pana cand jumatate din softul nostru este despre biblioteci si o mica parte despre ceea ce are el de facut cu adevarat :)

LĂSAȚI UN MESAJ

Vă rugăm să introduceți comentariul dvs.!
Introduceți aici numele dvs.

Autor

Mihai Badici
Mihai Badici
Absolvent al Facultății de Electronică si Telecomunicații București ( 1991) Administrator de sistem cu peste zece ani de experiență cu specializari in sisteme de stocare si securitatea datelor. De asemenea a absolvit in 1996 Facultatea de Litere la Universitatea Bucuresti. In prezent, consultant IT independent, colaboreaza pe mai multe proiecte legate de infrastructura de date.

Sprijiniți proiectul Contributors.ro

Pagini

Carti noi

 

Cu acest volum, Mirel Bănică revine la mai vechile sale preocupări și teme de cercetare legate de relația dintre religie și modernitate, de înțelegerea și descrierea modului în care societatea românească se raportează la religie, în special la ortodoxie. Ideea sa călăuzitoare este că prin monahismul românesc de după 1990 putem înțelege mai bine fenomenul religios contemporan, în măsura în care monahismul constituie o ilustrare exemplară a tensiunii dintre creștinism și lumea actuală, precum și a permanentei reconfigurări a raportului de putere dintre ele.
Poarta de acces aleasă pentru a pătrunde în lumea mănăstirilor o reprezintă ceea ce denumim generic „economia monastică”. Autorul vizitează astfel cu precădere mănăstirile românești care s-au remarcat prin produsele lor medicinale, alimentare, cosmetice, textile... Cumpara cartea de aici

Carti noi

În ciuda repetatelor avertismente venite de la Casa Albă, invazia Ucrainei de către Rusia a șocat întreaga comunitate internațională. De ce a declanșat Putin războiul – și de ce s-a derulat acesta în modalități neimaginabile până acum? Ucrainenii au reușit să țină piept unei forte militare superioare, Occidentul s-a unit, în vreme ce Rusia a devenit tot mai izolată în lume.
Cartea de față relatează istoria exhaustivă a acestui conflict – originile, evoluția și consecințele deja evidente – sau posibile în viitor – ale acestuia. Cumpara volumul de aici

 

Carti

După ce cucerește cea de-a Doua Romă, inima Imperiului Bizantin, în 1453, Mahomed II își adaugă titlul de cezar: otomanii se consideră de-acum descendenții Romei. În imperiul lor, toleranța religioasă era o realitate cu mult înainte ca Occidentul să fi învățat această lecție. Amanunte aici

 
„Chiar dacă războiul va mai dura, soarta lui este decisă. E greu de imaginat vreun scenariu plauzibil în care Rusia iese învingătoare. Sunt tot mai multe semne că sfârşitul regimului Putin se apropie. Am putea asista însă la un proces îndelungat, cu convulsii majore, care să modifice radical evoluţiile istorice în spaţiul eurasiatic. În centrul acestor evoluţii, rămâne Rusia, o ţară uriaşă, cu un regim hibrid, între autoritarism electoral şi dictatură autentică. În ultimele luni, în Rusia a avut loc o pierdere uriaşă de capital uman. 
Cumpara cartea

 

 

Esential HotNews

contributors.ro

Contributors.ro este intr-o permanenta cautare de autori care pot da valoare adaugata dezbaterii publice. Semnaturile noi sunt binevenite cata vreme respecta regulile de baza ale site-ului. Incurajam dezbaterea relaxata, bazata pe forta argumentelor.
Contact: editor[at]contributors.ro