Omul are capacitatea
de a construi limbaje..."
WITTGENSTEIN
Limbajul informatic - o necunoscuta?
''Satul planetar'' - o provocare comunicationala
Trasaturile caracteristice societatii planetare a secolului XX au devenit truisme: accelerarea exponentiala a progresului tehnic, mutatiile ecologice, sociale, politice, estetice, au depasit tot ceea ce istoria civilizatiilor a cunoscut anterior. Cunoscutul viitorolog american Alvin Toffler a concentrat în tripticul conceptual tranzienta - noutate 12512u2014m - diversitate - esenta întregului ansamblu de fenomene amintit. Pe scurt, tranzienta, nepermanenta este expresia precipitarii ritmului schimbarilor în întreaga societate contemporana la toate nivelele si sub toate aspectele sale. Fenomenul îsi are radacinile în sfera tehnologica si în cea economica, de aici ea repercutându-se asupra tuturor celorlalte domenii ale vietii sociale. Ca urmare, structurile sociale si de productie care corespund fiecare unui anumit tip de activitate, tind sa se modifice, sa se reorganizeze rapid în functie de tehnologiile si obiectivele noi cu care sunt confruntate.
Schimbarile rapide în infrastructura societatii au, fireste, repercursiuni în toate celelalte sfere ale existentei sociale. Personalitatea umana trebuie sa faca fata acestui ritm al schimbarii, trebuie sa parcurga un foarte rapid proces de adaptare profesionala si chiar restructurare comportamentala.
Principal factor al acestei revolutii, calculatorul, este în acelasi timp si ''unealta'', ''ajutorul'' cel mai propice al omului pentru a face fata noilor provocari sociale. Ascensiunea spectaculara a informaticii dinamizata exponential de aparitia Internetului, patrunderea ei în mai toate spatiile existentei noastre sociale sI particulare, sta marturie acestui adevar. Integrarea masinii în formele elevate a muncii omului este motivata tocmai de faptul ca o face mai performanta, îi ridica nivelul cantitativ sI calitativ, adaptând-o astfel ritmurilor impuse de progresul contemporan.
Datorita calculatoarelor patrunse în sistemul mass-media, lumea a ajuns sa se masoare pentru fiecare dintre noi la scara globala. ''Satul planetar'' al lui McLuhan este aici si acum. Informatia explodeaza, iar noile mijoace de telecomunicare ce actioneaza în interiorul structurilor mediatice au facut tandari conceptele traditionale de spatiu si timp. Ele confera informatiei trei virtuti esentiale perfect sintetizate de termenii: plimorfism, ubicuitate, instantaneitate. Informatia este peste tot, ea comunica si se comunica. Îi putem raspunde la provocare doar urmându-i pasul, intrând în acest mozaic de limbaje, informatii si comunicare cu drept egal de a fi reprezentati.
Deci, calculatorul ne-a devenit (sau trebuie sa ne devina) familiar. Cei mai multi dintre noi stim sa comunicam între noi sau sa ne conectam la pulsul lumii cu ajutorul lui. Însa numai putini dintre noi stiu cum sa comunice efectiv cu el sI doar o minoritate reuseste ''sa vorbeasca aceeasi limba'' cu calculatorul.
Acest lucru îsi propune textul de fata: sa transforme aceasta ''Black Box'' care este calculatorul într-o unealta mai prietenoasa, mai putin misterioasa cu care, daca nu putem vorbi toti aceiasi limba, stim cel putin cum sa ajungem la ea daca vom avea vreodata nevoie.
''Black Box'' - o definitie
Calculatorul numeric sau digital (engl. digit = unitate), pentru care în terminologia francofona circula si termenul de ordinator, are drept caracteristica fundamentala faptul ca prelucreaza marimi discrete, reprezentarea lor interna facându-se prin impulsuri electrice.
Acestea sunt calculatoarele uzuale actualmente în toate domeniile activitatii sociale. Ele sunt ''instalatii complexe, capabile de a efectua automat, cu rapiditate, precizie si siguranta un numar foarte mare de operatii cu caracter intelectual, care implica în ultima analiza prelucrarea unor cantitati însemnate de valori numerice dupa reguli bine stabilite si într-o succesiune prevazuta anterior''.
Avem asadar doua categorii de elemente indispensabile unui proces de prelucrarea automata a datelor (PAD) cu ajutorul calculatorului:
a) un ansamblu de reguli de prelucrare prin care se indica în fiecare moment masinii ce operatie trebuie sa execute, ordinea operatiilor sI variantelor posibile (atunci când desfasurarea prelucrarii depinde de un rezultat intermediar în procesul de calcul). Acest ansamblu de reguli se numeste algoritm de prelucrare sau de calcul;
b) un ansamblu de date numerice sau alfabetice (informatii) codificate sub forma numerica; ele reprezinta materia prima a prelucrarii.
De remarcat faptul ca, pe baza aceluiasi algoritm se poate prelucra un numar oricât de mare de ansambluri diferite de date. Elaborarea unui algoritm are prin urmare o foarte mare importanta în debarasarea intelectului uman de balastul proceselor mentale rutiniere. Transpus sub forma de graf orientat, algoritmul se numeste de obicei schema logica sau organigrama.
Notiunea de software este de prima importanta în întelegerea functionarii calculatorului, a posibilitatii si a limitelor sale. Daca în anii de pionierat ai informaticii specialistii erau preocupati în special de problemele legate de hardware, informatica actuala porneste de la ideea ca perfectionarea functionala a calculatoarelor în limitele unui tip dat poate fi obtinuta prin îmbunatatirea softului. Ca o consecinta, pretul softului actualei generatii a crescut mult mai rapid decât cel al partii fizice.
Comunicarea este posibila!
Cum se comunica efectiv cu calculatorul?
Am amintit la început ca un calculator digital prelucreaza marimi discrete, reprezentarea lor interna facându-se cu ajutorul impulsurilor electrice. Asadar, orice informatie exterioara, pentru a fi ''înteleasa'' si prelucrata de calculator trebuie codificata într-un limbaj care sa fie apoi usor de ''citit'' în impulsuri electrice. Cum se realizeaza efectiv acest lucru? Prin codificare si programare
Codificarea în general, presupune stabilirea prealabila a unui consens asupra unor echivalente între niste semnificatii si niste simboluri de reprezentare. Cu alte cuvinte, codificarea presupune ca odata cu stabilirea obiectului informatiei se determina si toate starile posibile ale fenomenului, iar apoi, fiecareia din aceste stari i se atribuie un simbol de reprezentare.
Informatia discreta, care nu are un aspect cantitativ, poate fi întotdeauna reprezentata prin numere. Se stabileste o corespondenta între fiecare stare posibila si un numar, care apoi poate fi codificat dupa modurile de codificare ale numerelor. Pentru procesarea si transmiterea informatiei prin intermediul calculatoarelor este necasara codificarea numerica binara.
Istoric, primul cod de reprezentare binara a literelor si cifrelor a fost codul Morse. Calculatoarele utilizeaza alte coduri binare. Reprezentarea caracterelor pe suporturi magnetice sau în memoria calculatorului se face cu ajutorul codului Hollerith.
Doua împrejurari obiective stau la baza utilizarii calculatoarelor ca auxiliare ale gândirii umane. Prima dintre ele, afirma Dominique Dubarle, filosof al culturii, este posibilitatea ''de a constitui o reprezentare materiala activitatilor mentale sau, cum spun logicienii, a termenilor gândirii... A doua dintre aceste posibilitati este aceea de a opera în mod stiintific, matematic, asupra acestor reprezentari materiale, într-un fel care sa corespunda regulat anumitor operatii mentale''. În termenii cu care suntem obisnuiti, cele spuse de filosoful francez nu înseamna altceva decât posibilitatea formalizarii problemelor pe care intentionam sa le prelucram automat, adica disocierea planului semantic de cel formal si abordarea problemelor numai în acest din urma plan. Atunci când se codifica numeric informatia, nu se face altceva decât sa se elaboreze o lista completa a elementelor formale care apar în problema noastra. Sensul fiecarei valori va fi deci substituit în manipularea lui prin expresia numerica de cod care îi corespunde si care nu este altceva decât rangul respectivei valori în lista. În acest fel informatia semantica este formalizata; sensul, care nu mai poate fi aflat decât consultând lista, a fost desprins de forma. Strict vorbind, analiza rezida în reducerea a ceea ce în mod uzual numim cunostiinte la structuri numerice, algoritmizarea nefiind la rândul ei altceva decât gasirea unui model formal care sa ne indice, în termenii unei logici binare stricte, ce operatii urmeaza sa fie efectuate si în ce ordine pentru obtinerea rezultatelor dorite. Este vorba de gasirea sistemului de relatii care leaga informatiile-date de informatiile-rezultate. Acest sistem reprezinta algoritmul de calcul ce poate fi redat grafic sub forma schemei logice sau organigramei.
![]() |
Black Box devine White Box
Cu traducerea schemei logice într-un limbaj de programare automata (LPA) accesibil masinii se sfârseste traducerea unei probleme pentru a putea fi prelucrata automat. Programul este alcatuit dintr-un set de instructiuni redactate în limbaj de programare automata si capabile sa determine actiunile masinii, dupa ce în prealabil au fost introduse în memoria acesteia.
Programarea reprezinta deci tocmai trecerea de la sirul de operatii al schemei logice la sirul de caractere al programului. Pentru aceasta, trebuie sa reuseasca trecerea de la particularitatile algoritmului la particularitatile functionale ale masinii.
Sub raport calitativ si chiar istoric, exista trei nivele posibile ale codificarii algoritmului într-un limbaj accesibil calculatorului: nivelul 0 (programarea în limbaj masina), nivelul 1 (programarea în limbaj de asamblare, denumit uneori si limbaj simbolic), si nivelul 2 (programarea în LPA).
Nivelul limbajului de programare automata este cel mai avansat; el se apropie cel mai mult de limbajele naturale si în special de forma logica a acestora ipostaziata în limbajul matematic. În aceeasi masura ele sunt mai distantate de limbajul masinii. Limbajele de programare automata au doua caracteristici fundamentale:
1. în primul rând ele sunt ''orientate pe problema'', adica structura lor este astfel conceputa încât sa ofere facilitati în prelucrarea unei clase particulare de probleme. De exemplu pâna în anii '80 majoritatea programelor comerciale au fost scrise în COBOL iar programele stiintifice erau scrise în FORTRAN. Ulterior acestea au fost înlocuite de programe cum ar fi: AUTOCAD, MATCAD si altele pentru probleme tehnico-stiintifice, FOXPRO pentru probleme specifice activitatilor de gestiune, economice si comerciale.
2. în al doilea rând, limbajele de programare automata fiind independente de masina pe care sunt folosite, trebuie traduse în limbajul masinii pentru a fi ''întelese'' de ea, ceea ce nu se poate face decât daca în memorie exista un program de traducere numit compilator. În functionarea compilatorului se disting trei faze: a) editarea, care consta în identificarea elementelor semantice ale textului (semne, constante numerice etc.); b) analiza sintactica, prin care se determina rolul fiecarui element în functie de pozitia pe care o ocupa în fraza; c) generarea textului în limbajul masinii care, spre deosebire de primele doua faze, difera de la masina la masina.
În momentul în care în calculator exista, în afara softului (alcatuit din asa numitele programe de asistenta) si programe curente de aplicatii, atunci întregul ansamblu de programe prezente în masina constituie sistemul de operare. Un program de aplicatii nu este altceva decât un algoritm de calcul transpus într-o forma accesibila masinii, adica într-un limbaj de programare automata pe care calculatorul respectiv îl ''întelege''. Practic, el este un sir de instrictiuni care se executa de obicei secvential, cu ajutorul lor prelucrându-se numai multimi de numere.
În limbajul masinii, forma elementara de comunicare cu aceasta si care este în acelasi timp suportul informational al prelucrarilor efective, instructiunea este alcatiuita din trei parti, rezervate, în ordine, adresei operatorului, celei a operandului si adresei instructiunii în memorie.
Operatorul sau functia de prelucrare se alege dintr-un repertoriu de functii pe care masina este capabila sa le execute si care sunt specificate în documentatia ei.
Operandul este numarul asupra caruia se executa prelucrarea.
Adresa instructiunii este un alt numar care indica locatia respectivei instructiuni în memorie. O instructiune va arata astfel: 15/114 - 217. Fiecare din numerele componente este, deci, ''denumirea'' unei operatii sau a unei adrese. Cu cât limbajul de prelucrare automata este mai evoluat în raport cu limbajul masinii, cu atât ''denumirile'' sunt mai apropiate de limbajele naturale, ramânând ca asamblorul sau compilatorul sa traduca aceste ''nume'' în limbajul masinii. Exista si denumiri de o natura mai speciala, numite etichete (labels), care se folosesc pentru instructiuni sau chiar pentru blocuri de instructiuni (subprograme).
Daca dorim sa facem o paralela cu creierul uman, daca hardware-ul ar fi anatomia, partea lui materiala, software-ul ar constitui ''fiziologia'', modul lui de functionare. Softul este prin definitie ansamblul programelor prezente în permenenta în calculator. Aici îsi au sediul ''facultatile lui intelectuale''. Exista doua categorii fundamentale de programe:
a) programele de comanda, care au rolul de a coordona fluxul de lucrari în asa fel încât diversele parti functionale ale masinii sa fie optim folosite în raport cu ansamblul de lucrari pe care acesta îl are de realizat
b) programele prelucratoare; între ele se numara programele de traducere (din limbajul masinii în limbajul de programare), programele utilitare (de interclasare, tabulare etc) si subprogramele din biblioteca de subprograme.
Inteligenta artificiala se leaga în special de continutul si structura bibliotecii de subprograme. Ea este depozitara efectiva a ''abilitatilor'' intelectuale ale masinii. Subprogramele care o alcatuiesc nu sunt altceva decât o colectie de rutine dintr-un anumit domeniu de activitate intelectuala. Atunci când utilizatorul întâlneste o etapa stereotipa de calcul, nu mai scrie în amanuntime calculatorului ce operatii trebuie sa execute, ci cheama numele etichetei subprogramului respectiv. Utilizatorul nu se va concentra în materialul pe care îl elaboreaza decât pe activitatea de conceptie, creatoare; iata, deci, cum colaborarea cu masina nu duce la înecarea intelectuala în rutina, ci la debarasarea de elementele stereotipe si concentrarea spiritului numai pe ceea ce este creator.
Limbaje: analogii functionale
S-a pus problema daca limbajele de programare automata sunt simple coduri sau tind catre statutul unor complexe semiotice apropiate de limbajele umane. Parerile sunt împartite. Evident este faptul ca acestea sunt înca departe de nivelul limbajelor umane în ce priveste dimensiunile repertoriului semantic, flexibilitatea în întrebuintare, etc. Aceste insuficiente fac sa fie necesare limbaje diferite pentru clase diferite de probleme, limbaje de înalt nivel pentru scrierea unor alte limbaje de înalt nivel.
Este necesara totusi consemnarea unor aspecte legate de natura si evolutia limbajelor de programare care spulbera câteva dintre prejudecatile în virtutea carora limbajele de programere automata sunt considerate instrumente lingvistice cu totul rudimentare si incapabile de a vehicula semnificatii evoluate. Se admite în genere ca pentru a-i oferi unui sistem semiotic statutul de limbaj, el trebuie sa îndeplineasca o serie de conditii între care cele mai importante sunt:
a) existenta în plan lexico-semantic a unui dictionar care sa contina o structura de semnificatii analoga structurii conceptelor (de exemplu, sa putem folosi cuvântul ''bloc'' în loc de ''cladire cu mai multe nivele'';
b) existenta unei gramatici, adica a unui set de reguli care, pornind de la anumite necesitati de exprimare stabileste corelatii între rolul unui cuvânt si pozitia lui în fraza.
c) ambiguitatea (omonimia, polisemia) care amplifica practic la infinit posibilitatea de expresie a unui limbaj. Ea exista atât la nivel semantic cât si sintactic.
Limbajele de programare poseda atât un repertoriu semantico-formal (dictionar), cât si un sistem de reguli sintactice de combinare a elementelor dictionarului (gramatica analitica). În privinta existentei ambiguitatii, lucrurile nu mai sunt atât de explicite. Este unanim admis ca un limbaj de programare trebuie sa se caracterizeze prin precizia si univocitatea ternmenilor sai. Nu sunt admise conotatii, sensuri care nu figureaza în dictionarul masinii. Totusi, în mod paradoxal, observându-se ca un cuvânt poate avea semnificatii diferite în functie de locul ocupat în ''fraza'', specialistii au fost pusi în situatia de a conceda ca si în limbajele artificiale de acest tip se poate totusi vorbi de ambiguitate.
Un exemplu simplu ar putea fi urmatorul:
Instructiunea X:=X+Y este o instructiune de atribuire si ar putea fi detaliata în urmatoarele operatii elementare:
PREIA X (ia valoarea din celula X si transfer-o în acumulator)
ADUNĂ Y (aduna la aceasta valoarea din celula Y)
DEPUNE X (ia rezultatul din acumulator si depune-l în celula X)
În cazul primei subfraze, X desemneaza valoarea continuta de celula respectiva din memorie, în vreme ce a treia subfraza desemneaza numele aceleiasi celule.
Iata deci, din toate motivele relevate, ca aceste coduri de programare sunt pe buna dreptate numite limbaje. Analogiile cu limbajul uman nu se opresc însa aici. Istoriceste si chiar social, un limbaj de programer automata evolueaza întocmai ca un limbaj uman viu. Gramaticile se dezvolta prin adaugirea, suprimarea sau restructurarea regulilor existente, în scopul obtinerii unor posibilitati mai complexe de ''expresie''. La nivel semantic, precizia calculelor, deci a transformarilor în acest plan variaza de la o masina la alta, asa cum limbajele naturale variaza în întrebuintarea lor specifica de la o persoana la alta. Labilitatea în timp a limbajelor de programare este determinata atât de necesitatea de a rezolva mereu alte probleme, de facturi diferite, cât si de particularitatile masinilor ale caror hardware evolueaza într-un ritm rapid.
|