Limbaje de Programare

download Limbaje de Programare

If you can't read please download the document

description

Clasificare

Transcript of Limbaje de Programare

S ncercm s rspundem pentru nceput (fr a da un rspuns exact sau definitiv) la cteva ntrebri:
1 ) n primul rnd la ce este bun un limbaj de programare n general?
2) Cum putem clasifica limbajele de programare?
3 ) De ce apar noi limbaje de programare?
4) De ce cineva i-ar propune s nvee un limbaj de programare?
5) Care ar fi primele limbaje de programare pe care un tnr ar trebui s le nvee?

1) La acest ntrebare se poate rspunde cu alta: ce aport au sistemele de calcul n zilele de astzi?
Un limbaj de programare ar fi un set de instrumente prin care se poate rezolva o anumit mulime de probleme concrete. Dac punem n aa fel problema avem o definiie pragmatic asupra limbajelor de programare. Bineneles c fr existena noiunii de limbaj de programare nu ar mai avea sens noiunea de sistem de calcul, astfel explicndu-se apariia primelor limbaje de programare odat cu cea a computerelor electronice. Dac ne referim la primele sisteme de calcul (care erau mecanice, cum ar fi calculatorul lui Pascal sau alte maini simple de socotit) ideea de program nu era bine definit, identificndu-se cu construcia mainii. Totui, dac reflectm puin asupra mainii proiectate de Ada Lovelace, se poate observa o separare destul de clar a noiunii de program (entitate software) de noiunea de construcie dedicat abordrii unei familii mari de probleme. Dac ne uitm un pic pe Wikipedia, gsim c la ora actual exist multiple abordri a acestui subiect. Oricum, se pare c numrul limbajelor de programare depsete la ora actual cifra de 400.

