C strings

Pregătesc un scurt material despre noua unitate informaţională. Pentru că în ziua de azi nu mai vorbim despre bit, byte sau octet. Vorbim despre strings, despre conţinut, despre felul cum tot este sau poate fi string.

Reprezentarea informaţiei a trecut de la nevoia de a ascunde totul într-un format cît mai compact şi mai economicos posibil. Nu se mai poate vorbi de o necesitate de a ascunde totul în spatele unei semantici minimaliste. Nu mai vrem să folosim un bit pentru o valoare “adevărat/fals” ci vrem să spunem <value>false</value>. De ce?

În primul rînd pentru că nu mai avem nevoie de atît de mare economie la spaţiu. Se pot face jocuri geniale în numai 48K; asta nu înseamnă noi chiar vrem să ne restrîngem la atît. Pe sistemele moderne nici măcar nu mai e un avantaj să fii concis: să citeşti un bit sau un byte este semnificativ MAI LENT decît să citeşti 64 de biţi. Iar prezentul şi viitorul este pe (cel puţin) 64 de biţi, în ciuda faptului că Adobe crede că platforma Flash ar trebui să fie numai pe 32, nefiind capabili să producă încă un player decent de 64 biţi. Despre treaba asta însă putem să discutăm altă dată.

În al doilea rînd, vrem să fim mai expliciţi pentru că editarea informaţiei şi înţelegerea ei trebuie să fie disponibilă utilizatorilor umani. În ciuda previziunilor cyberpunk, calculatoarele sunt construite să ne slujească, nu să le slujim noi.

Asta nu înseamnă că suntem contra optimizărilor. Vrem algoritmi de compresie mai buni, şi putem să îi facem pe maşini mai puternice, mai rapide şi cu mai multe procesoare. Nu înseamnă că nu vrem să stocăm un bit acolo unde avem nevoie să salvăm spaţiu. Doar că această economie nu mai e necesară tot timpul, ba mai mult, e necesară foarte rar. Chiar dacă JPEG-ul este formatul predilect pentru poze, curînd o să auzim din ce în ce mai despre SVG, care nu e nimic altceva decît un XML de descriere (ceea ce înseamnă că pentru a edita o poză poţi folosi un simplu editor de text).

Mai mult, înţelegerea modului în care lucrează un calculator cu memoria se aplică cel mai bine la problemele string-urilor. Realocare? Diferenţele între lungimea unui şir şi numărul lui de caractere? Cum citeşti un XML?

Pregătesc acest text de ceva vreme, dar recunosc că nu am nimic pornit. Probabil săptămîna care vine o să pun primele cuvinte pe ‘hîrtie’ (fişier LaTeX, de fapt). Un text despre string-uri, despre erori clasice în programarea şi folosirea string-urilor, aplicate în mama tuturor limbajelor, C, şi în C++. Despre de ce e nevoie de atîtea clase de string şi de ce fiecare bibliotecă de utilities defineşte o clasă string (incompatibilă cu toate celelalte de pe lumea asta)… În textul ăsta.

Dacă aveţi vreo idee despre ce alte subiecte să abordez, aştept sugestii.

Comments

C strings — 5 Comments

  1. Mi se pare cam forţată compararea SVG (vectorial) cu JPEG (bitmap).

    Sugestie de subiect: expresiile regulate. Nu ştiu cât de mult le folosiţi voi ăştia „old school” :D, dar în limbajele dinamice sunt briceagul elveţian când e vorba de stringuri.

  2. Poate comparaţia e un pic forţată, dar direcţia e clară. Acolo unde e posibil se foloseşte text. Nu înseamnă că H264 va fi format XML, şi nici JPEG/MPEG nu mă aştept să fie format human-readable. Asta nu înseamnă că 90% din tehnologiile care o să vină o să fie human readable, în mare parte datorită existenţei XML.
    Mă gîndeam ca într-adevăr să intru şi în limbaje mai dinamice – dar acolo sunt prea multe ogrăzi şi nu vreau să stau să disec tipurile de expresii regulate pe diversele limbaje (POSIX basic RE, POSIX extended RE, Perl/derivatives, etc.). Dar există ceva suport şi în C/C++, şi propunerea ta e excelentă, o să scriu şi despre asta.

  3. Ma rog, daca vrei sa ridici in slavi formatele OpenDoc sau OOXML, nu are sens… Raposatul WordPerfect facea asta inaintea lor. Tehnologiile astea apar si mor (vezi VRML), dar daca nu e cineva in spate sa le promoveze, nu au nici o sansa.

    PS: Sa nu-mi spui ca dupa doi ani tot nu poti rula flash-ul pe 64 de biti !
    PS2: Eu mai mult m-as plange de Java. Au release pe 64 de biti, dar plugin nu !

  4. Hai nu mai spune, cine ti-a zis ca nspluginwrapperul suporta pluginul de Java ? Efectiv, nu exista workaround pentru Java, trebuie sa folosesti un browser de 32bit. Pe cand flash-ul merge foaaaarte bine cu el.

    PS: Spor la noua Teorie !
    PS2: Happy Birthday !

  5. Recunosc, nu mi-am pus problema. Java nu mi se pare aşa importantă în browser. Nu cred că am pe nicăieri instalat plugin-ul de java 🙂
    Merci de urare 🙂