Programazio-lengoaien teoria: berrikuspenen arteko aldeak

Ezabatutako edukia Gehitutako edukia
t r2.7.1) (robota Erantsia: zh:程式語言理論
t Robota: Aldaketa kosmetikoak
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]]ko dataz, ikerketagai garrantzitsu bat, emaitzak PLTari buruzko aldizkari berezitu nahiz informatika eta ingeniaritzako argitalpenetan, oro har, plazaratzen dituena. Unibertsitate mailako informatikako ikasketa-programa guztietan eskatzen da, gaur egun, arlo hau jorratzea.
 
Programazio-lengoaien teoriaren ikur bat, ofiziala ez bada ere, [[Lambda| lambda]] letra [[Alfabeto greko| greko]] minuskula da. 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]] delako 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 ==
[[Archivo:TaxonomyofProgrammingLanguages.png|thumb|300px|right| Programazio-lengoaien taula, taxonomiko eta kronologikoki antolatua.]]
Programazio-lengoaien teoria programazio-lengoaien beren garapenaren aurretik dator, nolabait. [[Lambda kalkulu| Lambda kalkulua]]a, [[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, baina ez zen plazaratu [[1972| 1972a]]a arte (eta ez zen inplementatu [[2000| 2000a]]a arte, Zuse hil eta bost urte geroago). Arrakasta eta sona handiz ezagutu zen estreinako programazio-lengoaia [[Fortran| FORTRAN]] izan zen, [[1954| 1954]] eta [[1957| 1957]] bitartean [[IBM| IBMko]]ko 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:
 
* 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]]ren kontzeptua ere ekarri zuen.
* 1970an:
** [[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]]ak, izen-espazio bateratu bat eta [[Aktore eredu| Aktore ereduko]]ko elementuak bere dituena, lehen mailako [[jarraipen| jarraipenak]]ak ere barne hartuz.
** Backusek, [[1977| 1977ko]]ko [[Turing Sari| Turing Sariko]]ko 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]]a 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:
** [[Philip Wadler| Philip Wadler-ek]] [[Monada (programazio funtzionala)| monaden]] erabilera ekarri zuen, [[Programazio funtzional| programazio-lengoaia funtzionaletan]] idatzitako programak egituratzeko.
 
== Azpiarloak eta eremu erlazionatuak ==
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 azpian 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]], 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 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]]a ordenagailu-programa eta programazio-lengoaien portaeraren zehaztapen formala da.
* [[Programen transformazio| Programen transformazioa]]a programa bat forma (lengoaia) batetik beste batera eraldatzeko prozesua da; [[Programen analisia| 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]]ak.
* ''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, programak sortzen dituzte (beste lengoaia batean edo jatorrizko lengoaiaren azpimultzo batean, beharbada) emaitzatzat.
* [[Lengoaia dedikatu| Lengoaia dedikatuak]]ak problemak domeinu jakin batean bereziki eta modu eraginkor batean ebazteko sortuak izan diren lengoaiak dira.
 
Gainera, PLTa baliatzen da [[Matematika| matematiken]], [[Software-ingeniaritza| software-ingeniaritzaren]] eta [[Hizkuntzalaritza| hizkuntzalaritzaren]] beste adar batzuetaz, bai eta [[Zientzia kognitibo| zientzia kognitiboarenez]] ere.
 
== PLTari buruzko aldizkari eta argitalpen berezituak ==
49. lerroa:
* ''Theoretical Computer Science''
 
Bibliografia osoago bat [http://www.disi.unige.it/research/Categorical_semantics/language/publications.html]-n aurki daiteke; ikus, halaber, [[Informatikari buruzko argitalpenen zerrenda| informatikari buruzko argitalpenen zerrenda]].
 
== Ikus, orobat ==
64. lerroa:
* ''Essentials of Programming Languages'' by Daniel P. Friedman, Mitchell Wand, and Christopher T. Haynes (MIT Press 2001) [http://www.cs.indiana.edu/eopl/]
 
[[Kategoria: Programazio-lengoaien teoria]]
 
[[ca:Teoria de llenguatges de programació]]