norii gri ai internetului

duminică, 6 nov. 2011, 16:03

Se face, printr-o pură întâmplare, că utilizez o parte din produsele Google zilnic. Și dacă Chromium îmi satisface cam toate nevoile în ceea ce privește navigatoarele web, atunci site-uri (sau așa-zise „aplicații web”) precum Google Mail, Google Reader sau Google Calendar îmi stau întotdeauna deschise în sesiunea de browser, iar Google Docs se dovedește a fi util la a stoca documente online sau la a colabora spre conceperea acestora.

Se observă totuși că acea pură întâmplare nu este deloc una pură, sau poate nu e deloc o întâmplare: Google au avut o bună perioadă de timp reputația unei companii care pun preț pe inginerie. O bună parte din produsele lor au fost și sunt încă rapide, fiabile – câteva din cele mai fiabile aplicații web aparțin Google – și lasă deoparte brizbrizurile în favoarea unei funcționalități simple și la obiect [i].

Cu toate astea, până și Google (sau poate exact ei mai mult decât alții) au demonstrat în ultimele câteva luni că utilizatorii nu pot avea încredere în deciziile privind produsele web ale companiei. Spre exemplu, în Mai anul ăsta Google au închis API-ul pentru Google Translate, mișcare urmată de o curățenie de toamnă în septembrie: o serie de aplicații Google au fost trimise la pensie, cel mai probabil pentru că proiectele respective nu aveau efectiv nici un viitor și nu mai erau folosite de multă lume – deloc alarmant, dacă facem abstracție de utilizatorii deranjați de toată chestia. (mai mult…)

  1. Să dăm un exemplu: suportul pentru utilizarea aplicației folosind tastatura.  Până și unele aplicații desktop mi se par a avea un set de scurtături cel puțin neintuitive, dacă nu lipsă. Gmail, Calendar și Docs vin însă cu configurații de chei consistente de la o aplicație la alta, care fac într-adevăr utilizarea interfeței mai eficientă. E posibil să fiu un pic subiectiv din acest punct de vedere, fiindcă combinațiile de chei sunt destul de vim-like. []

programarea la nivelul liceului: o critică

vineri, 21 oct. 2011, 23:15

O bună parte din programatori – bună parte în care, recunosc, m-am aflat o bună vreme – consideră Pascal și C [i] ca fiind limbaje nepotrivite pentru educația la nivel preuniversitar. Primul e considerat caduc, în sensul că nu e folosit nicăieri, iar al doilea e privit drept prea complicat; două extreme, una a inutilității, iar cealaltă a așa-zisei dificultăți, în ciuda faptului că C-ul e unul din cele mai căutate limbaje din industria calculatoarelor în ultimii douăzeci de ani pe puțin.

Sunt în mare parte de acord cu argumentul că C-ul e un limbaj un pic complicat pentru liceanul mediu, deși nu aș atribui această problemă limbajului în sine. De asemenea, sunt de acord cu faptul că a ieși cu Pascal sau Fox Pro din liceu nu îți dă absolut nici o experiență practică – deși consider că în primul rând nu ăsta este scopul, iar în al doilea rând o bună parte din elevi oricum o să uite limbajul la scurt timp după terminarea liceului.

Aș spune că deși în liceu nu se predă tocmai știința calculatoarelor, ci doar informatică, spusele unei figuri importante din Computer Science rămân valide: e greu să explici calculatoarele la nivel teoretic, deoarece se leagă de o întreagă serie de concepte non-triviale, cum ar fi calculabilitatea, terminarea și așa mai departe; concepte pe care un elev inteligent ar cam trebui să le înțeleagă la un nivel pur intuitiv. Reușim astfel să punem degetul pe o primă problemă: nu limbajul e dificil/inutil, ci conceptul din spate (care sunt mai multe) e cel problematic. (mai mult…)

  1. De fapt în liceu se predă un C îmbogățit cu câteva elemente din C++, dar care rămâne la bază tot C. []

despre hackeri

duminică, 16 oct. 2011, 15:48

Cuvântul „hacker” are o conotație haiducească în concepția românului consumator de televiziune și dă într-o tentă ușor paranoică în mintea americanului mediu. Asociat cu lumea calculatoarelor, hacker-ul devine acea persoană care „sparge” – deși, pentru a fi cinstiți, putem spune că ăla care sparge e mai degrabă numit „cracker” -, fraudează și în general face rău calculatoarelor sau folosind calculatoarele. Cumva, într-un mod extrem de misterios, eticheta de hacker a ajuns să fie aplicată persoanelor fără cine știe ce abilități tehnice, dar care dau de butoane pentru a face tot felul de tâmpenii, nici ei neștiind prea bine ce – mă refer la așa-zișii „script kiddies”.

