mediul de programe unix: descrieri, exemple.
duminică, 24 iun. 2012, 17:32
Un aspect pe care l-am omis când am analizat interacțiunea cu calculatoarele ca act de comunicare este acela că modul text are și el interfețele lui pseudo-grafice. Astfel pentru a distinge între linia de comandă și interfețele text folosim sintagma „Text-User Interface” sau TUI. Acestea sunt prezente în lumea calculatoarelor încă de la începuturile acesteia, fiind incluse și în DOS și Windows {1,2,3}.0 [i], având însă un grad mare de răspândire în lumea *nix.
Povestea pleacă de la faptul că la un moment dat a existat nevoia ca terminalele virtuale să fie independente de mașina fizică pe care rulează. Astfel au apărut bibliotecile terminfo și termcap, peste care au fost dezvoltate curses și mai apoi ncurses. Ultimele două au un API care îl ajută pe programator să aranjeze textul și să deseneze chestii cum dorește dânsul, dând astfel naștere unei interfețe care să fie mai intuitivă pentru utilizator decât CLI-ul.
Ceea ce mulți utilizatori Unix [ii] nu știu sau nu vor să știe e că traiul zilnic poate fi dus la fel de bine înafara modului grafic, ceea ce e mai ales util în cazul în care nu vrem să fim deranjați de chestii frumos colorate. Prin urmare vom purcede la a face o listă a programele de bază care alcătuiesc sau pot alcătui după pofte și nevoi mediul zilnic al unui utilizator Unix – cu mențiunea că unele din ele s-ar putea să fie disponibile decât pe GNU/Linux, din motivul că utilizatorii de BSD sunt probabil prea preocupați să-și miroasă bășinile pentru a le porta; glumesc, dar adevărul e pe undeva prin zonă. (mai mult…)
- Care-i de fapt un TUI foarte împopoțonat și cu suport mai bun pentru mouse. [↩]
- Adică inclusiv de Linux, chiar dacă Linux e prin definiție „not Unix”. [↩]
evoluția interacțiunii om-calculator (iii)
duminică, 10 iun. 2012, 19:33
În încheierea episodului cu numărul doi al serialului „evoluția interacțiunii om-calculator” am promis că nu îl voi lăsa în pom pe acesta din urmă fără să vorbesc despre jocuri. Printr-o pură întâmplare am avut ocazia să citesc între timp un articol care întoarce Angry Birds pe toate părțile sale legate de utilizabilitate, interfață și design.
Adevărul exprimat în cadrul scrierii cu pricina este unul pe cât de simplu pe atât de neevident și sună cam așa: jocurile pe calculator [i] constituie în prezent apogeul interacțiunii om-calculator.
După cum spuneam și în articolele anterioare, de la Xerox și până la Apple mai nimeni din industrie nu s-a preocupat în mod special cu studiul asupra eficienței interacțiunii om-mașină. Windows a fost din punctul ăsta de vedere o varză completă o bună bucată de timp, Linux a fost mai mult sau mai puțin orientat pe interfețe textual-lingvistice iar Apple a fost mult timp la pământ din toate punctele de vedere. Drept urmare abia târziu companiile au început să se gândească cum să se inspire din PADD-urile din Star Trek, inspirație care a dat naștere PDA-urilor și apoi smartphone-urilor. (mai mult…)
- Când zic „calculator” mă refer de fapt la toate dispozitivele digitale interactive, adică inclusiv GameBoy, PlayStation sau iPhone. Prin „jocuri” înțeleg de fapt doar jocurile reușite din punct de vedere tehnic și artistic. [↩]
breviar istoric intel (ii)
luni, 30 apr. 2012, 18:28
În cadrul articolului anterior rămăsesem pe undeva la Pentium, care spuneam că are pipeline superscalar, cache-uri de date și de instrucțiuni și așa mai departe. Să facem o pauză și să explicăm câteva din conceptele astea, pentru că sunt foarte importante pentru ceea ce a urmat după.
Pipeline-ul, adică pe românește banda de asamblare, e pe scurt transpunerea în calculatoare a ideii lui Henry Ford: luăm o problemă, o spargem în probleme seriale mai mici și punem entități separate să lucreze la fiecare (sub)problemă. Astfel soluția subproblemei 0 e transmisă către entitatea care se ocupă de subproblema 1, ieșirea lui 1 către 2 și tot așa. Avantajul acestei soluții e că dacă procesorul are două instrucțiuni consecutive de executat, pipeline-ul va putea executa – în cazul ideal – porțiuni din ele (de exemplu preluarea unei variabile din memorie și o adunare) în paralel.
Abordarea asta aduce cu ea și multe complicații în care nu vom intra aici, însă e interesant aspectul că dacă două instrucțiuni (consecutive sau nu) nu depind între ele, acestea pot ajunge să fie executate într-o ordine aleatoare. Drept urmare dacă există două benzi de asamblare distincte, procesorul va putea planifica instrucțiuni după o politică prestabilită. Ca fapt divers execuția out-of-order n-a fost inventată de Intel, ci de o (fostă) companie care avea în componență și un român, dar în fine, astea-s deja detalii. (mai mult…)
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…)