evoluția interacțiunii om-calculator (iv)
sâmbătă, 11 aug. 2012, 14:46
Seria „evoluția interacțiunii om-calculator” a avut un parcurs interesant, căruia îmi voi permite să îi fac un rezumat. Prima parte tratează câteva generalități legate de domeniul interacțiunii om-mașină. Cea de-a doua discută pe marginea interacțiunii dintre oameni și dispozitive digitale oarecare – care însă nu-s mai puțin „mașini” decât calculatoarele personale -, iar în partea cu numărul trei se remarcă existența unei nișe unde interfețele om-calculator au progresat enorm, și anume jocurile pe calculator.
Revenind la problema de fond, s-ar părea că interacțiunea om-calculator se poate reduce – cel puțin parțial – la ceea ce omul numește în general comunicare. Nu ne e clar ce implică asta, însă foarte probabil că într-o lume ideală ar fi de ajuns să îi zicem „calculatorului” [i] să rezolve nu știu ce problemă X („spală-mi șosetele”), iar acesta să se apuce imediat de muncă, ca un adevărat „rabochiĭ” care este dânsul. Observăm definiția vagă a conceptului „calculator”, care-i mai mult o mașină în sensul abstract al cuvântului. În spatele procesului de spălare a șosetelor pot sta unul, două, zece sau o mie de calculatoare fizice, care pentru utilizator vor apărea însă ca o singură entitate, „calculatorul”.
Nu știu dacă vă amintiți, dar în caz că nu, ar fi o idee bună să reluăm: ansamblul de programe sau mașini care apar utilizatorului drept o singură entitate se numește „sistem distribuit”. Ori sistemul distribuit, adică Internet-ul, adică arhiva™ e un pas evolutiv firesc față de telegraf, telefon, televiziune și așa mai departe, ceea ce face problema „interacțiunii”, adică a „comunicării” cu atât mai importantă. Un rol important în rezolvarea acestei probleme îl joacă web-ul, despre care spuneam mai demult că e o platformă socială în virtutea faptului că satisface nevoia de comunicare între oameni; însă comunicarea între oameni nu poate fi în acest caz eficientă dacă intermediarul („calculatorul”) nu satisface aceleași condiții. (mai mult…)
- Care „calculator” e ceva abstract, ca din ceruri, și suficient de inteligent încât să înțeleagă actele de vorbire, posibil mai bine decât ființa umană medie. [↩]
o introducere ușor neobișnuită în domeniul arhitecturii software
duminică, 29 iul. 2012, 16:24
Arhitectura, sau mai general proiectarea chestiilor este un subdomeniu al ingineriei ca oricare altul, care se ocupă, am putea spune lipsiți de rigoare, cu descrierea chestiilor în cauză. Bunăoară, dacă doresc, inginer fiind, să proiectez un ciocan spre a rezolva o problemă dată (de obicei bătutul cuielor), va trebui – dat fiind că-s om, iară nu orice om, ci inginer – să îmi formulez un set de cerințe și întrebări adiacente acesteia, legate printre altele de: părțile componente ale ciocanului, felul în care arată acestea, din ce sunt formate și cum se îmbină ele spre a forma mai mult decât suma părților lor.
Fundamentele acestei paradigme sunt aceleași în cazul sistemelor software, motiv pentru care și există în prezent acest domeniu oarecum bizar al ingineriei programelor pe calculator [i]. Diavolul se regăsește bineînțeles în detalii, acolo unde teoreticienii încearcă să prezică evoluția software-ului în timp. Dacă în cazul unui ciocan lucrurile stau destul de simplu – dai cu el până se strică -, software-ul evoluează destul de haotic în timp, degradându-se și pierzându-și din fiabilitate în moduri greu de prevăzut. Colac peste pupăză, inginerii noștri plini de creativitate gândesc modele și implementări care de care mai complexe, când rolul abstractizării e tocmai opusul, anume acela de a simplifica lucrurile. Deci aici zic că ar ajuta un pic să luăm lucrurile de la zero, deci să regândim problema. (mai mult…)
- Da, dragi cititori, ingineria software e un ceva anume extrem de bizar prin felul ei de a fi. Aceasta ba apare în, ba dispare din mintea inginerului programator, existând și în același timp încetând să existe pentru acesta la un moment dat. Fenomenul se datorează nu numai faptului că lumea ideilor e volatilă în cadrul unui singur individ, ci și aceluia că oameni diferiți pot privi o singură problemă în moduri complet disjuncte, ajungând astfel să petreacă o perioadă considerabilă de timp stabilindu-și un limbaj comun. Astfel au apărut hack-uri imense dezvoltate de oameni cu interese profund diferite, cum e nucleul Linux, și astfel au luat viață inclusiv unele produse ale consumului de LSD, cum e Unix. [↩]
descentralizarea în sistemele distribuite, o abordare informală
duminică, 1 apr. 2012, 20:52
Voi începe ca de obicei prin a explica toți termenii din titlu care sunt legați direct de subiect, pentru a nu da impresia profund greșită că am înșirat cuvinte doar de dragul de a face tech blabber. Termenii la care mă refer sunt „descentralizare” și „sistem distribuit”, și voi începe cu cel din urmă pentru a-l putea explica apoi pe cel dintâi.
Sistemul distribuit este abstractizarea la nivel (formal) computațional a rețelei de calculatoare. Într-un sens mai larg, orice entitate formată din subentități abstracte care execută calcule spre rezolvarea unei probleme – care problemă e cea definită prin entitatea-mamă, abordarea fiind astfel una top-down – este un sistem distribuit. În acest sens mai larg mai multe procesoare sau core-uri, elemente periferice și una sau mai multe magistrale care le interconectează pe toate acestea formează un sistem distribuit pe care noi îl numim calculator.
Tanenbaum și Van Steen definesc sistemul distribuit ca pe un sistem software care face ca mai multe calculatoare să apară pentru utilizator drept o entitate singulară, aceasta fiind o definiție care are mai mult sens în contextul ingineriei calculatoarelor. Astfel Internetul e un mare sistem distribuit, Twitter e un altul, World of Warcraft e la rândul său un sistem distribuit și așa mai departe. Definiția e foarte generală, astfel că în particular are sens să ne întrebăm cum sunt organizate unitățile de calcul dintr-un astfel de sistem, ce protocoale folosesc ele pentru a comunica, care model e mai potrivit în ce situație și așa mai departe, cu toate astea ocupându-se domeniul sistemelor distribuite. (mai mult…)