2) Criteriile dup care poate fi clasificat un limbaj de programare n raport cu altul ar fi urmtoarele :
-flexibilitatea- caracteristic creia i-ar corespunde unui anumit limbaj de programare de a fi aplicat unei ct mai mare varieti de arhitecturi hardware (ceea ce poate fi rezumat la portabilitatea pe diverse arhitecturi hardware). Haide s ne punem ntrebarea ce limbaje de programare vor fi utilizate n cazul calculatoarelor cuantice? (la ora actual exist cteva n faz experimental, cum ar fi QCL, qGCL i cteva axate pe programare funcional, de exemplu, QFC, QPL i QML). O alt perspectiv a flexibilitii ar fi dat de capacitatea de a rezolva o anumit problem prin mai multe ci distincte. Putem aprecia flexibilitatea prin capacitiatea unui limbaj de programare de a conlucra cu alte limbaje de programe. De exemplu Java conine biblioteca JNI ce permite apelarea de funcii scrise ntr-un alt limbaj de programare, de pild limbajul C sau ASM, sau cazul limbajului Python ce poate fi extins prin funcii scrise n C sau poate servi ca suport de legare a diverselor alte programe n alte limbaje, i un alt exemplu-limbajul HTML, ce poate fi descris ca o platform standard de dezvoltare a paginilor Web pe care pot fi utilizate alte limbaje de script, de exemplu JavaScript, PHP, Perl, etc.
-familia de algoritmi ce pot fi implementai - aceasta fiind practic una din cele mai importante caracteristici ale unui limbaj de programare. n zilele noastre limbajele de programare ce au devenit cele mai populare sunt capabilile s implementeze structuri de date de complexitate foarte ridicat.
-popularitatea- cu ct un limbaj de programare este mai popular n momentul de fa, cu ct avem mai muli developeri dedicai utilizrii unui anumit limbaj de programare cu att programul pe care l vom crea va avea un ciclu de via mai dinamic. Dac reflectm de exemplu la dezvoltarea n timp a kernel-ului sistemului de operare Linux (dezvoltat de regul n C), vom constata c acesta reprezint unul din cele mai dinamice i de amploare proiecte din lumea opensource. Cu ct limbajul de programare va avea o popularitate mai ridicat cu att vom gsi mai multe resurse de informare i de colaborare cu ali programatori. Deasemeni, dac ne oprim la un anumit limbaj de programare vom vedea cte IDE-uri (Medii de Dezvoltare Integrate) exist pe pia (la disputa C versus Java, C dispune de mai multe IDE-uri, i poate asta c C a dispus de mai mult timp de cnd exist). Oricum, gradul de popularitate a unui limbaj este o chestiune variabil, ce ine de dezvoltarea tehnologic a platformelor hardware a sistemelor de calcul i de apariiile concurente a altor limbaje de programare.
-simplitatea sau expresivitatea- n raport cu limbajul uman obinuit i fa de numrul de caractere ce ar trebui introdus n codul surs nct acest limbaj s poat rezolva o anumit problem. De exemplu, un atu al limbajului de script Python este capacitatea unui program scris n acest limbaj de a rezolva o anumit sarcin printr-un program cruia i corespunde un numr mic de instruciuni (dei la partea grafic se pare c nu st aa de bine).
-apropierea de componenta hardware aceast caracteristic marcnd dac n lmbajul de programare exist funcii ce pot apela diverse componente ale calculatorului i cum acestea trateaz respectivele componente. Aceast caracteristic poate fi corelat cu flexibilitatea respectivului limbaj de programare.
-disponibilitatea tehnologic i aici a sugera s v gndii la dezvoltarea tehnologiilor opensource. Unix, i mai trziu Linux, au reprezentat medii de creare i dezvoltare a multor limbaje. Multe din companiile cu tradiie n software comercial prefer s prezinte limbajele de programare ca nite produse free sau liber deschise spre dezvoltare, crecnd astfel ratingul asociat acestor produse precum i ansa lor de a evolua.
-paradigmele de programare disponibile Exist mai multe paradigme de programare, cum ar fi paradigma programrii imperative, funcionale, etc. n cazul limbajelor de nivel nalt actuale putem discuta despre paradigma programrii procedurale sau de paradigma programrii orientate pe obiecte. n cazul limbajelor low-level (ASM) nu se poate discuta despre programare orientat pe obiect. Oricum, exist limbaje axate exclusiv pe paradigma programrii procedurale (de exemplu limbajul C sau BASIC), alte orientate pe programare pur pe obiecte (limbajul Java), ct i limbaje n care se pot utiliza ambele paradigme (limbajul PHP).
-rapiditatea cu care ruleaz codul scris Pentru nceput vom spune c am putea deosebi dou mari familii de limbaje de programe: prima ar fi cea a limbajelor de script, pentru care codul surs este rulabil printr-o aplicaie suplimentar, adugat sistemului de operare, iar a doua categorie ar fi limbajele destinate producerii de cod binar. La rndul su, cea de-a doua categorie, se ramific n limbaje de programare a cror cod surs este interpretat de ctre un interpretor, i a limbajelor ce sunt compilate. Ultima clasificare nu este rigid i nici definitiv i cel mai bun exemplu ar fi cel al limbajului Java (codul surs este compilat apoi interpretat de maina virtual Java). Se pare c limbajele de script sunt cele mai puin rapide, i de aceea multe din scripturile realizate nu sunt deosebit de complexe. Interpretoarele asigur o portabilitate a codului scris, ns viteza codului produs va fi n principiu mai mic dect n cazul programelor compilate.
-securitatea programelor scrise- i aici ne gndim dac la un anumit program scris ar putea fi adugat o procedur, nct acesta s schimbe ntr-un mod nedorit i neplcut funcionarea respectivului program. Trebuie spus c limbajele de script stau cel mai prost la acest capitol.

3) Limbaje de programare apar datorit factorilor descrii la ncercarea de clasificare de mai sus. ntotdeauna vor exista idei noi care vin s mbunteasc unii dintre aceti parametri. i ca exemplu, primul care mi vine n minte, este limbajul C++00X. Acesta, de fapt o extensie a binecunoscutului limbaj C++, vine ca un nou standard, aducnd faciliti mai ridicate n ceea ce privete expresivitatea, apropierea de probleme reale i mbuntirea productivitii de creare a noilor biblioteci. n contrast, cine i mai amintete despre Algol sau COBOL?

4) Rspunsul, dei poate fi dat n mai multe feluri, este formulat la acelai nivel de simplitate ca i ntrebarea. n primul rnd, fiindc are o problem sau o clas de probleme pe care le vrea s le rezolve cu ajutorul calculatorului. Un alt rspuns ar fi c este curios despre cum ar funciona respectiva tehnologie.

5) n primul rnd prin atributul de tnr nu m refer neaprat la vrsta biologic, putnd fi vorba despre contactul unui individ cu un anumit tip de sistem de calcul sau cu anumite probleme. Oricum, rspunsul la ntrebare l vei gsi cnd o s fii fa n fa cu situaia respectiv, i dac nu o s l gsii singuri ntr-un timp rezonabil o sa v ajute alii.




i acum o mic ideea despre ce vom discuta n acest blog. Pentru nceput despre limbajele cele mai populare (C++ i Java), apoi despre altele...

http://manufactoryprogramming.blogspot.ro