CATEGORII DOCUMENTE |
I. Tipuri de limbaje de programare. Clasificare.
Un limbaj de programare este un sistem de conventii adoptate pentru realizarea unei comunicari - intre programator si calculator . Limbajele folosite pentru programarea unui calculator sunt extrem de asemanatoare limbajelor naturale . Ele sunt compuse din :
cuvinte (rezervate) ;
punctuatie ;
propozitii si fraze ;
reguli sintactice etc .
Asa cum pentru insusirea unei limbi straine trebuie invatate cuvintele acesteia si
regulile cu care pot fi manevrate tot asa pentru insusirea unui limbaj de programare trebuie studiate cuvintele si semnele care il compun impreuna impreuna cu regulile de manevrare a lor.
Dupa metoda cu care este conceput ansamblu comunicarii , limbajele pot fi clasificate in mai multe moduri . In continuare voi enumera cele mai importante clase de limbaje , descriere ce acopera totalitatea limbajelor existente .
I.1. Limbaje de nivel scazut - de nivel inalt
" Nivelul " unui limbaj este apreciat prin pozitia pe care o ocupa pe scara constituita
de limbajul recunoscut de microprocesor ( limbaj masina ) si limbajul natural al programatorului ( limba romana , limba engleza .) .
Un limbaj de nivel scazut este foarte apropiat de masina , el manipuleaza cu elemente de nivel hardware , fizic , cum ar fi : registru , microprocesor , locatie de memorie , port de intrare / iesire etc .
Un limbaj de nivel inalt sau foarte inalt manipuleaza cu concepte apropiate de limbajul natural , concepte de nivel logic , cum ar fi : colectie de date , nume de operatie ( sort , writeln , open ) , variabile , constante ( asemanatoare ca inteles cu cele din matematica).
Cu ajutorul unui limbaj de nivel inalt programatorul se face mult mai usor inteles de catre calculator . Uneori o singura limie de program scrisa cu un astfel de limbaj poate echivala cu sute de linii de program scrise in limbaj masina . Deci din punct de vedere al reducerii timpului de realizare a unui program si al sigurantei in functionare ( absenta erorilor de programare ) este de preferat un limbaj de nivel cat mai ridicat ( inalt sau foarte inalt ) .In schimb , pe masura ce limbajul are un nivel mai ridicat executia programului conceput cu ajutorul sau va fi mai lenta , decat a unui program ce realizeaza aceleasi operatii dar este scris in limbaj de asamblare .
O alta diferenta esentiala intre cele doua tipuri de limbaje o reprezinta portabilitatea , adica posibilitatea transferarii programelor pe un alt tip de masina decat cea pe care au fost construite . Din acest punct de vedere limbajul de asamblare este neportabil deoarece el este specific microprocesorului . Programele realizate pe un tip de masina trebuie rescrise integral pentru noul tip de masina , folosind un nou set de instructiuni - care deobicei difera foarte
mult . Lucrurile stau altfel cu programele concepute cu ajutorul unui limbaj de nivel inalt , deoarece acestea sunt detasate de masina . Intre un astfel de program si calculator se interpune compilatorul ( sau interpretorul ) care rezolva corect transformarea fisierului-sursa in fisier-executabil .
I.2. Limbaje procedurale - neprocedurale
Cele doua tipuri de limbaje , procedurale si neprocedurale , se diferentiaza prin nivelul
de organizare ( structurare ) a unui program . Limbajele neprocedurale sunt concepute pentru a gandi un program la nivel de instructiune , pe cand cele procedurale , obliga programatorul sa conceapa programe la nivel de bloc . Intr-un limbaj procedural (numit si limbaj structurat)
programele sunt scrise instructiune cu instructiune , dar ele sunt organizate logic in blocuri (grupuri de instructiuni ) ce realizeaza o actiune bine determinata .In general un bloc are un punct de intrare si un punct de iesire - nu mai multe .
Un limbaj procedural ofera posibilitatea utilizarii unui nivel ridicat de concepere a unui program si duce la realizarea de programe coerente si protejate la erori . Prin contrast , limbajele neprocedurale nu favorizeaza programatorul in a se desprinde de nivelul "instructiune " si duc deseori la programe greu de controlat - mai ales in cazul programelor de dimensiuni mari .
Limbajele neprocedurale sunt inca preferate de unii utilizatori datorita timpului foarte scurt cat decurge invatarea si utlizarea lor .
I.3. Limbaje orientate
Din punctul de vedere al aplicabilitatii unui limbaj , limbajele pot fi orientate pe o
anumita problema sau concepute pentru solutionarea oricarui tip de problema - limbaje de uz general sau altfel spus , neorientate pe o problema .
Limbajele orientate prezinta un grad inalt de specificitate pe cand un limbaj neorientat reprezinta un cadru general ce permite introducerea de catre utilizator a conceptelor si prelucrarilor dorite .
Deci , diferenta esentiala dintre cele doua tipuri de limbaje o constitue nivelul conceptual definit . Cele specializate poseda deja integral suportul necesar si permit programatorului sa se concentreze la ansamblul problemei , pe cand cele nespecializate lasa in sarcina programatorului manevrarea nivelelor inferioare ale problemei .
I.4. Limbaje concurente
Un limbaj concurent permite definirea de procese ( prelucrari ) paralele , executia sa
fiind ramificata la un anumit moment de timp . Prin contrast limbajele neconcurente ( majoritatea limbajelor ) au o desfasurare liniara , fiind activ un singur proces la un moment dat . Procesele concurente presupun in mod obligatoriu un sistem multi-tasking ce poate gestiona mai multe " sarcini " la un moment dat .
II . Limbaje de programare
II.1. Limbaje de nivel scazut .
Aceasta categorie de limbaje are un reprezentant autoritar si anume : limbajul de
asamblare . Diferentierile care se pot face pentru limbajele de nivel scazut sunt urmatoarele :
a) - dupa tipul de masina ;
Regulile respectate de versiunile limbajului de asamblare sunt :
o noua versiune o include complet pe cea anterioara ,
versiunea noua ofera functii suplimentare si le realizeaza pe cele vechi mai rapid .
b) - dupa mediul de programare oferit .
Aspectul unui limbaj poate fi schimbat radical de mediul de programare oferit . Pentru
limbajul de asamblare exista mai multe implementari disponibile , incepand cu pachete ce opereaza in mod linie si culminand cu medii integrate in care toate operatiile se pot declansa de la un acelasi pupitru de comanda .
Nu sunt luate in considerare decat aceste medii integrate ( denumite generic medii Turbo) , dintre care se detaseaza Turbo Asamblorul firmei Borland TASM .
II.2. Limbaje de nivel inalt neorientate .
II.2.1. BASIC
A fost creat in 1964 la Darmooth College (S.U.A.) . Denumirea sa provine de la initialele cuvintelor Beginner's Allpurpose Symbolic Instruction Code ( Cod de instructiuni simbolice , de uz general , destinat incepatorilor ) .
Are urmatoarele caracteristici fundamentale :
simplu de invatat ; instructiunile sale sunt cuvinte din limba engleza sau prescurtari ale acestora ;
neorientat pe un anumit tip de problema ; permite construirea de aplicatii ;
este un limbaj nestructurat , ceea ce ii permite sa fie usor invatat .
Din cauza ca a cunoscut o larga raspandire , au fost implementate noi versiuni de Basic :
GW-BASIC , QUICK BASIC , TURBO BASIC , VISUAL BASIC ( Basic for Windows ) .
II. 2.2. FORTRAN
Limbajul Fortran este decanul de varsta al limbajelor de larga folosinta . A aparut in 1956 si isi datoreaza numele prescurtarii cuvintelor : FORmula TRANslation ( Traducere de formule ). Initial reprezenta un limbaj orientat pe calcule stiintifice avand definite concepte precum : matrice , functii trigonometrice , numere reale in dubla precizie . Versiunile ulterioare care au cunoscut o mare popularitate au extins posibilitatile limbajului trasformandu-l intr-un limbaj eficient , de uz general .In prezent exista pentru IBM-PC doua implementari mai importante ale limbajului : Microsoft Fortran , Fortran for Windows .
Desi nu poate fi considerat " depasit " din punct de vedere conceptual ( este un limbaj algoritmic - structurat ) este neindicata folosirea lui datorita absentei unor medii de programare performante si pentru ca tendinta actuala ii este defavorabila .
II.2.3. PASCAL
Conceptualizat in anul 1970 de catre Niklaus Wirth , limbajul PASCAL poarta numele matematicianului si filosofului BLAISE PASCAL , in semn de recunoastere a meritelor sale in teoretizarea masinilor de calcul .
Creat dupa acumularea de cunostiinte temeinice in stiinta limbajelor formale , din confruntarea cu probleme concrete ale programarii , limbajul PASCAL a constituit la vremea respectiva un limbaj modern , mentinandu-se ca atare si in prezent , datorita faptului ca poseda o solida baza conceptuala .
Limbajul PASCAL a introdus in versiunea sa initiala notiunea de programare structurata si ulterior notiunile de date ( structuri ) dinamice , date (structuri ) definite de utilizator .
In prezent standardul implementarilor PASCAL cuprinde urmatoarele elemente :
programare structurata de tip algoritmic ;
definirea de noi functii sau proceduri ;
tipuri de date definibile de catre utilizator ;
structuri de date dinamice ;
adresari indirecte ale datelor ;
recursivitate ;
rutine complete de intrare / iesire ;
functii de conversie a datelor din ASCII in format intern si invers ;
set complet de functii matematice ;
functii elementare de grafica 2D ;
posibilitatea inserarii direct in sursa a instructiunilor in limbaj de asamblare ;
posibilitatea definirii de overlay-uri pentru program .
Versiunile standard ale implementarilor PASCAL sunt cele oferite de Microsoft si Borland , cu avantaj pentru cele din urma ( TURBO PASCAL 5.0 , TURBO PASCAL 5.5 ) datorita mediului de lucru performant (de tip " TURBO " ) . Combinatia PASCAL + TURBO a reprezentat un succes imens in randul programatorilor avand ca singur rival cealalta combinatie : C+TURBO .
II. 2.4. Limbajul C
Acest limbaj de programare , cu cel mai scurt nume , a fost creat in 1971 de catre
Dennis Ritchie si Brian Kernigham pentru dezvoltarea sistemului de operare UNIX .
Principalele caracteristici ale limbajului sunt :
limbaj structurat de nivel inalt ;
poseda concepte de nivel scazut , ceea ce permite exploatarea portabila a caracteristicilor intime unei masini ;
rutine de conversie a datelor foarte evoluate ;
tipuri de date definibile de catre utilizator ;
gestionarea elaborata a datelor de tip dinamic ;
definirea de noi functii ;
adresari indirecte ale datelor , variabilelor ( pointer-i ) ;
recursivitate ;
set complet de functii matematice ;
functii pentru realizarea de grafica elementara 2D;
functii de apel servicii DOS ;
posibilitatea definirii de overlay-uri pentru un program ;
concizie deosebita a limbajului .
Pentru versiunile standard ale implementarilor limbajului C exista medii de programare de tip " TURBO "ce apartin firmelor : Microsoft - produsul QUICK C si firmei Borland - produsele TURBO C .
II.2.5. Limbajul ADA
A fost creat special pentru a gestiona totalitatea aplicatiilor dezvoltate si utilizate de
N.A.S.A. Noutatea limbajului ( de tip structurat , algoritmic ) o constitue concurenta , deci posibilitatea lansarii de procese paralele ( sincronizate interactiv in finalul executiei lor ) . Saltul calitativ este evident si deschide un nou domeniu in programare . dar nu pentru IBM-PC . Versiunile implementarilor limbajului ADA pe IBM-PC nu poseda tocmai acesta parte de concurenta , reducand limbajul la un simplu limbaj structurat de uz general . Deci , ADA este un limbaj ultramodern din punct de vedere teoretic dar ineficient din punct de vedere practic pentru IBM-PC-uri .
II.3 . Limbaje orientate pe gestiunea bazelor de date
Necesitatile actuale in practica utilizarii calculatoarelor se indreapta cu precadere spre
gestionarea bazelor de date de mari dimensiuni . O explicatie a acestei orientari e data de faptul ca o baza de date reprezinta o informatie , iar cel ce detine informatii complete si rapide intr-o anumita problema este indiscutabil cu un pas inaintea celorlalti . Concurenta din domeniul economic poate fi numita pe buna dreptate o batalie informationala .
Un sistem de gestionare a bazelor de date ( S.G.B.D.) de tip clasic opereaza cu
urmatorii termeni fundamentali :
inregistrare - mai multe campuri alcatuiesc impreuna o inregistrare ;
baza de date - colectie de inregistrari .
Deci , datele sunt gestionate prin intermediul unei structuri , organizata ierarhic , la
un nivel de organizare logica .
Tendinta moderna in exploatarea bazelor de date consta in deplasarea interesului catre bazele de date relationale . Diferenta esentiala consta in definirea unui nivel logic suplimentar intre datele gestionate . Acestea nu mai sunt privite ca simple fise izolate intre ele ci pot fi analizate pe baza legaturilor ( relatiilor ) ce exista intre ele .
Notiunile cu care opereaza un S.G.B.D. relational sunt urmatoarele :
tabel - structura fundamentala de " depozitare " a datelor ;
linie in tabel - echivalentul unei inregistrari clasice ;
coloana in tabel - echivalentul unui camp de tip clasic ;
baza de date - o colectie de tabele , conectate prin valorile anumitor coloane .
Aceasta noua conceptie permite definirea de structuri 1: n . O inregistrare poate
contine n valori pentru un " camp anumit nu una singura ca in cazul clasic . Structurile de tip 1 : n pot fi rezolvate si cu ajutorul unui S.G.B.D. clasic , dar intreaga gestiune a operatiilor revine programatorului pe cand un mediu relational furnizeaza din start servicii speciale .
Spre deosebire de S.G.B.D. -urile clasice , un mediu relational presupune ca cerinta minimala posibilitatea manipularii datelor prin intermediul conexiunilor logice stabilite . Pentru aceasta exista definit ( si impus ca standard unanim recunoscut ) limbajul de interogare SQL ( Structured Query Language - limbaj de cereri structurate ) .Prin intermediul sau sunt permise urmatoarele operatii :
regasire date ( conexate logic ) ce indeplinesc o anumita conditie ;
definire ordine de returnare a datelor ;
redefinire conectari logice ale datelor ;
exploatare ;
programare .
Avantajele unui S.G.B.D. clasic sunt :
simplitate in manevrare ; deci efort de studiu redus ;
pot functiona pe un sistem de calcul ce nu implica resurse speciale , ci doar spatiu de stocare extern suficient pentru problema data ;
pret de cost redus fata de cele relationale .
Avantajele unui S.G.B.D. relational sunt :
nivel logic superior ( corelatii , structuri 1 : n ) ,
prelucrari ( regasiri ) de date cu un inalt nivel de complexitate ;
nivel superior de portabilitate a aplicatiilor , datelor.
II.3.1. S.G.B.D. - uri clasice
Cel mai raspandit sistem de gestiune a bazelor de date este dBASE , in diversele lui
versiuni . El poate fi considerat un " BASIC "al bazelor de date . La momentul aparitiei a constituit o adevarata revolutie in domeniul S.G.B.D.-urilor .
Meritele sale principale care l-au impus atentiei utilizatorilor si programatorilor sunt :
foarte simplu de utilizat ;
limbaj de nivel foarte inalt , simplu de invatat ;
interactivitate buna a sistemului ;
poate functiona cu resurse extrem de restranse ;
Dezavantajele principale ale dBASE -ului sunt :
viteza de lucru extrem de scazuta ;
limbaj de programare cu lacune greu de surmontat ( nu poseda salturi , functii matematice reduse , erori de implementare ) ;
aplicatiile create slab interactive ;
imposibilitateta conectarii cu un alt limbaj .
Cele mai importante implementari ale sale sunt : dBASE III Plus si dBASE IV .
A fost creat in 1950 si reprezenta singura posibilitate de gestionare a unei baze de date .
Reprezinta in primul rand un limbaj de programare special conceput pentru informatica de gestiune . Daca facem o comparatie , sugestiva , COBOL este echivalentul FORTRAN-ului pentru sistemele de gestiune a bazelor de date ( din punct de vedere istoric si al performantelor ) .
Limbajul este considerat greoi si inflexibil , iar pentru crearea unui program foarte simplu e nevoie de scrierea unui adevarat eseu .
Singurul avantaj real al COBOL-ului este portabilitatea sa ridicata .
Sistemul dBASE a incintat firmele producatoare de soft , datorita popularitatii sale si pe de alta parte a calitatilor scazute ale implementarilor originale furnizate de firma Ashton-Tate . Au aparut noi implementari ale limbajului care au incercat sa furnizeze unelte profesionale pe baza acestui suport conceptual .
Versiunile FOXBASE 2.10 si FOXBASE PRO se constitue in medii performante atat pentru programatori cat si pentru utilizatori .
II.3.1.4. ISIS
Este distribuit gratis de catre UNESCO , ceea ce il face cu adevarat interesant . Caracteristicile ce il fac interesant sunt :
interactivitate buna ;
posibilitate definire structuri 1 : n ;
suport de retea locala ;
un limbaj intern( o versiune de PASCAL ) cu care se prelucreaza datele ;
adaptabilitate foarte buna .
Se poate afirma fara teama de a gresi ca ORACLE reprezinta cel mai performant
S.G.B.D. disponibil la momentul actual . Pe langa faptul ca poseda avantajele unui mediu de tip relational ORACLE este gandit ca un sistem exhaustiv pentru rezolvarea problemelor de utilizare sau programare .
Limbajul intern folosit este SQL Plus si este permisa conectarea cu alte limbaje externe evoluate ( orientate catre C ) . Putem mentiona :
viteza de lucru foarte buna ;
exploatare interactiva la nivel SQL ;
limitari de lucru greu sau imposibil de atins ( maxim 65535 caractere intr-un camp , numar nelimitat de campuri , de inregistrari ) ;
exploatare eficienta a spatiului pe disc ( memorarea campurilor in format variabil ) .
Oracle este implementat pe majoritatea tipurilor de computere mari , ceea ce ofera
portabilitatea aplicatiilor , dar mai ales posibilitatea conectarii la calculatoare puternice .
Reprezinta un S.G.B.D. cu adevarat profesional . El indeplineste toate cerintele unui produs cu adevarat modern si performant si anume :
interactivitate foarte buna ;
viteza de lucru mare ;
servicii si auxiliare ;
limbaj de programare evoluat ( PAL - Paradox Application Language ) , dotat cu compilator .
II. 4. Limbaje orientate pe calcul tabelar .
Aplicatiile impreuna cu limbajele implementate pentru rezolvarea problemelor descrise in continuarea nu pot fi considerate medii de programare propriu-zise .
Aplicatiile de tip " tabela de calcul " au fost concepute in ajutorul functionarilor , pentru a prelua o parte imensa din rutina de lucru inerenta unor astfel de activitati .
Denumirea provine din limba engleza si este o traducere pentru termenul " spread-sheet"
( spread-intindere,desfasurare,foaie,tabel; sheet-schema,diagrama,a acoperi cu un strat ) .In traducere directa aceasta ar insemna - pentru cazul de fata - organizarea unei foi ( a unui tabel ) .
Iata cum functioneaza un program de tip spread-sheet :
elementul de lucru il reprezinta un tabel ;
un tabel este format din linii si coloane ;
intersectia unei linii cu o coloana se cheama celula ;
tabelul este vizualizat pe ecran prin intermediul unei ferestre ;
in fiecare celula poate exista una din entitatile urmatoare : text , numere , formule , secvente de program , macroinstructiuni .
Pe langa aceste caracteristici specifice unui spread-sheet cerintele minimale ale unui
pachet de calcul tabelar includ :
posibilitatea " cautarilor inverse " ( de la rezultatul unui calcul , la valorile care l-au generat ) ;
posibilitatea de lucru multi-tabel ( mai multe tabelel simultan);
functii de editare si formatare a textului ( editor de texte obisnuit ) ;
functii grafice ( diagrame , prezentari ) ;
sistem de gestiune a bazelor de date ( pentru celulele unui tabel ) ;
tiparire de calitate ( posibilitatae de a lucra cu mai multe tipuri de imprimante , exploatarea rezolutiei unei imprimante laser , set bogat de fonturi ) .
Spre deosebire de limbajele de programare propriu-zise , cele folosite de spread-sheet-uri
sunt special concepute pentru a fi folosite de nespecialisti ( usor de invatat , usor de utilizat) .
Un astfel de limbaj ( de tip interpretor ) se constituie intr-un cadru general pentru rezolvarea problemelor functionarilor din diverse domenii de activitate .
O aplicatie realizata cu un spread-sheet poate fi modificata si adusa la zi direct de catre utilizator , fara a mai fi necesara interventia programatorului . Produsul obtinut are flexibilitate maxima , iar efortul necesar realizarii lui este minim.
Dezavantajele principale ale aplicatiilor realizate cu ajutorul unui spread-sheet le constitue imposibilitatea depasirii cadrului de " programare " oferit si dificultatea de a realiza prelucrari foarte complexe . Insa aceste dezavantaje sunt mai mult teoretice deoarece nu este cazul de a realiza aplicatii cu astfel de cerinte folosind un spread-sheet . Programele de calcul tabelar rezolva in mod stralucit o problema punctuala .
Cele mai cunoscute si raspandite produse de tip " calcul tabelar " sunt :
II.4.1. LOTUS 1-2-3
Lotus 1-2-3 , produs al firmei Lotus Development este in mod sigur cel mai raspandit produs din aceasta categorie . Datorita popularitatii sale el s-a constituit intr-un adevarat standard ( neoficial ) pentru spread-sheet-uri . La nivel de ansamblu , LOTUS se preuinta ca o aplicatie cu buna interactivitate . Reprosurile ce i se pot aduce sunt : meniurile ( uneori stufoase si nelogic ramificate ) si help-ul care nu totdeauna este la obiect .
II.4.2. QUATRO PRO 2.0
Spread-sheet-ul QUATRO , realizat de firma Borland este cel mai nou si puternic produs din categoria sa . El combina intr-un mod fericit tot ceea ce este pozitiv la rivalii sai adaugand si multe facilitati proprii.
II.4.3. EXCEL
Produsul firmei Microsoft , EXCEL este o aplicatie care functioneaza sub Windows . De aici rezulta in mod direct unele din caracteristicile sale ( utilizare mai comoda , meniuri foarte clare si standardizate , functii grafice deosebit de puternice , viteza de lucru inferioara lui Quatro ) .
Cateva specificatii tehnice pentru EXCEL ar fi :
tabela cu dimensiunea maxima de 1638 x 256 celule ;
latimea maxima a unei coloane este de 255 caractere ;
tabelele si grafica pot exista pe foi distincte ;
functioneaua dupa principiul WYSIWYG ;
se pot folosi maxim 4 fonturi la un moment dat ;
limbaj de programare puternic si flexibil ;
posibilitatea definirii de macroinstructiuni ;
nu poseda functie de salvare automata ;
contine suport de functionare in retea ;
detecteaza prezenta coprocesorului matematic si face uz de facilitatile acestuia ;
lucreaza cu memoria expandata.
Specialistii din domeniul cercetarii matematice au la dispozitie unelte de lucru extrem de
utile pentru eliminarea calculului matematic rutinier . In acest scop au fost create limbaje de programare care pot recunoaste si rezolva formule sau ecuatii matematice complexe . Expresiile manevrate pot contine operatii algebrice elementare , operatori de derivare , de integrare , operatori diferentiali care sunt recunoscuti de sistem ca atare . In plus sunt oferite instructiuni absolut necesare pentru a controla un program .
Cele mai importante produse de acest gen sunt REDUCE , SYMNON , MATHCAD , MATHEMATICA , MATHLAB .
II.5.2. Limbaje orientate pe programarea inteligentei artificiale
Acest tip de limbaje difera esential de cele algoritmice . Modalitatea de programare este
descriptiva si are intentia declarata de simulare a rationamentului uman . Pentru rezolvarea unei probleme sunt furnizate seturile de reguli si informatii necesare , iar apoi se descrie in ce consta problema ca atare . Limbajul este capabil sa opereze deductiile ( deciziile ) necesare pentru a rezolva problema intr-un caz particular ce apare in practica .
Asadar , aceste limbaje descriu problema de rezolvat ( in termenii deductiilor logice ) pe cand limbajele de tip algoritmic descriu metoda de rezolvare a problemei . Domeniile de aplicabilitate pentru limbajele de programare a inteligentei artificiale sunt cu predilectie : realizarea de sisteme expert ( programe ce inlocuiesc expertii umani ) , computerizarea procesului de productie , robotica , tratarea limbajelor naturale .
Cele mai importante limbaje de acest tip sunt :
PROLOG ( PROgramming in LOGic ) creat in 1973 si implementat pe PC-uri abia in 1986 de firma Borland sub forma Turbo-Prolog .
LISP ( LISt Processing language ) conceput in 1976 si implementat pe PC-uri de firma Microsoft sub forma MuLISP .
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 2316
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved