the sandman

sâmbătă, 24 nov. 2012, 18:33

The Sandman este o serie de benzi desenate ale căror povești au fost scrise de către Neil Gaiman, fiind în același timp un așa-zis „graphic novel”, adică un roman concretizat sub forma unor comic-uri. Seria se întinde pe zece volume publicate într-o perioadă de șapte ani, între 1989 și 1996. Ca orice bandă desenată, The Sandman are de fapt în spate o echipă întreagă de oameni, de la desenator de schițe la ilustrator și „inker”. Numărul oamenilor care au participat de-a lungul timpului la realizarea comic-ului e prea mare pentru a fi menționat aici, lista întreagă fiind prezentă pe Wikipedia.

Universul Sandman este considerat a fi un subset al universului DC, mai exact o parte a ceea ce compania DC Comics numește Vertigo. Nefiind un cunoscător al universului (sau al oricărui univers de benzi desenate), mi-a fost pe parcurs de multe ori dificil să disting între elementele specifice DC și cele introduse de Gaiman. Cert e că un fel de motto al cadrului benzilor The Sandman ar putea fi considerat cel din opera The Tempest a lui Shakespeare, mai exact următorul pasaj:

[…] We are such stuff
As dreams are made on, and our little life
Is rounded with a sleep. (mai mult…)

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

duminică, 18 nov. 2012, 14:56

Am pus până acum bazele unui simulator de automate celulare și apoi am ajuns la o implementare funcțională conform unor specificații. Pe scurt, am obținut o mașinărie capabilă de a primi la intrare un șir de celule „goale” sau „umplute” (fiecare), prelucrându-l inductiv și obținând la fiecare pas de inducție un alt șir de celule cu aceleași proprietăți. Zisa mașinărie nu prelucrează celulele arbitrar, ci pe baza unui set de reguli care iau în calcul valoarea celulei și a vecinilor direcți, stabiliți după ordinea din șir. Putem privi șirul de șiruri rezultat fie ca pe o secvență de evenimente, fie ca pe un „covor” care are pe prima linie primul șir de celule, pe a doua șirul următor și așa mai departe.

Uneltele folosite până acum ne-au permis să vizualizăm datele doar în cel de-al doilea mod. Exemplele relevă astfel șabloane fractale precum cel al triunghiului Sierpinski, imagini regulate sau care se autoreglează „în jos”, sau dimpotrivă, reprezentări profund neregulate [i] care aduc a „randomness”. Acest al doilea mod de vizualizare oferă deci o privire sintetică asupra evoluției unui automat celular elementar oarecare.

Putem însă la fel de bine să folosim Haskell și unele din bibliotecile grafice avute la dispoziție pentru a vizualiza rezultatele în primul mod. Având la dispoziție o listă de stări, deci o listă de liste de celule, putem afișa o stare sub forma unui cadru într-o animație, extinzând astfel evoluția pe axa timpului. Propun astfel ca o celulă să fie afișată sub forma unui „petic” de 20 x 20 pixeli dintr-o imagine, după cum urmează: o celulă având valoarea E va fi reprezentată printr-un pătrat alb, în timp ce o celulă F va avea asociat un pătrat umplut cu negru. „Peticele” care formează o stare vor fi concatenate de la stânga la dreapta într-o imagine/cadru cu înălțimea 20 și lățimea 20 x lungimea șirului. (mai mult…)

  1. Studiul regularității automatelor celulare elementare plecând de la stări inițiale aleatoare a dus la împărțirea acestora în patru clase distincte. E demn de menționat și faptul că regularitatea de un anumit fel și interacțiunea între celule fac ca anumite automate celulare să fie echivalente computațional cu o mașină Turing. []

un argument împotriva închipuitei fragmentări a ecosistemului android

sâmbătă, 17 nov. 2012, 12:35

Acest articol poate fi considerat o prelungire a breviarului istoric ARM, în mare pentru că ilustrează cu mai multe amănunte implicațiile pe care le aduce varietatea dispozitivelor și platformelor bazate pe arhitectura ARM. După cum bine știm deja, problemele software-ului se mapează de multe ori unu la unu pe cele ale hardware-ului de dedesubt, motiv pentru care argumentul va fi extins la proiectul care face cel mai bine uz de această varietate, și anume sistemul de operare Android [i].

Zisul argument vine împotriva tuturor gurilor rele care susțin sus și tare că „Android e un mediu fragmentat”, spre deosebire de iOS-ul de la Apple care nu este și nici nu are cum să fie, dat fiind că vine într-o unică varietate pe o unică platformă hardware (plus minus una-două), bazată tot pe ARM. Cititorul se poate lămuri în legătură cu problema printr-o căutare pe Google după „android fragmentation”, care întoarce literalmente sute de rezultate relevante. Sigur, așa-zisa fragmentare s-ar putea să fi fost o problemă pe versiunile 2.x de Android [ii], însă clar nu se mai poate vorbi despre așa ceva la nivelul Android 4.x, pentru că vedeți în continuare. (mai mult…)

  1. În mod normal câștigătorul ar trebui să fie mediul GNU/Linux, care însă consider că are mari lacune la nivelul portării interfețelor cu utilizatorul și a altor aplicații posibil dependente de arhitectură. []
  2. Care într-un mod ironic acoperă cea mai mare parte a dispozitivelor mobile cu Android de pe piață la ora actuală. Chestia o să devină istorie într-un timp foarte scurt, dacă nu luăm în calcul chinezăriile foarte ieftine, ci doar pe cele suficient de fiabile. []

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

duminică, 4 nov. 2012, 14:17

Data trecută am discutat câteva aspecte generale legate de automatele celulare și am implementat o funcție care va sta la baza implementării zisului simulator. Aceasta se numește nextCell și întoarce valoarea unei celule după un pas în funcție de valoarea sa și de cea a vecinilor, și în primul rând de numărul care specifică pe scurt regulile de producție ale automatului elementar. Să punem din nou pe foaie signatura funcției:

nextCell :: Elementary -> (Cell, Cell, Cell) -> Cell

Mai departe dorim să extindem această funcționalitate la o așa-zisă „latice”, adică la un șir de celule, pe care noi îl vom reprezenta printr-o listă. Cu alte cuvinte vrem, cunoscând numărul automatului celular, să luăm pe rând fiecare celulă dintr-o listă dată împreună cu vecinii ei la momentul t și să obținem starea celulei la momentul t + 1. Implementarea acestei operații e un pic mai dificilă decât ar părea la o primă vedere, din cauza unor limitări cărora le sunt supuse listele ca model de reprezentare. Să explicăm pe scurt câteva din aceste limitări. (mai mult…)