Așa se face că subsemnatul s-a hotărât să clarifice o dată și pentru totdeauna ce-i ăla un hacker. Și bineînțeles că vom porni de la rădăcina cuvântului, care este cuvântul „hack”. Cea mai veche folosire publică a acestui cuvânt cunoscută de mine datează cândva la jumătatea anilor 1980, în cadrul unei universități olandeze, în contextul unui banal joc pe calculator [i]. O definiție propriu-zisă este legată oarecum de domeniul ingineriei software și se referă la o bucată de cod care e neelegantă din punctul de vedere al principiilor de proiectare, însă rezolvă foarte bine problema [ii]. (mai mult…)

  1. De altfel, jocul hack a dus, în urma distribuției pe Usenet, la apariția lui Nethack. Acesta din urmă a făcut istorie, toate jocurile de tipul Hack & Slash plecând din acest punct. []
  2. Nucleul Linux este un exemplu de program constituit în mare parte din hack-uri, din care unele au și ajuns probabil standarde de facto în industrie. []

recunoașterea vorbitului, starea actuală

joi, 15 sept. 2011, 21:53

Înainte să intrăm în pâine, să definim clar subiectul problemei. Există două mari direcții în domeniul interdisciplinar analiza sunetului – interacțiunea om-mașină – inteligență artificială. Prima direcție se referă la recunoașterea vocii, în timp ce a doua constă în recunoașterea formelor sunetului, în special a vorbitului. În primul caz, analizăm mai degrabă caracteristici sonore precum timbrul sau „culoarea”, prin metode cum ar fi analiza Fourier.

Al doilea caz vine cumva în analogie cu recunoașterea formelor dintr-o imagine și se referă la învățarea automată a unor caracteristici de nivel mai înalt precum foneme, melodii, genuri muzicale și așa mai departe. Astfel, în realitate ce am zis eu despre cazul anterior este oarecum greșit, fiindcă aspecte precum inflexiunile vocii sau accentul pot fi în fapt utile pentru a recunoaște un vorbitor.

În fine, pe noi ne interesează să analizăm cum a evoluat până în prezent recunoașterea vorbitului, tehnologie care are un impact mare asupra felului în care omul interacționează cu mediul artificial din jurul său. La urma urmei, cine nu și-ar dori să dialogheze verbal cu calculatorul personal în limbaj natural, în stilul Star Trek? Să nu mai vorbim de aplicațiile unde acest aspect e în mod evident necesar, precum interfațarea cu persoane care nu pot să vadă. (mai mult…)

viitorul browser-ului web

marți, 23 aug. 2011, 22:53

Putem începe acest veritabil dat în bobi prin reluarea unui exercițiu pe care l-am făcut și într-un articol anterior. Să stăm pentru un moment-două și să ne întrebăm pentru ce folosim noi browser-ul zilnic. Eu de exemplu îl folosesc pentru citit știri, comic-uri și blog-uri, gestionat calendarul și lista de chestii de făcut, citit mail-urile, privit clipuri video din diverse domenii – fie ele conferințe, cursuri, seminarii sau desene animate, filme, muzică -, ascultat muzică din când în când, citit cărți destul de rar – pe astea prefer în general să le păstrez offline -, comunicat cu persoane de la care am ce învăța și altele.

Mai pe scurt, o bună parte din activitățile mele zilnice au loc în cadrul browser-ului. Nu se pretează în general la browser problemele care necesită performanță, precum compilatul codului sau jocurile, acestea din urmă reprezentând o excepție foarte rară, având în vedere că majoritatea sunt dezvoltate folosind abominația numită Adobe Flash. Nu îmi gestionez fișierele locale (fotografii, text, muzică) folosind browser-ul, dat fiind faptul că o bună parte din ele sunt proprietate personală. În rest… da, articolul de față este scris în browser.

Astfel, putem comite sacrilegiul de a afirma că browser-ul web este într-un anumit sens echivalentul unui sistem de operare. Într-un anumit sens, deoarece a afirma că browser-ul este aceeași chestie cu un SO e ca și cum am spune că HTML e limbaj de programare sau că rolul strungarului e de a proiecta strunguri. Doar nucleul sistemului de operare e o componentă software ce nu poate fi înțeleasă complet de o singură minte, iar dacă nu mă credeți, vă invit să citiți sursele Linux-ului. (mai mult…)