Primul meu calculator (pe care am programat, nu doar m-am jucat) avea un procesor de 8 biți la 3.5MHz și puțin sub 42KiloBytes de RAM util. Era puțin prea lent. Cînd editam o linie mai lungă, cursorul avansa greu spre finalul liniei. Mi se părea că dacă procesorul ar fi cu vrei 30% mai rapid ar fi fost optim.
Al doilea calculator pe care am programat acasă avea un procesor de 16 biți, 7MHz, cam 94KiloBytes de memorie utilă. Știa destul de bine multitasking, limbajul de asamblare al procesoarelor 68000 era un vis. Memoria video crescuse simțitor față de anteriorul calculator și se vedea cum se desenau textele și elementele grafice pe ecran. Jocuri nu prea erau pentru calculatorul cel nou și cele care erau se mișcau vizibil mai prost decît cele pentru calculatorul inițial. Mi se părea că dacă procesorul ar fi cu vreo 30% mai rapid ar fi optim.
Primul meu calculator compatibil PC a fost prin 1993. Era un 386DX la 40MHz, inițial cu 1MB de RAM apoi cu 4. Multitaskingul mergea clar mai prost decît pe calculatorul dinainte. Limbajul de asamblare x86 comparat cu cel de la 68000 părea o catastrofă imposibil de acceptat ca un pas înainte. Noroc cu proaspătul Visual Basic că se putea programa în condiții decente. Apariția harddiscului în calculatorul de pe biroul meu a fost un avans greu de negat dar complet mascat de folosirea lui pe post de memorie virtuală. Dintr-o dată memoria devenea de zeci de mii de ori mai lentă, trebuia făcut ceva. Ferestrele erau mai frumoase, rezoluția mai mare. Pînă atunci nu îmi dădeam seama cum e să ai nevoie de mai mult RAM dar cît trăiește omul învață – uneori are nevoi de care nici nu știe și pe care îl învață alții să și le descopere și să plătească apoi pentru ele. Mi se părea că dacă procesorul ar fi cu vrei 30% mai rapid ar fi optim.
Upgrade-ul la un 486DX2 la 66MHz și 8MB de RAM aproape a coincis temporal cu apariția Windows 95 așa că nici nu am apucat să mă bucur de el. Am început imediat să visez la 16MB de RAM și… la un procesor cu vreo 30% mai rapid care ar fi fost sigur optim.
Au urmat pe rînd 80MHz, 120MHz, 133MHz, 150MHz, 166MHz, 200MHz, niciunul Intel. Odată cu ele am ajuns să văd și alte sisteme de operare (cam de pe vremea aia verific periodic Linux doar ca să fiu de fiecare dată dezamăgit că tot neprofesional arată și se poartă). Am văzut cu ele și Windows NT și OS/2 și BeOS (și iar Linux din cînd în cînd). Am trecut treptat prin ISA, VESA, PCI și mai apoi AGP și PCIx. Am aflat cum e să ai Plug & Play în loc de configurarea întreruperilor pentru placa de sunet din jumperi, am aflat și cum plăcile de sunet PCI dintr-o dată nu mai pot cînta la fel de cristalin ca și cele pe ISA. Fiecare pas înainte la un procesor mai rapid sau la mai multă memorie a fost însoțit de un nou Windows, de un nou Visual Basic (versiunea 4 a fost cea mai proastă și era nevoie de ea pentru că deja prea repede mergeau programele scrise în VB3 pe calculatoarele vremii). Fiecare calculator din lista de mai sus a fost cam cu 30% mai lent decît ar fi fost optim.
Primul procesor Intel a fost un Celeron la 300MHz pe o placă de bază ABIT cu două sloturi pentru CPU (Intel-urile vremii erau pe slot nu pe soclu). A venit imediat și al doilea Celeron și calculatorul cu două procesoare overclockate la 400 și ceva de megaherzi părea un sistem bestial. Ca să se poată folosi cele două procesoare era nevoie de Windows NT deci și nevoile hardware pentru OS creșteau, aproape negînd hardwarele generos. Jocurile nu prea mai mergeau, placa de sunet ce să mai spun dar toate sacrificiile meritau ca să ai două procesoare în task manager la vremea respectivă. Dacă ar fi fost cu 30% mai rapide aveam un calculator optim.
Miracolul celor două procesoare a fost înlocuit de miracolul Duron la 700MHz și de o nouă generație de sistem de operare și aplicații. Era aproape perfect, lipseau vreo 30% de viteză pînă la perfecțiune.
Au urmat Athloane la diverse frecvențe crescătoare, apoi Athlon XP pînă pe la 2.2GHz cu tot mai mult RAM, cu harddiscuri tot mai mari și mai rapide, cu plăci video tot mai 3D împreună cu Windows XP. Dacă aveai răbdare să booteze mergeau destul de acceptabil. Ca să te joci bine le lipsea cam 30% de viteză.
Am trecut apoi la Athlon 64, Athlon X2 sau Athlon X4, SSD, 4G de RAM. Lucrurile merg binișor. Sunetul deja s-a rezolvat, aproape nu se mai întrerupe – în 2-3 ani va merge cum mergea cu plăcile de sunet ISA și procesoarele la 40MHz adică perfect. Dacă ar fi cu vreo 30% mai rapid calculator pe care tastez postul ăsta, ar merge binișor și Flash HD, aș putea vedea și un video în format MOV HD, aș putea lucra ceva mai fluent și în Visual Studio, s-ar mișca și FireFox cu toate că îl găsesc ocupînd uneori 400MB de RAM dar deh – are de unde.
În atîția ani am asistat la creșteri incredibile de viteză ale calculatoarelor cu care am lucrat, negate pas cu pas de “avansurile” software la care am fost părtaș cu puținul meu. Acum sînt mulțumit dacă un progrămel pe care îl fac ocupa 30MB de memorie – doar are de unde. Acum 10 ani aș fi fost mulțumit dacă același progrămel ar fi ocupat 1MB de memorie.
Cu un calculator al zilelor noastre s-ar putea face lucruri incredibile dacă ar fi exploatat. Ca și creierul uman, un monstru cu 4 core-uri, 8G de RAM, SSD și placă video imposibil de măsurat cu pasul vocabularului meu, un astfel de monstru lucreză direct pentru utilizator probabil în proporție de 10%. Ce face cu restul resurselor? Încălzește degeaba planeta.
În 1985 nu aveam Volume Shadow Copy, nu aveam Desktop Composition sau Timer Coalescence, nu aveam nici Sharepoint nici PDF-uri și nici antivirușii care ocupă cu succes 100% din oricîte core-uri – singurul software aparent scalabil la oricîte procesoare. Nu știu cum dar calculatorul meu de atunci funcționa satisfăcător, nici măcar nu întrevedeam nevoia de a le avea – poate de asta eram fericit. Atunci nu auzeai oameni înjurînd în fața calculatorului pentru că trebuie să aștepte după o clepsidră.
Calculatoarele sînt de mii de ori mai rapide și cumva am reușit noi ăștia din tagma programatorilor să ne batem joc de tot ce pot ele face și să avem nevoie de încă vreo 30% în plus pentru că am mai avea nevoie pentru Bătaia De Joc v8.0. Vom obține eventual și cei 30% ăștia dar pînă atunci nevoile noastre vor crește din nou.
Cel mai mare eșec al IT-ului în toți anii ăștia a fost că oricîte resurse hardware li s-au dat programatorilor, experiența utilizatorului (subiectiv vorbind) s-a degradat. E nevoie ca viteza procesoarelor să nu mai poată crește ca programatorii să nu mai scrie permanent software pentru calculatorul de peste 2 ani. În final limitarea creșterii frecvenței procesoarelor pare să fie de bun augur pentru programatori și în final pentru utilizatori. Numai așa vor înțelege softiștii că trebuie să programeze pentru calculatoarele care există nu pentru cele pe care și le-ar dori, cu 30% mai bune decît orice se poate cumpăra.
Am ajuns și la iPad sau iPhone și la eventualele alternative care vor rula Windows. De ce merge atît de bine iPad subiectiv vorbind ? (la experiența percepută de utilizator mă refer, nu la ce poate face în valoare absolută). Cum reușește să aibă animații fluente cu hardware de telefon mobil? Pentru că au tras linie și au scris software-ul pentru hardware-ul respectiv, nu pentru cel de peste 2 ani, cu 30% mai rapid. Nu pentru că e scris extraordinar de bine ci pentru că e scris pentru un hardware concret, nu pentru vise. E ceva ce nici Microsoft nici Nokia nu au înțeles să facă. Pe calea asta Nokia a ajuns să vîndă mai ales telefoane cu lanternă (cu LED!).
Într-un experiment imaginar, dați procesorul din iPad unui programator de Amiga de acum 15 ani și imaginați-vă ce ar putea ieși.
Ce șanse are un tablet rulînd Windows 7 ca experiență a utilizatorului comparativ cu iPad? Minime. De ce? Pentru că 90% din ce ar executa procesorul ar fi inutil pentru experiența utilizatorului (servicii de nu le mai știe nimeni rostul, indexare, antiviruși doamne ferește, browsere puțind a mucegai de genul Firefox, Flash, te miri ce alte aberații). E greu să mai concurezi chiar și cu un procesor de telefon cînd mai ai vreo 10% ce mai pot fi folosiți pentru utilizator, nu pentru defragmentat memoria, nu pentru garbage collection generațional, nu pentru verificarea de politici, pentru ASLR sau pentru DRM.
Software-ul pentru un competitor iPad rulînd Windows va fi conceput pentru procesorul de peste 2 ani, măcar cu 30% mai rapid decît cel pe care tocmai îl avem, pentru o baterie măcar cu 30% mai… baterie, pentru o rezoluție măcar cu 30%… rezoluție, pentru măcar de două ori mai multă memorie față de maximul posibil de instalat în dispozitiv. Cît de fluentă va fi experiența utilizatorului pe un astfel de “prototip” e ușor de imaginat.
Cînd vor învăța softiștii pentru PC-uri să scrie software la fel de eficient ca și cel scris pentru microcontrollere, unde fiecare kilo de RAM și fiecare microsecundă dor, atunci mai vorbim despre un tablet cu Windows care să-l bată pe iPad în ochii și la degetele utilizatorului novice. Pînă atunci vom avea tableturi care vor rula bine și sigur website-uri scrise în ASP.NET pe serverul web inclus cu SQL Server fie și CE, își vor defragmenta periodic și în fundal virușii din SSD, vor face 50 de verificări pe secundă să vadă dacă nu cumva s-a întîmplat să conectezi pe HDMI un dispozitiv care permite să faci copii ilegale de filme și din cînd în cînd, printre toate astea și multe altele, vor rula și aplicațiile utilizatorului.
Revenind din poveste, mă uit la netbook-ul de lîngă mine, cu procesor la 1.6GHz și 2GB de RAM, cum se tîrăște frustrant, cum în Visual Studio sau chiar în Chrome nu poate ține pasul cu mine la tastare. Uneori aștept 2-3 secunde să apară un nou caracter tastat. Îmi amintesc iar cum în 1985 cu procesorul pe 8biți, cu 42KB de RAM mi se părea că editarea codului merge cam încet și că vreo 30% spor de viteza ar fi rezolvat problema. 25 de ani mai tîrziu, cu de 50.000 de ori mai multă memorie, procesor la o frecventă de 450 de ori mai mare și mult mai eficient per tact, tastez mai greu în editor decît o făceam atunci. Se pare că estimarea mea legată de cei 30% a fost tot timpul complet greșită. Nu 30% de performanță au lipsit tot timpul ăsta ci bunul simț. De ajutor a fost și speranța continuu împlinită a vînzătorilor că utilizatorul va pune iar și iar botul și se va upgrada alternativ hardware / software / hardware / software, ca o vacă de muls cu lapte curgînd infinit.
Aștept cu interes tabletul cu Windows care își va face treaba bine, se va putea ține cu o singură mînă și va avea autonomie de măcar 8 ore. Poate peste 2 ani?
Un alt punct de vedere: http://www.codinghorror.com/blog/2008/12/hardware-is-cheap-programmers-are-expensive.html
In decembrie 2008 cind omul scria postu, legea lu Moore isi arata deja oboseala (daca e sa ne luam dupa acceptiunea generala cum ca ar tine de viteza si nu de nr de tranzistori integrati). Azi e clar chiar si pentru el cred ca legea nu-l mai prea ajuta desi inca functioneaza asa cum Moore a formulat-o.
Mie punctul lui de vedere imi seamana cu al arogantului sultan care a vrut sa plateasca pentru jocul de sah si cind inventatorul i-a cerut dublarea numarului de graunte de griu pentru fiecare patrat de pe tabla el a dat superior din mina (ca orice programator incepator care rezolva problema in 10 minute cind o aude formulata) si a zis generos sa i se dea doi saci de griu. Asa si asta de la coding horror, si-a rezolvat problema cumparind un server nou si are impresia ca asta functioneaza aproape intotdeauna. Problema e ca asta nu functioneaza aproape niciodata si nu pe termen lung.
Ce avea el acolo particular: server web – foarte paralelizabil deci l-a ajutat ceva ce avem din belsug, multe core-uri (si care pe majoritatea programatorilor nu prea ii mai poate ajuta). Chiar si in conditiile astea el spune ca nou server i-a adus usor si ieftin un sport de 50% viteza CPU. 50% CPU in plus ii arde un programator grabit la primul bugfix fara sa clipeasca si iata-ne de unde am pornit. Urmatorul upgrade cu 50% in plus performanta va costa de 5 ori cit asta de acum. Si atunci mai merita aruncat cu hardware in problema? Daca da, urmatorul upgrade cu inca 50% de care va fi nevoie singur peste alte citeva luni va costa de 20 de ori pe atit. Inca mai merita? Mai facem un pas sau ne oprim din upgrade-uri de hardware? Cine e curios despre ciclul asta, sa caute pe internet cum s-a terminat XNET-ul de la Connex in care s-a aruncat cu generozitate cu hardware.
I-as mai recomanda cind mai vrea sa cumpere un server in loc sa plateasca programatorii, sa se gindeasca cu cite core-uri poate arunca in mysql ca sa cistige ceva performanta.
Mi-e teama ca omu a vorbit pripit. As fi vrut sa-i vad punctul de vedere cronologic, esantionat din 6 in 6 luni daca aplicatia lui evolueaza. Probabil o revenire asupra temei in decembrie 2009 ar ilustra un punct de vedere destul de diferit.
Dar daca se poate asa bine si ieftin si frumos arunca hardware in problema, sa aruncam cu niste hardware in Archos 9 de exemplu (care deja e mai scump ca hardware decit iPad) sau in netbookul cu Atom (care nici web nu stie in conditii decente – sa zicem ca de VS.Net l-am scuti ca fiind o cerere nerezonabila).
Sigur ca uneori metoda functioneaza si e chiar mai eficienta dar asta se intimpla rar si nu e sustenabil in evolutia unui sistem.
Daca omul a fost rasfatat sa lucreze doar cu programatori buni si responsabili pe care nu i-a fortat nimeni la hackuri ultraurgente in dispretul performantei aplicatiei, atunci probabil are un punct de vedere privilegiat, de om fericit dar generalizarea lui mi se pare ca e clar gresita – el pare mai degraba exceptia.
Problema cu calitatea programatorilor si a programelor scrise de ei e ca nu sint cuantificabile. Cit merita sa plateshti in plus ca sa angajezi un programator „mai bun”?
Cu procesoarele e mai simplu, avem programe de testat.
Si e foarte usor sa avem aroganta ca putem cumpara performanta ca la piata. La nivelul de intrare se poate. La nivelul 2 nu se mai poate.
Inca o chestie cu care economisim bani si facem programele mai ieftine e sa inghesuim cit mai mult programatori si neprogramatori intr-un spatiu „deschis”.
Indiferent cit era de bun programatorul de capul lui cind l-ai pus intr-un mediu zgomotos continuu si cind ii e frica sa se destinda citind presa calitatea programelor se duce rapid in jos.
Doar pentru ziua de azi am o noua colega de birou; ea vorbeshte ( = striga ) tot timpul la telefon. Toate gindurile mele se invirt in jurul a ce sa-i fac sa taca odata.
@Aburel: spune-ne mai multe despre asta.
Azi ma mut de linga femeia asta si o sa fie mai multi intre mine si ea care sa fie afectati mai direct de zgomotul ei.
Interesant e ca ea vorbeshte normal cind nu e la telefon. La telefon ridica tonul, poate din cauza ca capatul celalalt al firului e in alta tara. Daca stau si analizez mai bine s-ar putea ca ea sa fi dat volumul la microfon prea incet si de aia sa i se pare ca nu e auzita.
Orisicum eu citesc de 3-4-5 ori cite o fraza in speranta ca o sa inteleg care e mesajul.
Bine ca nu scriu cod pentru moment.
Aș vrea să ne descrii mai în detaliu sentimentele tale față de ea. Simti mînie?
Desi ma bag ca musca in mijlocul discutiei dintre voi, vreau doar sa mentionez lipsa unui K6-2 la 500 MHz pe care l-ai avut … odata. Merita sa apara si el in articol, l-ai omis! Si daca imi amintesc si mai bine aminte, cand ai facut upgrade, mi l-ai preschimbat pe al meu cu al tau (io aveam la 450 MHz) si l-ai dat mai departe nu stiu cui… Mi se pare asa neverosimil ca noi am schimbat procesoare intre noi… ce mult timp a trecut.
Am omis mai multe din lista. Acum mi-am amintit de un 486 parca Cyrix, ultimul procesor pe care l-am avut răcit pasiv. Îmi amintesc și de mirarea cu care am primit ventilatorul de pe 486DX2 (fără să bănuiesc ce probleme încep odată cu noua era a răcirii active). Atunci, în primul moment mi s-a părut cool :-) (dar verosimil totuși).
486 Cyrix a fost procesorul ce m-a impresionat cel mai mult. Cred ca s-a simtit diferenta de viteza de la 386DX.
Nu simt nici o minie dar ma bucur ca si alti colegi sint deranjati ;)
M-am mutat circa 6 metrii de la locul faptei si fomeia e la fel de prezenta in mintea si urechea mea ca si acum doua ore.
Nu am nici o minie eu fiind mult prea obosit si fiind nerabdator sa plec acasa. Chestia e ca noi ne tot rotim prin office la cite 6 luni. sintem vre-o 40 de oameni de tot si de fiecare data cind ne mutam sintem putin nemultumiti. De data asta (a 4-a rotire pana acum) vad ca lumea e mai resemnata si au asa un sentiment ca „sa terminam si cu asta si sa mergem acasa”.
Probabil ca cineva e multumit ca uite cum a aranjat lucrurile mult mai bine.
Si nu pot sa inchei fara a relata inlusra idee pe care a avut-o seful nostru cel mare. Ne-a pus intercalati programatori cu useri. Noi am fost vehementi contra. Dar el a fost destul de destept sa nu ne comunice in persoana; a lasat pe un catelus lingau sa ne spune vestea cea buna. El ne-a zis ca sa dam si ideii asteia o shansa. Interesant e ca toata lumea a fost nefericita dar noi am aplicat ideea conducatorului iubit. Userii au inceput sa strige peste capetele programatorilor cind aveau nevoie sa comunice; si aveau nevoie sa comunice des. Dupa vre-o 3 saptamani ne-a despartit. Si acum ma infior cind imi aduc aminte.
Cred că pasul de la 386 la 486-le de care zici s-a simțit cel mai puternic.
pentru cei care nu stiu, „inlusra” este scrierea cuvintului „ilustra” cu ochii inchisi si cu mintea departe. eu zic ca am reusit destul de bine