Programazio-lengoaien teoria: berrikuspenen arteko aldeak

Ezabatutako edukia Gehitutako edukia
No edit summary
No edit summary
2. lerroa:
[[Archivo:Lambda en minúsculas.png|250px|thumb| Lambda minuskula.]]
 
''' Programazio-lengoaien teoria'''[[Informatika| informatikaren]] adar bat da, [[Programazio-lengoaia| programazio-lengoaien]] eta beren [[Programazio-lengoaia#Programazio-lengoaien ezaugarriak| ezaugarrien]] diseinuaz, inplementazioaz, analisiaz, karakterizazioaz eta sailkapenaz arduratzen dena. Diziplina anitzeko eremu bat da, [[Matematika| matematika]], [[Software-ingeniaritza| softwarearen ingeniaritza]], [[Hizkuntzalaritza| hizkuntzalaritza]] eta [[Zientzia kognitibo| zientzia kognitiboen]] jakintza-arloekin zerikusia (eta, zenbaitetan, bai eragina ere) duena. Informatikaren adar ezagun eta aintzatetsia da, eta, [[2006| 2006ko]] dataz, ikerketagai garrantzitsu bat, emaitzak PLTari buruzko aldizkari berezitu nahiz informatika eta ingeniaritzako argitalpenetan, oro har, plazaratzen dituena. UnibertsitateArlo mailakohau informatikakojorratzea ikasketa-programa guztietan eskatzenezinbestekoa da, gaur egun, arlounibertsitate haumailako jorratzeainformatikako ikasketa-programa guztietan.
 
Programazio-lengoaien teoriaren ikur bat, ofiziala ez bada ere, [[Lambda| lambda]] letra [[Alfabeto greko| greko]] minuskula da programazio-lengoaien teoriaren ikur, ofiziala ez bada ere. Erabilera hau [[Lambda kalkulu| lambda kalkulutik]] dator, programazio-lengoaien ikertzaileek erruz erabiltzen duten [[Eredu konputazional| eredu konputazionaletik]], alegia. Programazioaren eta programazio-lengoaien gaineko testu eta artikulu askok erabiltzen dute lambda, modu batera edo bestera. [[:en:Structure and Interpretation of Computer Programs| ''Estructura e Interpretación de Programas de Ordenador'']] testu-liburu klasikoaren azala ilustratzen du, eta [[Scheme| Scheme programazio-lengoaiaren]] sortzaile diren [[Gerald Jay Sussman| Gerald Jay Sussman]] eta [[Guy Steele| Guy Steele-k]] idatzitako [[Lambda artikulu| ''lambda'' artikulu]] delakodirelakoen saileko askoren tituluetan ageri da. Programazio-lengoaien teoriari buruzko gune ezagun batek [[:en:Lambda the Ultimate| ''Lambda the Ultimate'']] (''funtsezko lambda'') du izena, Sussman eta Steeleren ohorez.
 
== Historia ==
10. lerroa:
Programazio-lengoaien teoria programazio-lengoaien beren garapenaren aurretik dator, nolabait. [[Lambda kalkulu| Lambda kalkulua]], [[Alonzo Church]], [[Max HL. Solis Villareal]] eta [[Stephen Cole Kleene| Stephen Cole Kleene-k]] 1930eko hamarkadan garatua, munduko lehen programazio-lengoaietakotzat hartzen da, nahiz eta bere helburua, programatzaileek sistema informatiko batentzako algoritmoak ''deskribatzeko'' bitarteko bat izatea baino gehiago, konputazioa ''modelatzea'' izan. [[Programazio funtzional| Programazio-lengoaia funtzional]] askoren ezaugarria lambda kalkuluari [http://www.c2.com/cgi/wiki?ModelsOfComputation] ''itxura fin'' bat ematea izan da, eta lengoaia asko kalkulu horren bidez deskribatzen dira.
 
Proposatu zen lehen berezko programazio-lengoaia [[Plankalkül| Plankalkül]] izan zen, [[Konrad Zuse| Konrad Zuse-k]] 40etan diseinatu zuena,diseinatua baina ez zen plazaratu [[1972| 1972a]] arte (etaplazaratu ez zenzena inplementatu(eta [[2000| 2000a]] arte, Zuse hil eta bost urte geroago arte, inplementatu ez zena). Arrakasta eta sona handiz ezagutu zen estreinako programazio-lengoaia [[Fortran| FORTRAN]] izan zen, [[1954| 1954]] eta [[1957| 1957]] bitartean [[IBM| IBMko]] ikertzaile liberatuz osatutako talde batek garatua, [[John Backus| John Backus-en]] zuzendaritzapean. FORTRANen arrakastak zientzialari-batzorde baten sorrera ekarri zuen, programazio-lengoaia "unibertsal" bat garatzea helburu; ahalegin horren emaitza [[Algol 58| ALGOL 58]] izan zen. Beste alde batetik, [[Mit| MITeko]] [[John McCarthy| John McCarthy-k]] [[Lisp| LISP programazio-lengoaia]] garatu zuen (Lambda kalkuluan oinarrituz), mundu akademikoan garatutako lehen lengoaia arrakastatsua. Hasierako ahalegin horien arrakasta zela-eta, programazio-lengoaien gaia 1960ko hamarkadan, eta bai handik aurrera ere, ikergai nagusietako bat bihurtu zen.
 
Hona hemen programazio-lengoaien teoriaren historian harrezkero giltzarri izan diren beste gertaera batzuk:
16. lerroa:
* 1950eko hamarkadan, [[Noam Chomsky| Noam Chomsky-k]] [[Chomsky-ren hierarkia| Chomsky-ren hierarkia]] garatu zuen, [[Hizkuntzalaritza| hizkuntzalaritzaren]] arloan; aurkikuntza horrek zuzeneko eragina izan zuen programazio-lengoaien teorian eta informatikaren beste adar batzuetan.
* 1960ko hamarkadan, berriz, [[Simula| Simula]] lengoaia garatu zuten [[Ole-Johan Dahl| Ole-Johan Dahl]] eta [[Kristen Nygaard| Kristen Nygaard-ek]], askok [[Objektuei orientatutako lengoaia| objektuei orientatutako]] lehen lengoaiatzat hartzen dutena; Simulak [[korrutina| korrutinaren]] kontzeptua ere ekarri zuen.
* 1970an1970ean:
** [[Xerox PARC| Xerox PARC-eko]] zientzialari talde txiki batek, [[Alan Kay| Alan Kay-ren]] zuzendaritzapean, [[Smalltalk| Smalltalk]] sortu zuen, objektuei orientatutako lengoaia bat, zuen garapen-inguruneari esker entzute handia lortu zuena, ez baitzen ordura arte halakorik ezagutzen.
** Sussman eta Steelek [[Scheme| Scheme programazio-lengoaia]] garatu zuten, Lisp-en dialekto bat, [[esparru lexiko| esparru lexikoak]], izen-espazio bateratu bat eta [[Aktore eredu| Aktore ereduko]] elementuak bere dituena, lehen mailako [[jarraipen| jarraipenak]] ere barne hartuz.
** Backusek, [[1977| 1977ko]] [[Turing Sari| Turing Sariko]] bere hitzaldian, industrian erabiltzen ari ziren lengoaien kritika gogorra egin eta programazio-lengoaien klase berri bat proposatu zuen, gaur egun [[Programazio-lengoaia funtzional| programazio-lengoaia funtzional]] esaten diegunak, alegia.
** [[Process calculus| Process calculus]] delakoa, [[Robin Milner| Robin Milner-en]] [[Sistema komunikatuen kalkulua| sistema komunikatuen kalkulua]] eta [[C. A. R. Hoare| C. A. R. Hoare-ren]] [[Prozesuen komunikatze sekuentzial| prozesuen komunikatze sekuentziala]] agertu ziren; hala nola, [[Carl Hewitt| Carl Hewitt-en]] [[Aktore eredu| Aktore eredua]] bezalako konkurrentzia-eredu antzekoak.
** [[Moten teoria| Moten teoria]] programazio-lengoaiei diziplina gisa aplikatu zitzaien, Milner buru zela; aplikatze horrek aurrerakuntza handia ekarri dio moten teoriari, urte gutxi batzuetan.
* 1990eko hamarkadan:
28. lerroa:
Hainbat azterketa-alor daude, programazio-lengoaien teoriaren beraren barrukoak edo, barrukoak izan gabe, berorrengan eragin handia dutenak; askotan nabariki gainjartzen dira.
 
* [[Konpiladore| Konpiladoreen teoria]] da ''konpiladoreen'' (edo, eskuarki, ''itzultzaileen'') sorkuntzaren azpianatzean dagoen oinarri formala; konpiladoreak: lengoaia batean idatzitako programa beste forma batera itzultzen duten programak. Konpiladore baten ekintzak honela sailkatzen dira tradizionalki: ''analisi sintaktikoa'' (eskaneatzea eta parseatzea), ''analisi semantikoa'' (programak egin behar duena zehaztea), ''optimizazioa'' (errendimendua neurri batean hobetzea, exekuzio-abiaduraren aldetik tipikoki) eta ''kodearen sorkuntza'' (programa baliokide baten sortzea, nahi den lengoaian: CPU baten [[Agindu-multzo| agindu multzoari dagokionean]] dagokion lengoaian, eskuarki).
* [[Moten teoria| Moten teoria]] [[mota-sistema| mota-sistemen]] azterketaz arduratzen da; mota-sistemak "programa-portaera batzuen absentzia frogatzen duten metodo sintaktiko tratagarriak dira, sententziak sailkatzen dituztenak konputatzen dituzten balio moten arabera sailkatzen dituztenak." (''Types and Programming Languages'', MIT Press, 2002). Programazio-lengoaia asko beren mota-sistemen ezaugarriek bereizten dituzte.
* [[Semantika formal| Semantika formala]] ordenagailu-programa eta programazio-lengoaien portaeraren zehaztapen formala da.
* [[Programen transformazio| Programen transformazioa]] programa bat forma (lengoaia) batetik beste batera eraldatzeko prozesua da; [[Programen analisiaanalisi| programen analisia]] programa bat bere ezaugarri nagusien arabera aztertzean datza (programa-errore klase zenbaiten falta, esaterako).
* ''Exekuzio-garaiko sistemez'' hitz egiten denean, programazio-lengoaien eta berorien osagaientzako [[Runtime ingurune| ''runtime'' inguruneen]] garapenaz hitz egiten da, hau da, [[Makina birtual| makina birtualak]], [[Zabor-bilketa| zaborraren bilketa]] eta [[kanpo-funtzioentzako interfaze| kanpo-funtzioentzako interfazeak]].
* ''Programazio-lengoaien analisi konparatiboak'', berriz, programazio-lengoaiak mota desberdinetan sailkatzen ditu, beren ezaugarrietan oinarrituz; programazio-lengoaia kategoria zabalei [[Konputazio-paradigma| konputazio-paradigma]] esaten zaie maiz.
* [[Metaprogramazioa| Metaprogramazioa]] ordena handiagoko programen sorkuntza da; programa horiek, exekutatzen direnean, emaitzatzat programak sortzen dituzte (beste lengoaia batean edo jatorrizko lengoaiaren azpimultzo batean, beharbada) emaitzatzat.
* [[Lengoaia dedikatu| Lengoaia dedikatuak]] problemak domeinu jakin batean bereziki eta modu eraginkor batean ebazteko sortuak izan diren lengoaiak dira.