Sunteți pe pagina 1din 8

Limbaje de programare

Un limbaj de programare este un set bine definit de expresii i reguli valide de formulare a instruciunilor pentru un computer. Elementul constitutiv este instruciunea, care reprezint exprimarea ntr-o form riguroas a cererii de utilizare a unei operaii i precizeaz tipul operaiei, precum i locul operanzilor i a rezultatului n memorie. Pentru executarea unui program scris ntr-un limbaj oarecare exist, n principiu, dou abordri: compilare sau interpretare. La compilare, compilatorul transform programul-surs n totalitatea sa ntr-un program echivalent scris n limbaj main, care apoi este executat. La interpretare, interpretorul ia prima instruciune din programul-surs, o transform n limbaj main i o execut; apoi trece la instruciunea a doua i repet aceleai aciuni i aa mai departe. Unele limbaje se preteaz bine la compilare: de exemplu limbajele clasice: Pascal, Fortran, C. Altele sunt cu predilecie interpretate, de ex. BASIC, PHP, SQL. Multe limbaje moderne combin compilarea cu interpretarea: codul surs este compilat ntr-un limbaj binar numit bytecode, care la rulare este interpretat de ctre o main virtual. De remarcat fap tul c unele interpretoare de limbaje pot folosi compilatoare aa-numite just-in-time, care transform codul n limbaj main chiar naintea executrii. Limbajele de programare pot fi la rndul lor specializate pentru diferite domenii de aplicaie i cerine de calcul: prelucrri numerice sau simbolice, calcule tehnico-tiinifice, calcule economice sau de alt tip, prelucrri secveniale sau paralele ale datelor, prelucrri n timp real, prelucrri grafice, prelucrri geografice i aa mai departe. n acest sens, exist trei aspecte importante ale unui limbaj de programare care trebuie puse n eviden: tipurile de date (numere, iruri de caractere, adrese, matrice, vectori etc.); operaiile primitive ce pot fi efectuate asupra tipurilor de date; operaiile care determin nlnuirea prelucrrilor i regulile dup care se formeaz structuri de date i operaii mai complexe pe baza unora deja definite, fr a iei din cadrul limbajului de programare. Limbajele de programare pot fi mprite pe generaii, astfel: Categorie Generaia nti Generaia a doua Generaia a treia Tip de limbaj de programare limbajele cod-main limbaje de asamblare limbaje de nivel nalt Exemple

Assembler (de la IBM) C, C++, C#, Java, Fortran, Pascal, COBOL Generaia a patra limbaje neproceduale, orientate pe SQL, FoxPro, LabVIEW, rezolvarea unei anumite clase de Python, Perl, MATLAB, probleme IDL Generaia a cincea limbaje utilizate n domenii precum Prolog, LISP, Haskell logica fuzzy, inteligena artificial sau reelele neuronale Un limbaj de programare se afl la un nivel "nalt" atunci cnd, nainte de a putea fi executat, trebuie mai nti s treac prin unul sau chiar mai multe filtre de interpretare (compilatoare, medii de rulare). Nivele:

