vineri, 16 noiembrie 2012

Noţiuni elementare de matematică pentru programatori (2) – Tipul logic

În matematică, nu e deloc simplu de definit conceptul de propoziţie. Putem spune că o propoziţie este o expresie verbală a unei judecăţi (adică un enunţ) despre care se poate spune dacă este adevărată sau falsă. Intrând puţin în metateorie, putem să ne întrebăm: bine, bine, dar ceea ce  „putem spune” e, oare, adevărat, sau fals? Şi, mai ales, are sens?

Dar, să lăsă, lucrurile acestea sterile şi să ne concentrăm asupra esenţialului. Iar acesta este că, în logica noastră clasică, de sorginte aristotelică, există doar două valori de adevăr, cele pe care le-am enunţat, şi orice enunţ – orice enunţ decidabil – este, fie adevărat, fie fals. Cale de mijloc nu există. Acceptăm, aşadar, următoarele două principii:

Principiul terţului exclus: O propoziţie este sau adevărată, sau falsă, altă variantă nu există.
Principiul noncontradicţiei: O propoziţie nu poate fi în acelaşi timp şi adevărată şi falsă.

Propoziţiile sunt de două feluri: simple (atomice, elementare), şi compuse. Propoziţiile simple sunt de forma subiect+predicat (de data asta, din punct de vedere lingvistic).

Exemple:
S: Soarele + P: străluceşte (acum).
S: 2 + P: e un număr natural.
S: Capitala României + P: este oraşul Bucureşti.
Propoziţiile compuse au în componenţa lor, cuvinte precum „şi”, „sau”, „deoarece”, „prin urmare”, „dacă”, şi aşa mai departe. Şi, obligatoriu, au mai multe predicate, şi mai multe subiecte (chiar dacă acest lucru nu este explicit).

Exemplu: „Toţi elevii (din clasa ...) au promovat” pare o propoziţie simplă (şi, uneori, poate fi tratată ca atare), dar, de fapt, este o formă condensată a propoziţiei compuse „Elevul 1 a promovat, şi elevul 2 a promovat, şi ...”.

În fapt, această distincţie nu este prea importantă în practică.Esenţial este faptul că putem combina două sau mai multe propoziţii pentru a obţine o altă propoziţie, şi facem acest lucru cu ajutorul operatorilor (conectorilor, functorilor) logici

Operatorul
Simbol (aici)
Numele operaţiei
    Non
Negaţia
      Şi
and
Conjuncţia
    Sau
or
Disjuncţia
Ori … ori
xor
Sau exclusiv
Dacă ... atunci
=>
Implicaţia
Dacă şi numai dacă
<=>
Echivalenţa

Dintre aceşti operatori numai primii patru sunt utilizaţi, în mod curent, în majoritatea limbajelor de programare.

Primul dintre cei şase operatori este unar (se aplică doar unei propoziţii), pe câtă vreme ceilalţi sunt binari (se aplică mai multor propoziţii). Modul cum funcţionează aceşti operatori este prezentat în tabelul de mai jos:

p
q
⌐p
p and q
p or q
p xor q
p => q
p<=>q
A
A
F
A
A
F
A
A
A
F
F
F
A
A
F
F
F
A
A
F
A
A
A
F
F
F
A
F
F
F
A
A

O propoziţie compusă adevărată tot timpul, indiferent de valoarea de adevăr a propoziţiilor componente, se numeşte tautologie. Un exemplu banal de tautologie este reprezentat de p or ⌐p (operatorul non are prioritate), care nu e altceva decât ilustrarea principiului terţului exclus !

 O inferenţă logică este o metodă de a obţine noi propoziţii adevărate din propoziţii despre care s-a stabilit deja că sunt adevărate. Orice tautologie conduce la o regulă de inferenţă.

Inferenţele sunt importante în informatică atunci când lucrăm cu sisteme expert, sisteme inteligente, când vizăm domenii de inteligenţă artificială precum demonstrarea automată a teoremelor etc.

