despre înțeles: iadul abstractizării
luni, 4 iul. 2011, 17:10
Titlul nu este nici pe departe trântit la întâmplare. Dacă Dante a crezut de cuviință că un infern structurat pe straturi e mai potrivit (decât ce?), atunci probabil că undeva în alegorie își găsește locul și ideea abstractizării. Pentru că nu doar infernul este o abstractizare – bineînțeles, nu rămâne decât să ne întrebăm: abstractizarea cui? -, ci și abstractizarea poate fi în anumite cazuri un adevărat infern.
Spuneam, când m-am apucat să vorbesc despre semantică, că înțelesurile pot pune și vor pune mereu probleme utilizatorilor de limbaj. Mai mult, fiindcă vorbim aici despre limbă în întregimea sa, structura limbajului poate afecta înțelesul la nivel declarativ. Dacă extindem problema la nivelul unităților literare (adicătelea cel al textelor), atunci lucrurile se împut și mai rău, să nu mai vorbim despre faptul că populații independente au dezvoltat limbi separate, astfel că trecerea unei idei dintr-o limbă în alta îi alterează mai mult sau mai puțin (deseori „mai mult”) înțelesul. În contextul ăsta, lingvistica formală a lui Chomsky se dovedește a fi o unealtă esențială pentru așezarea lucrurilor în ordine, măcar așa, un pic. Chiar și așa, întrebarea care atârnă nesimțit în toate locurile publice este: cum reușim să abstractizăm corect o idee sau o colecție structurată de idei?
Firește, ar fi inutil să mă apuc eu aici să disec gramatici și să înșir reguli de producție. O idee mai bună, zic eu, ar fi să ilustrez problema printr-un exemplu practic la îndemâna cel puțin a unui absolvent de liceu. În plus, limbile de zi cu zi nu mi se par deloc o idee răsărită (din cauza ambiguităților lor inerente), astfel că voi face referire la acele limbi mult mai simple, care se leagă mult mai bine de toată varza formală: limbajele de programare.
Cu toate că non-informaticienii o să strâmbe din nas, chestia este în fapt foarte la modă, deoarece se ivesc la tot pasul discuții precum „limbajul X e mai tare decât limbajul Y” și „limbajul Z suge fudulii de maimuță”. De ce? Pentru că poate X abstractizează mai bine anumite concepte decât Y, iar Z a fost făcut de economiști. În plus, deși W este de o frumusețe neasemuită, oamenii se cam feresc să programeze în el; de ce? Păi pentru că e frumos, iar programatorii se ocupă în general de chestii urâte, pentru a face viața altora mai ușoară; sau pentru că aceiași programatori sunt peste măsură de leneși, cine mai știe.
Să luăm ca exemplu cazul paradigmei orientată pe obiecte. Impresia generală despre aceasta este că scalează la infinit: faci un obiect, a cărui mulțime o împăturești în alt obiect, peste care faci alt obiect legat de un alt obiect. Ideea conform căreia orice obiect poate fi spart în obiecte mai mici, sau invers, poate fi folosit pentru a construi obiecte oricât de mari, este universală, nu-i așa? Ei bine, nu, nu-i așa, drept dovadă stând unele limbaje care eșuează groaznic în unele probleme elementare, din cauza mecanismului de abstractizare. Hardware-ul, de exemplu, poate fi programat direct mult mai eficient de anumite limbaje, care nu fac decât să abstractizeze la nivel semantic registrele procesorului. Pe de altă parte, un limbaj funcțional se dovedește a fi în multe cazuri mult mai potrivit pentru dezvoltarea de algoritmi care sucesc gândirea pe toate părțile. Cu toate astea lumea nu folosește limbaje funcționale pe scară largă, chiar dacă uneori sunt mult mai „frumoase”. Vorba aia, și sanscrita e frumoasă și cu toate astea nu o mai vorbește prea multă lume.
Motiv pentru care unii lingviști s-au apucat să proiecteze limbaje de programare multi-paradigmă, adică limbaje care să conțină de toate. Echivalentul în limbaj natural e a încerca să te exprimi într-o limbă care cuprinde gramaticile englezei, japonezei și chinezei la un loc, deci o varză totală. Soluții? Păi, putem de exemplu interfața limbaje din paradigme diferite, împrumuta concepte sub forma unor „neologisme” (motivul pentru care există și limbaje funcționale care au implementat conceptul de pointer, nu neapărat la nivelul limbajului), chiar dacă munca pentru a asigura interoperabilitatea este mai mare. Sigur, ideea de limbaj multi-paradigmă nu este rea în sine, dar contează foarte mult până unde este dusă.
În fine, motorul semantic al oricărui limbaj de programare este sistemul său de tipuri. O expresie clară, concisă a unei probleme dintr-un domeniu anume nu poate fi găsită decât într-un limbaj care să își muleze bine conceptele semantice pe acea problemă, motiv pentru care nici nu există de fapt limbaje de programare „de uz general” în adevăratul sens al cuvântului. O încercare este aceea de a abstractiza cu un nivel peste tipuri, la nivel de „categorie”, fapt ce face totul mai algebric, deci mai frumos pentru matematicieni și mai greu de înțeles pentru programatorul mediu.
Oricum programatorul mediu își va da cu ciocanul peste mână indiferent de limbajul în care se exprimă – pentru că apropo, e greșită concepția conform căreia într-un limbaj poți programa mai corect decât în altul; un programator bun dezvoltă cu uneltele pe care le are la îndemână, oricare-s alea -, la fel cum românul mediu se va exprima prost în română din cauza faptului că în liceu a copiat de la colega de bancă ochelaristă și țâțoasă în loc să pună mâna pe niște literatură.
Comentariile sunt dezactivate.
Comments
[…] utilitate a impurităților sunt artificiale, iar lipsa purității nu face decât să accentueze iadul abstractizării. Cine mai știe. Spre exemplu, fructul galben plin de suc acru având mărimea aproximativă a […]
[…] fine, mai recent am atins problema semanticii și am ilustrat una din încurcăturile […]
[…] toate că mecanismul abstractizării se poate dovedi a fi o durere în proverbialul posterior în cazul unor construcții complexe cum […]
[…] și să formalizeze cunoașterea. E destul de greu de înțeles ce înseamnă asta, mai ales dacă limbajul nu e suficient de evoluat pentru a permite logici și semantici suficient de puternice [i]. Cert e că încă de la […]
[…] 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 […]