sâmbătă, mai 8, 2021

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

Please enter your comment!
Please enter your name here

Prin adaugarea unui comentariu sunteti de acord cu Termenii si Conditiile site-ului Contributors.ro

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.

Contributors.ro propune autorilor săi, acum, la sfârșit de an, trei întrebări despre anul 2020 si perspectivele României în viitorul apropiat. Cele trei întrebari sunt:

1. Care este evenimentul anului 2020 cel mai pe nedrept trecut cu vederea de media și de opinia publică? 

2. Care este cea mai interesantă idee a anului 2020?

3. Care e cea mai mare temere pe care o aveți pentru viitorul României si care e cea mai mare speranță? 

Esential HotNews

E randul tau

Observ cu uimire că invocați, ca reper intelectual creștin, cartea lui Noica, „Rugaţi-vă pentru fratele Alexandru”. Și cumva indirect îi reproșați lui Gabriel Liiceanu un soi de trădare a acestui crez ( „am neplăcuta senzaţie că mă aflu ȋn faţa unui tată care şi-a abandonat, simbolic, copiii”). Mă tem că tocmai această carte a lui Noica este o trădare a suferinței victimelor de: Cristina Cioaba la Dincolo de Isus. Gabriel Liiceanu şi portretul României religioase

Top articole

Voi, treziți-vă!

Cezar Victor Năstase este convins că: ”Dacă s-ar reintroduce pedeapsa capitală aceasta ar trebui aplicată în primul rând cozilor de topor și...

PNRR: Eșecul din spatele unui succes cosmetizat

Pe măsură ce se devoalează noi informații din Planul Național de Redresare și Reziliență (PNRR), se poate observa că acest plan este...

Și în România este confirmat începutul declinului pandemiei Covid-19 (Actualizat)

După o așteptare nu agreabilă, evoluțiile de după 20 aprilie au început să devină pozitive și la nivelul ratelor de mortalitate iar cele două curbe și-au armonizat mișcările descendente. Armonizarea nu a survenit după două săptămâni, cum era de așteptat din evoluțiile anterioare şi din alte ţări, ci după trei săptămâni, cea de a treia consemnând o surprinzătoare recrudescență a mortalității.

Cum produce scoala tampiti

I.  Învăţământul preuniversitar Pentru a nu pune la încercare răbdarea potenţialilor cititori, o spun de la început: şcoala românească produce tâmpiţi industrial şi cu metodă....

Paștele – Anul II al pandemiei

          După suferința Vinerii Mari, înfricoșați de chinul și moartea lui Isus, apostolii au căzut sub povara descurajării și a fricii. Timp...

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

MIHAI MACI – Cel de-al doilea volum din Colectia Contributors.ro

„Atunci când abdică de la menirea ei, școala nu e o simplă instituție inerțială, ci una deformatoare. Și nu deformează doar spatele copiilor, ci, în primul rând, sufletele lor. Elevul care învață că poate obține note mari cu referate de pe internet e adultul de mâine care va plagia fără remușcări, cel care-și copiază temele în pauză va alege întotdeauna scurtătura, iar cel care promovează cu intervenții va ști că la baza reușitei stă nu cunoașterea, ci cunoștințele. Luate indi­vidual, lucrurile acestea pot părea mărunte, însă cumulate, ele dau măsura deformării lumii în care trăim și aruncă o umbră grea asupra viitorului pe care ni-l dorim altfel.” – Mihai Maci Comanda cartea cu autograful autorului. Editie limitata.

Carti recomandate de Contributors.ro

 

„Pierre Hadot aduce filosofia antica in zilele noastre. Ce s-a spus candva redevine actual, urmand modelul exercitiului spiritual, mai exact al intelepciunii care este, inainte de orice, o optiune de a fi.” – Pascal Bruckner

 

„Demersul lui Hadot parcurge elegant traseul de la inceputurile filosofiei printre greci, apoi transformarea ei in timpul romanilor si intalnirea cu crestinismul, precum si relatia emotionanta dintre filosofia orientala si occidentala.” – Global and Mail

 

Pierre Hadot (1922–2010) a fost un filosof, istoric si filolog francez, bun cunoscator al perioadei elenistice si in special al neoplatonismului si al lui Plotin. Este autorul unei opere dezvoltate in special in jurul notiunii de exercitiu spiritual si al filosofiei ca mod de viata.

 

Cumpara cartea de pe GiftBooks.ro