Tipul logic (boolean)

Este un tip de date implementat, practic, în majoritatea limbajelor de programare. Datele de tip logic pot avea una din cele două valori: adevărat (true) sau fals (false). Sunt implementaţi de asemenea, şi operatorii mai sus-amintiţi (mai puţin ultimii doi).

Principalele probleme care pot apărea în legătură cu acest tip de date sunt reprezentate de conversia tipurilor. Sau, de întrebarea: ce este o dată de acest tip?

Sunt limbaje (de ex. C, C++, în specificaţiile originale) în care tipul logic nu era definit, altele (variantele moderne ale aceloraşi limbaje) în care întregii 0 şi 1 sunt trataţi ca fiind echivalenţi cu false şi true, fără niciun cast (conversie) explicit.   În altele (Java) acest lucru nu este permis, fiind necesară întodeauna o convertire explicită. În fine, în altele (PHP), practic, orice poate fi interpretat ca fiind de tip logic, fără niciun cast.

Observăm că, în unele cazuri, putem evalua o propoziţie compuse, fără a evalua ambele (în cazul în care sunt două) propoziţii componente. Bunăoară, propoziţia compusă p sau q, este adevărată dacă propoziţia p este adevărată, indiferent de valoarea propoziţiei q.

Cum în informatică, timpul de execuţie este, întotdeauna o resursă critică, numeroase limbaje de programare implementează câte doi operatori pentru operaţiile de sau şi şi, unul din ei – cel numit leneş (lazy) – realizând, dacă este cazul, evaluarea unei date logice compuse, fără a evalua ambii operanzi. Acest lucru poate fi benefic, dar poate genera şi unele efecte pe care nu le dorim, dacă avem nevoie de evaluarea şia celui de-al doilea operand, în toate situaţiile posibile. 

Ţinând cont de cele de mai sus, şi de faptul că reprezentarea internă a unei date de orice tip este, de fapt, o secvenţă de biţi, sau de 0 şi 1, unele limbaje implementează operatori logici pe biţi, care operează asupra reprezentărilor binare ale unor altor tipuri de date (de exemplu întregi) şi returnează un rezultat de acelaşi tip. Aceşti operatori pot crea numeroase confuzii în rândul programatorilor începători, şi de aceea, mulţi îi evită, dar, la fel de bine pot reprezenta un instrument puternic de lucru atunci când cunoaştem şi astfel de aspecte.
 
O altă problemă vizează instrucţiunile de decizie şi ciclare, care funcţionează pe baza evaluării unei date de tip logic. Dacă acea dată este, de fapt, o tautologie, atunci instrucţiunile respective se vor efectua, probabil, altfel decât am dorit, de exemplu se va intra într-un ciclu infinit, iar astfel de greşeli logice nu vor fi semnalate niciodată de compilator/interpretor. 

Sigur, există posibilitatea ca expresiile logice foarte complicate să poată fi analizate mai uşor prin transformarea lor în forme normale, dar, mult mai sigură şi uşoară este urmarea recomandării folosirii unor date logice cât mai simple, şi evitarea oricăror artificii periculoase.

Un politician respectabil

Pentru a putea funcţiona, orice organism social trebuie să se bazeze pe respectarea unor principii simple si sănătoase, cum ar fi solidaritatea activă a membrilor săi, promovarea dreptăţii şi echităţii, sprijin real acordat membrilor aflaţi în dificultate, încurajarea şi promovarea activismului, şi altele. Dacă unul sau mai multe din aceste principii este sistematic ignorat, batjocorit, pus sub semnul întrebării, rezultatul este ceea ce vedem peste tot în jurul nostru: multă sărăcie, disperare, umilinţă, nefericire. Şi multă, multă ură.