nivel sczut: assembler - interacioneaz aproape direct cu procesorul; nivel mediu: C++, Pascal - sursele sunt transformate de compilator n cod main; nivel nalt: Java - pe lng procesul de compilare, necesit JRE (la fel ca Visual C# '08 i .Net Framework); Cu ct crete nivelul limbajului, cu att acesta este mai uor de neles de ctre programator, iar cu ct scade nivelul limbajului, cu att acesta este mai uor de "neles" pentru calculator. Pentru mrirea eficienei, n codul C++, Visual C++, Basic, Fortran, Pascal sau Delphi pot fi integrate i poriuni de cod assembler, obinndu-se astfel un cod hibrid. Alegerea unui limbaj specic de programare nu este totui o problema esenial, majoritatea limbajelor de uz general ingineresc (tehnic) provenind din trunchiul comun C / Pascal. Desigur c exist nenumrate variante ale acestor limbaje de baz (C++ Builder, Visual C++, Delphi, Borland C++ i Borland Pascal cu obiecte) i chiar limbaje noi (Java, care, dei se revendic ca o aplicaie pur distribuit pentru folosirea reelelor i n special a Internetului, nu este cu mult diferit ca structur de un C cu clase). Principala evoluie a mediilor de programare nu a fost legat de modicarea limbajului n sine (i deci a caracteristicilor de compilare a codului) ci modicarea stilului n care se creaz aplicaia specic, i mai precis, aspectul de interfa. Cuvntul de ordine actual n implementrile software este orientarea-obiect (limbajele C++, Delphi, Java), insistnd mai ales pe aspectele de polimorsm i motenire pe care le aduce acest stil de programare. Programarea cu obiecte (POO) este un alt mod de abordare a programrii dect programarea procedural (n limbaje ca C si Pascal), cu avantaje n dezvoltarea programelor mari. n programarea procedural sarcina programatorului este de a specifica aciuni de prelucrare, sub form de proceduri (funcii, subprograme). Un program C sau Pascal este o colectie de funcii (i/sau proceduri). Datele prelucrate se transmit ca argumente (parametri) de la o functie la alta, iar pentru anumite operaii uzuale exist functii predefinite (de bibliotec). n programarea orientat pe obiecte programatorul lucreaz cu obiecte: declar obiectele necesare aplicatiei (i atributele lor), iar prelucrrile sunt exprimate ca aciuni asupra obiectelor (prin apeluri de metode). Sunt prevzute mai multe tipuri de obiecte predefinite (clase de bibliotec), dar orice programator poate defini noi tipuri de obiecte (noi clase). Un obiect conine n principal date. Limbaje de programare uzuale n tiinele geodezice, cele mai folosite limbaje de programare sunt: BASIC (Visual Basic), C, C++, C#, Pascal (i ObjectPascal folosit de Borland Delphi), Java, Python, MATLAB. Limbajele BASIC i Visual BASIC BASIC (acronim al expresiei engleze Beginners All-purpose Symbolic Instruction Code) este un limbaj de programare de nivel nalt a calculatoarelor, foarte asemntor cu limba englez, ceea ce l face uor de memorat i ideal pentru nceptori. O variant de BASIC foarte popular este i Visual Basic, creat de ctre compania Microsoft. Visual Basic (VB) este un limbaj de programare produs de Microsoft, care a fost derivat din limbajul Basic i, ca de altfel i celelalte limbaje 'vizuale' ale Microsoft (mai putin Visual C++), este axat pe componenta de interfa a programului, programatorul putnd realiza cu usurina interfee standardizate de tip Windows (ferestre, butoane, liste etc.). Visual Basic este un limbaj pur orientat pe obiecte (OO), avnd deja implementat o list de clase cu utilizare general. Pn la versiunea 6, VB putea utiliza i dezvolta

componente COM/COM+ i ActivX, dar i librarii clasice de funcii tip DLL. Odat cu apariia versiunii 7, adic odat cu apariia tehnologiei .NET, VB (acum VB .NET) poate utiliza i crea i componente .NET cu toate avantajele pe care acestea le aduc. VB este un limbaj de nivel nalt avnd implementate mai multe niveluri de abstractizare a dezvoltrii unei aplicaii dar i posibilitatea de compilare n formatul Windows EXE sau DLL de 16 si 32 biti. VB este un limbaj interpretat, adic orice cod scris n limbajul VB trebuie mai nti tradus ntr-un limbaj de nivel inferior i dupa aceea executat (spre deosebire de limbajele native ex. C++). Acest lucru are avantaje (cum ar fi rularea fr compilare sau portabilitatea ntre platforme) dar i dezavantaje (cum ar fi necesitatea unei maini virtuale pentru interpretarea codului). Utilizarea limbajului VB este una general, putnd fi folosit la crearea de programe simple, educaionale dar i la crearea de aplicaii complexe (ca de exemplu la jocuri - ex: Pharao). Teoretic oricine (mai mult sau mai puin experimentat) poate utiliza VB pentru c este un limbaj de programare simplu (calitate de baz a limbajului Basic din care provine). Limbajele C i C++ Limbajul C este un limbaj de programare standardizat, compilat, de nivel mediu. Este implementat pe majoritatea platformelor de calcul existente azi i este cel mai popular limbaj de programare pentru scrierea de software de sistem. Este apreciat pentru eficiena codului obiect pe care l poate genera i pentru portabilitatea sa. Sintaxa limbajului C a stat la baza multor limbaje create ulterior i nc populare azi: C++, Java, JavaScript, C#. Opereaz n strns legtur cu hardware-ul, fiind cel mai apropiat de limbajul de asamblare fa de majoritatea celorlalte limbaje de programare. Un avantaj al limbajului C const n faptul c n timp ce limbajele de asamblare sunt specifice unui anumit model de calculator, codul unui program C poate fi compilat i rulat pe aproape orice tip de main (calculator). Limbajul de programare C++ (iniial numit C cu Clase, a fost redenumit C ++ n 1983) este o variant de limbaj C mbuntit, mai riguroas i mai puternic, completat cu construciile necesare aplicrii principiilor programrii orientate pe obiecte (POO). Dei adopt principiile POO, C++ nu impune aplicarea lor strict (se pot scrie programe fr elemente POO). Conceptul fundamental n C++ este clasa. Clasele: sunt tipuri definite de utilizator asigur ncapsularea datelor garanteaz initializarea datelor permite gestiunea memoriei controlat de utilizator ofer mecanisme pentru suprancarcarea operatorilor. Un program scris n limbajul C (sau C++) este compus din unul sau mai multe fiiere surs. Un fiier surs este un fiier text care conine codul surs (n limbajul C) al unui program. Fiecare fiier surs conine una sau mai multe funcii i, eventual, referine ctre unul sau mai multe fiiere header. Funcia principal a unui program este numit main. Execuia programului ncepe cu execuia acestei funcii, care poate apela, la rndul ei, alte funcii. Toate funciile folosite n program trebuie descrise n fiierele surs (cele scrise de ctre programator), n fiiere header (funciile predefinite, existente n limbaj) sau n biblioteci de funcii. Un fiier header este un fiier aflat n sistem sau creat de ctre programator, care conine declaraii i definiii de funcii i variabile. Cele mai cunoscute limbaje care au fost puternic infuentate de C++ sunt Java, respectiv C#.

Limbajele Pascal i Object Pascal Pascal este unul dintre limbajele de programare de referin n tiina calculatoarelor, fiind cel care a definit programarea calculatoarelor. Cele mai populare implementri a acestui limbaj au fost Turbo Pascal i Borland Pascal, ambele ale firmei Borland cu versiuni pentru Macintosh i DOS, care i-au adugat limbajului obiecte i au fost continuate cu versiuni destinate programrii vizuale pentru Microsoft Windows (utilizate de mediul de dezvoltare Delphi) i pentru Linux (Kylix). Object Pascal este un limbaj de programare derivat din Pascal, ce permite folosirea structurilor din modelul programrii orientate pe obiecte: obiecte, motenire, polimorfism etc. Object Pascal conine clase specifice aciunilor din sistemul de operare, componente GUI, etc. Object Pascal este implementat n mediul de dezvoltare Delphi produs de firma american Borland. Iniial, Delphi a fost fcut pentru sistemele de operare Windows, dar acum se fac versiuni i pentru Linux (denumit Kylix) i Microsoft .NET Framework. Delphi este un instrument excelent de dezvoltare rapid a aplicaiilor (RAD). Delphi i Object Pascal au creat aliana dintre programarea orientat obiect i programarea bazat pe forme. Cea mai mare parte a codului API Windows este ascuns i manipulat n fundal cu ajutorul "formelor" i "controalelor". n plus, Delphi poate crea fiiere executabile: programe care nu necesit o rulare DLL pentru a funciona; programe care sunt compilate nu interpretate; programe care ruleaz de zeci de ori mai repede dect programele Visual Basic. A introdus ca noutate Biblioteca de Componente Visuale (VCL) VCL (Visual Component Library) sau Biblioteca de Componente Vizuale este scheletul folosit pentru construirea de aplicaii Microsoft Windows, oferit de Borland pentru utilizarea n mediile integrate de programare (IDE) Delphi i C++ Builder. Este scris n Object Pascal. Echivalentul acestei biblioteci pentru alte platforme se numete CLX (Component Library for Cross Platform) i a fost construit pentru folosirea acesteia n Delphi, C++ Builder i Kylix. Cu o abordare orientat spre obiecte, toate obiectele incluse n VCL motenesc direct sau indirect clasa TObject. Aceasta este necesar pentru c Delphi nu suport motenire multipl, spre deosebire de C++. Abordarea folosit n VCL este uor de utilizat pentru c a fost folosit de Smalltalk, primul limbaj de programare cu adevrat orientat spre obiecte. Aceasta apropie Delphi de Java, care la fel folosete o clas de baz numit Object. Limbajul MATLAB Limbajul MATLAB este un limbaj matrice/vector de nalt nivel ce include instruciuni de control al buclelor, funcii, structuri de date, comenzi de intrare/ieire i instruciuni de programare orientat pe obiecte. MATLAB lucreaz numai cu un singur tip de obiecte i anume matrice numerice, avnd elemente reale sau complexe. Astfel scalarii sunt privii ca matrice de dimensiune 1 x 1, iar vectorii ca matrice de dimensiune 1 x n (dac este vector linie) sau n x 1 (dac este vector coloan). Limbajul MATLAB este implementat n mediul de dezvoltare MATLAB (de la Matrix Laboratory) creat de MathWorks i este utilizat pe larg n industrie i n universiti fiind disponibil cross-platform, sub diverse sisteme de operare: Windows, GNU/Linux, UNIX i Mac OS. De asemenea include toate facilitile unui limbaj complet de programare, admind interfee cu limbajul de programare C, C++ i FORTRAN. MATLAB integreaz calcul, programare i vizualizare, ntr-un mediu de lucru prietenos, soluionarea problemelor presupunnd folosirea notaiilor matematice clasice. Utilizarea programului MATLAB include:

Matematic i calcul numeric Programare i dezvoltare de algoritmi Modelare i simulare Analiz de date, exploatarea rezultatelor i vizualizare Grafic tiinific i inginereasc Dezvoltare de aplicaii software, incluznd construcie de interfee grafice cu utilizatorul (GUI) Etc. Versiunea complet a pachetului de programe MATLAB conine o ntreag familie de module specifice, denumite tool-box-uri, respectiv blockset-uri, care permit rezolvarea unor aplicaii din diverse domenii cum ar fi: maini, aparate i acionri electrice, control de sistem, aplicaii DSP, procesarea materialelor i electro-tehnologii, procesare de semnal, mecanic, industria aeronautic i de automobile, statistic, finane i multe altele. Aceste module sunt colecii de funcii MATLAB (M-files), uor de asimilat, care extind puterea de calcul a pachetului de programe MATLAB n vederea rezolvrii unor clase particular e de probleme. Colecia de module MATLAB conine: Simulink, DSP, Control System, SimPowerSystems, SimMechanics, Data Acquisition, Fuzzy Logic, Image Processing, Partial Differential Equations, Neural Network, Optimization, System Identification, Financial, Statistics, Communications, Database, Virtual Reality etc. Biblioteca de funcii matematice MATLAB const ntr-o vast colecie de algoritmi de calcul, pornind de la funcii elementare precum sum, sinus, cosinus i aritmetic complex, pan la funcii mai sofisticate precum inversare de matrici, calcul de valori proprii, funcii Bessel i transformata Fourier. MATLAB dispune de sistem de grafic (Handle Graphics) ce include att comenzi de nalt nivel pentru vizualizarea 2D i 3D a datelor, procesare de imagini, animaie i grafic, ct i comenzi de jos nivel ce permit personalizarea complet a reprezentrilor grafice i construirea integral a interfeelor grafice (GUI) pentru aplicaiile MATLAB.

Fig.2 Reprezentri 2D i 3D n mediul MATLAB

MATLAB lucreaza fie n modul linie de comanda, caz n care fiecare linie este prelucrat imediat i rezultatele sunt afiate utiliznd programe scrise n fiiere. Fiierele care conin instruciuni MATLAB se numesc fiiere M sau M-files, ntruct au extensia .m. Un fisier M poate fi de dou tipuri, script sau funcie. Ambele tipuri de fiiere sunt scrise n format ASCII, iar algoritmul implementat poate fi urmrit i modificat cu uurin dac se cunosc conveniile i sintaxa limbajului de programare MATLAB. Aceste tipuri de fiiere M

permit crearea unor noi funcii care le pot completa pe cele existente. Astfel MATLAB poate fi extins, permind abordarea anumitor aplicaii specifice din stiin i inginerie. Cea mai important caracteristic a MATLAB-ului este uurina cu care poate fi extins. Datorit acestui fapt orice utilizator poate aduga propriile programe, scrise n MATLAB, la fiierele originale, dezvoltnd astfel aplicaii specifice domeniului n care lucreaz. De exemplu SAR Toolbox pentru prelucrarea semnalelor SAR, dezvoltat de GIPSA Lab, Grenoble. Limbajul Python Python este un limbaj de programare care ctig tot mai mult popularitate, oferind posibilitatea programrii structurale, dar i orientate pe obiecte i incluznd i elemente din paradigma funcional. Este un limbaj de scripting, ceea ce nseamn c este interpretat i nu compilat, economisind mult timp n procesul de dezvoltare i depanare. Este uor de nvat i interfaeaz foarte uor cu module scrise n C, C++, Fortran, etc. Sistemul de tipizare este dinamic, iar administrarea memoriei decurge automat prin intermediul unui serviciu gunoier (garbage collector). Alt avantaj al limbajului este existena unei ample biblioteci standard de metode pentru lucrul cu fiiere, arhive, generare de documentaie, testare de pri, gestiune de fire de execuie, baze de date, browser e web, CGI, ftp, email, XML, XML-RPC, HTML, fiiere .WAV, criptografie, GUI (graphical user interfaces) i un set de biblioteci pentru lucrul cu reeaua i principalele protocoale de comunicare pe internet (HTTP, Telnet, FTP). Un numr mare de platforme Web sunt construite cu Python. Abilitile limbajului ca limbaj pentru programarea CGI sunt n afara oricror dubii. De exemplu YouTube, unul din site-urile cu cea mai ampl cantitate de trafic din lume, este construit pe baza limbajului Python. De asemenea a fost folosit n mai multe jocuri video i a fost adoptat ca primul dintre cele trei limbaje de programare disponibile n Google App Engine, celelalte dou fiind Java i Go. Python permite scrierea unor programe foarte compacte i uor de citit. Programele scrise n Python sunt mult mai mici decat echivalentele n C sau C++ pentru c: tipurile de date de nivel nalt permit realizarea operaiilor complexe ntr-o singur instruciune; gruparea instruciunilor este dat de paragrafare n loc de blocuri begin/end sau de acolade; nu este necesar declararea variabilelor. Python a devenit un limbaj standard n prelucrarea datelor geospaiale; Esri promoveaz Python ca cea mai bun alegere pentru scripturi scrise n ArcGIS. Dispune de un suport important pentru staticstic, matrice i alte caracteristici importante folosite la rezolvarea problemelor din domeniul geotiinelor. Limbajul SQL (Structured Query Language) SQL (Structured Query Language - Limbaj Structurat de Interogare) este un limbaj de programare specific pentru manipularea datelor n sistemele de manipulare a bazelor de date relaionale (RDBMS), iar la origine este un limbaj bazat pe algebra relaional. Acesta are ca scop inserarea datelor, interogaii, actualizare i tergere, modificarea i crearea schemelor, precum i controlul accesului la date. A devenit un standard n domeniu, fiind cel mai popular limbaj utilizat pentru crearea, modificarea, regsirea i manipularea datelor de ctre SGBD-urile (Sistemele de Gestiune a Bazelor de Date) relaionale.

Limbajul de programare Java Tehnologia Java aduce, pe lng orientarea obiect, ideea de folosire a resurselor distribuite (e pe Internet, e ca resurse de multiprocesare). Astfel a devenit posibil crearea de depozite de software specializat, universal executabil (prin mecanismul de applet) pe orice main pe care este disponibil un browser Internet. Marile avantaje anunate pentru Java (cod portabil, execuie paralel, protecie la manipularea defectuoas a zonelor de memorie, protecia datelor) sunt contrabalansate de codul executabil relativ lent i de dimensiunile mari ale codului surs. Java este ns interesant pentru prelucrarea i analiza imaginilor prin perspectiva deschis de multi-threding - existena i gestionarea de ctre o aplicaie oarecare a mai multe re de execuie ce ruleaz concomitent din punct de vedere logic (sau aproape concomitent din punctul de vedere zic al calculatorului cu unic procesor); astfel devine posibil rularea paralel de aplicaii pe sisteme cu unic procesor, fr sisteme de operare multi-tasking. De altfel, puine sisteme zice multiprocesor au fost realizate pentru prelucrarea de imagini; sistemele de SPMD, transputer farm) sau grupuri de calculatoare (cluster processing). Aplicaii ale limbajelor de programare n prelucrarea datelor geospaiale Cunoaterea limbajelor de programare le ofer celor interesai posibilitatea de a putea customiza, ntr-o anumit msur, aplicaiile software existente, dar i de a crea propriile aplicaii pentru rezolvarea problemelor de interes din domeniul prelucrrii datelor geospaiale. n acest sens, n ultimii ani, s-au dezvolat numeroare aplicaiile GIS open source. Librriile sau bibliotecile partajate open source permit ncorporarea de funcionalitate specific fr a mai pierde vremea cu dezvoltarea acestora. n acest fel productivitatea crete, programatorul putndu-se concentra asupra obiectivelor primare ale aplicaiei pe care o dezvolt fr a mai pierde timp cu scrierea de funcii conexe. De exemplu, o aplicaie de editare a datelor vectoriale presupune existena unor module care s se ocupe de importul/exportul datelor dintr-un numr mare de formate de fiier, baze de date sau servicii web, reproiectarea datelor ntr-un anumit sistem de coordonate sau definirea unor reguli topologice de validare a datelor. Toate aceste funcionaliti conexe funciilor primare de editare a datelor pot fi rezolvate rapid i eficient prin ncorporarea librriilor GDAL, OGR, PROJ4 i JTS/GEOS. Aceast abordare nu doar reduce timpul necesar dezvoltrii unei aplicaii noi, prin evitarea reinventrii roii, dar asigur i compatibilitate/interoperabilitate cu aplicaiile existente. GDAL i OGR reprezint dou din cele mai utilizate librrii din lumea open source GIS. GDAL este un translator folosit pentru citirea i scrierea unui numr impresionant de formate de date raster. Datorit licenei permisive, GDAL, este folosit i de numeroase de aplicaii comerciale. De exemplu ESRI a integrat funcionalitatea GDAL n versiunea 9.2 a suitei ArcGIS. Ambele librrii sunt dezvoltate n limbajul de programare C++.

Concluzii Rezolvarea majoritii problemelor referitoare la prelucrarea datelor geospaiale necesit prelucrarea unui volum mare de date i efectuarea cu o precizie ridicat a numeroase calcule. Astfel, la alegerea unui limbaj de programare pentru rezolvarea unei probleme specifice trebuie s se in cont de posibilitile limbajului respectiv de a lucra cu anumite tipuri de date (date vector, imagini, pointeri, etc), de reprezentare 2D sau 3D a rezultatelor, de gestionare a bazelor de date, etc.

Cunoaterea limbajelor de programare le ofer celor interesai posibilitatea de a putea customiza, ntr-o anumit msur, aplicaiile software existente, dar i de a crea propriile aplicaii pentru rezolvarea problemelor de interes din domeniul prelucrrii datelor geospaiale