codul qr și game of life

duminică, 24 feb. 2013, 19:41

Așa-zisul cod QR reprezintă o metodă de codificare a informației digitale astfel încât aceasta să poată fi decodificată ulterior cu ușurință — rapid și fără erori — cu ajutorul unui senzor optic, e.g. o cameră foto. Nu-i cu nimic diferit conceptual de un cod de bare, având însă avantajul că admite o densitate a informației ceva mai ridicată. În particular, e mult mai ușoară stocarea unui șir de caractere ASCII sau Unicode sub forma QR decât cu ajutorul codurilor de bare clasice, cum ar fi EAN sau ce se mai găsește în mod normal pe etichetele produselor aflate în comerț.

Game of Life este un automat celular faimos, descoperit de către matematicianul John Horton Conway. Regulile automatului sunt oarecum intuitive, și în plus configurațiile inițiale pot duce la evoluții „haotice”, posibil utile pentru modelarea în domenii precum cel al biologiei, economiei sau fizicii — numele „Game of Life” nu e ales tocmai la întâmplare. O particularitate interesantă pentru calculatoare și teoria informației este aceea că unele din „structurile” simple din Game of Life pot fi folosite pentru a construi mașini Turing. Dincolo de asta, e greu de zis ce mai ascunde automatul cu pricina. (mai mult…)

să scriem împreună un simulator de automate celulare (i)

duminică, 14 oct. 2012, 12:06

Automatele celulare au reprezentat o noutate prin anii ’40-’60, la momentul descoperirii lor de către Ulan și von Neumann. În anii ’70-’80 conceptul a devenit iarăși un subiect de interes datorită cercetărilor (mai degrabă empirice) făcute de Stephen Wolfram și alții pentru a reprezenta și studia diverse trăznăi precum modele ale fizicii digitale sau ale vieții. În anii 1990-2010 descoperirile în cadrul domeniului merg într-un ritm lent, însă nu încetează a se ivi. Cu toate acestea automatele celulare rămân o unealtă educațională extrem de utilă, dată fiind puterea de reprezentare care stă la baza lor. Am arătat deja cum putem modela cu ajutorul acestora un fenomen comun prezent în natură și în mediile sociale, ne mai rămâne doar să punem în practică conceptele prezentate.

Pentru a putea atinge scopul articolului, acela de a construi un simulator de automate celulare, avem nevoie de unelte ajutătoare. Acestea pot fi după caz plăci de textolit, tranzistoare, lămpi, ansambluri hidraulice sau piese LEGO; va trebui însă să mă credeți pe cuvânt că cea mai simplă cale de a implementa un automat celular este scrierea unui program, orice astfel de mașinărie teoretică fiind echivalentă cu cel puțin un subset al unui automat Turing. Din motive în principal egoiste, dar și pentru că doresc să împing mintea cititorului într-un anumit șablon de gândire, aleg să scriu programul care simulează automate celulare în Haskell; nu în C, Python, Java, Ruby sau ce alte fetișuri mai au programatorii în ziua de astăzi, ci într-un limbaj funcțional, care poate transpune în mod natural concepte matematice elementare precum funcțiile în construcții care mai apoi vor rula pe calculator.

Există deci câteva motive pentru care merită să parcurgeți articolul de față și pe cele ce-i vor urma: (mai mult…)

modelul generativ al software-ului

sâmbătă, 25 aug. 2012, 17:44

Atenție, săriți, o dăm din nou în de-alea cu copyright. Deoarece comercianții de software nu mă ascultă și continuă să își aroge dreptul de proprietate asupra nimicului – ba mai mult, asupra ideilor de nimic – și datorită faptului că aceiași ziși comercianți și „producători de proprietate intelectuală” se afundă ca ultimele dobitoace în aceleași dificultăți de cel puțin douăzeci de ani încoace, vin spre a propune o soluție care le va rezolva odată pentru totdeauna problemele, introducând în același timp altele. Este vorba despre o idee diabolică, care poate schimba relația dintre software și forme și poate duce chiar la sfârșitul epocii de aur a calculatoarelor așa cum o cunoaștem.

Vă mărturisesc însă, dragi cititori – care sunteți, dacă sunteți -, că nu mă pot abține, îmi sună în minte o voce malefică care mă îndeamnă să pun pe foaia virtuală această idee, pentru că pot, iar dacă ar fi să se pună în aplicare pe scară largă modelul de mai jos mi-ar fi mult mai greu, sau cine știe, poate chiar aș ajunge în imposibilitatea de a transpune idei din mintea-mi înspre mediul virtual. Sincer vă zic deci că sper să rămânem din acest punct de vedere în obscuritate atât eu cât și blog-ul, cât și ideea mea absolut diabolică înscrisă aici. (mai mult…)

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…)

  1. 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. []

software-ul și formele

luni, 23 iul. 2012, 18:51

Being abstract is something profoundly different from being vague… The purpose of abstraction is not to be vague, but to create a new semantic level in which one can be absolutely precise.

Citatul îi aparține lui Edsger Dijkstra, o personalitate a lumii calculatoarelor înzestrată cu un umor deosebit de cinic, umor pe care acesta l-a exprimat cât se poate de bine în lucrările sale. De asemenea izul pasajului este oarecum ingineresc, fapt care pe mine nu mă va interesa mai deloc pe parcursul articolului.

Una din motivațiile care m-au determinat să meditez pe tema înțelesului și a iadului abstractizării a fost ideea de dificultate a comunicării, deși nu atât a comunicării în sine cât a exprimării chestiilor – adică a atomilor – în limbajul universal [i]. Premisa de la care am plecat atunci a fost aceea că oamenii se deosebesc din acest punct de vedere de celelalte animale prin faptul că pot abstractiza chestii, însă nu am definit prea bine ce înseamnă în general a abstractiza. (mai mult…)

  1. Problema comunicării e o problemă în sine – și cel puțin la fel de dificilă – care rezultă din existența mediului social, apropo de impactul societății asupra evoluției, inteligenței etc. Doresc însă să fac abstracție de aspectele astea deoarece nu le găsesc o relevanță în contextul de față. []