José Alberto "Pepe" Mujica Cordano este, desigur, un excentric. Este preşedintele uneia dintre cele mai avansate şi civilizate ţări de pe continentul sud-american, Uruguay. Conform datelor Transparency International, este una din ţările cu cele mai bune politici şi condiţii de muncă de pe continent, fiind, de asemenea, una dintre cele mai puţin corupte ţări din lume. Din multe puncte de vedere, Uruguay-ul este o ţară mult mai „europeană” decât însăşi Uniunea Europeană. De altfel, cca. 95% dintre locuitori sunt descendenţi ai imigranţilor de pe bătrânul continent. Uruguay-ul este cunoscută, de asemenea ca o ţară cu standarde educaţionale înalte şi servicii sociale dezvoltate, cel puţin prin raportare la vecinii săi de continent. 



În ceea ce priveşte dinamica economică, poate cel mai bine ar fi să citez o declaraţie relativ recentă a Fondului Monetar Internaţional. Ştiţi, tipii ăia care zic: „tăiaţi pensii, tăiaţi salarii” ... da, da, ăia.

Creşterea economică a Uruguay-ului a generat creşteri semnificative ale bunăstării. Venitul pe cap de locuitor, calculat în termeni de putere de cumpărare, s-a dublat în ultimul deceniu, şomajul a scăzut la un minim record, iar indicatorii sociali s-au îmbunătăţit în continuare.  Factorii-cheie care susțin această excelentă performanță excelentă sunt:  reformele politice semnificative, politicile macroeconomice prudente, politicile sociale puternice, și, în general, un mediu de susținere externă.
Deși scenariul de bază este, în continuare, acela al unei creșteri economice robuste, Uruguay ia în considerare faptul că perspectivele pe termen scurt vor fi fi modelate de evoluțiile perspectivelor globale.  Estimarea noastră este că produsul intern brut real (PIB) îşi va încetini creșterea până la 6 la sută în 2011, și chiar până la 4 la sută pe termen mediu.  Consumul privat va rămâne principalul motor de creștere economică, dar va avea o creştere mai redusă.  Mari investiții străine directe  vor susține, în continuare, creșterea economică în 2012-13.  Exporturile (...) nu vor mai fi la fel de dinamice ca și în ultimii ani, din cauza unei încetiniri economice a partenerilor comerciali-cheie ai Uruguay-ului.(...)
Sectorul financiar rămâne solid și robust, iar dezvoltarea acestuia sprijină investițiile pe termen lung și creșterea economică.  Băncile sunt lichide, bine capitalizate, cu puţine credite neperformante și în mare parte finanțate din resurse locale (...).
Perspectivele de creștere Uruguay sunt, în general, luminoase, dar aducerea lor la îndeplinire  necesită în continuare atenţie la creșterea productivității și gestionarea resurselor.
(declaraţia aparţine misiunii FMI conduse de Ulric von Erickson Allmen şi a fost făcută pe 4 noiembrie 2011).
Da ...

Ca preşedinte al Uruguay-ului, Mujica şi-a atras porecla de „cel mai sărac preşedinte din lume”. Şi asta fiindcă, deşi ales preşedinte al unei ţări care poate fi luată ca model de dezvoltare şi prosperitate economică, această, să-i zicem, întâmplare, nu i-a modificat cu nimic stilul de viaţă anterior. Din cei circa 250.000 de pesos uruguayeni  ( 12.200 $) pe care îi primeşte lunar de la locul său de muncă, circa 90% îi donează unor ONG-uri locale şi instituţii de caritate, iar restul îi foloseşte pentru a duce o viaţă simplă si austeră. El locuieşte undeva la ţară, într-o localitate numită Rincón Cerro, într-o casă modestă, în apropierea capitalei, şi continuă să-şi lucreze singur pământul micii ferme al cărei proprietar este. Cu nu locuieşte, practic, în locuinţa oficială care i-a fost pusă la dispoziţie de către stat, în calitate de preşedinte al statului, Mujica a pus, mai departe, această locuinţă la dispoziţia unor organizaţii care se oferă servicii sociale pentru persoanele fără adăpost. Şi, cum în vara trecută au fost câteva zile cu adevărat geroase (fiind în emisfera sudică, anotimpurile sunt inversate faţă de noi), reşedinţa prezidenţială a fost, efectiv, folosită pentru a oferi cazare unor astfel de persoane! Mmm ... vă puteţi imagina vreun politician român într-o asemenea situaţie? Şi ... să nu confundăm planurile, Mujica nu era în campanie, şi nu participa la nicio serbare câmpenească! Dealtfel, deşi poporul său e unul vesel şi petrecăreţ, preşedintele e, mai degrabă, rezervat, în astfel de chestiuni. Fiind vegetarian, singurele animale pe care le creşte (libere) sunt, de fapt, nişte câini. 


Cu câteva luni în urmă, în timp ce mergea „la oraş” pentru a-şi cumpăra un capac de toaletă (?!) a fost recunoscut de jucătorii unei echipe locale de divizie inferioară, Huracán del Paso de la Arena, care i-au solicitat câteva cuvinte de îmbărbătare înaintea unui meci important. Mujina a acceptat, a ţinut un scurt discurs motivaţional, s-a fotografiat cu toţi jucătorii, şi a plecat repede acasă, deoarece trebuia să-şi şi monteze capacul pe care tocmai îl cumpărase.

La capitolul „avere”, pe numele preşedintelui este înscris doar un autoturism VW cu an de fabricaţie 1987, în timp ce ferma aparţine soţiei sale. Nu are niciun fel de conturi în bănci, dar nici datorii.

Bun, s-ar putea crede, pe bună dreptate, că acest stil de viaţă care poate fi caracterizat şi ca „excentric” este, de fapt, ostentativ, că preşedintele vrea să transmită o anumită imagine publică. În legătură cu acest aspect, Mujica a declarat, în repetate rânduri, că, de fapt, acesta este stilul său de viaţă, aşa îi place să trăiască, şi că nu e vorba de nicio umilinţă! Pur şi simplu, alege ceea ce îi place cel mai mult, ceea ce îi convine!

În fapt, Mujica nu a avut şi nu are nicio problemă de imagine. La cei peste 77 de ani ai săi, ambiţiile economice, sau politice, sau de orice altă natură, se vor mai fi domolit, lăsând loc unei adevărate înţelepciuni a senectuţii. Şi, da, când este vorba să-şi afirme părerile, opiniile, valorile în care crede cu adevărat, preşedintele nu are nicio problemă în a face acest lucru, chiar dacă acest lucru nu este întotdeauna apreciat de concetăţenii săi. Sau, mă rog, de o majoritate consistentă. Pentru că da, preşedintele are valori pe care simte că trebuie să le apere. Astfel, într-o ţară predominant catolică, şi pe un continent cu foarte multe excese religioase, Mujica este şi se declară ateu!  José Alberto "Pepe" Mujica Cordano este primul preşedinte de ţară latino-american care s-a autodeclarat, în mod deschis, şi fără niciun echivoc, ateu. Primul şi, deocamdată, singurul. Da, da, fiindcă până şi „tovarăşul” Castro, cel care, întreaga sa viaţă s-a pus „în beţe” cu cea mai mare putere mondială, nu a avut niciodată curajul de a merge până la capăt, vorbind, în schimb, de „perfecta coerenţă dintre gândirea creştină şi cea revoluţionară” ... pam, pam.

Cred că Mujica este un politician de respectat. Şi de admirat. Unul dintre puţinii care există în lume. 
 
Mmm ... ceva păreri? Comentarii? Sau, poate mai bine să mergem să pupem nişte moaşte, că s-o-ndura bunul Dumnezeu şi de noi ... şi-ntr-o zi o să ne scoată şi din criză ... o să vedeţi.