Konpiladore

Wikipedia(e)tik
Hona jo: nabigazioa, Bilatu
Konpiladorea.jpg

Konpiladorea programak itzultzeko programa informatiko bat da. Honekin programazio lengoaia batean idatzita dagoena beste programazio lengoaia batera pasatzen da ordenagailua interpretatzeko gai den beste programa bat sortuz. Aipatutako bigarren lengoaia normalean makina kodea izaten da baino testua ere izan daiteke. Prozesu hau konpilazioa bezala ezagutzen da.

Konpiladoreak programa baten iturburu-kodea itzultzea ahalbidetzen du, goiko edo beheko mailako beste lengoaia batera (makina-lengoaia, normalean). Honela, programatzaile batek gizakiek erabiltzen duten lengoaian diseina dezake berak nahi duen programa. Ondoren, beste programa batera konpilatuko da ordenagailuan erabiltzeko.

XIX. mendean, Charles Babbage matematikari britainiarrak, ordenagailu digital modernoaren printzipioak sortu zituen. Makina batzuk asmatu zituen: makina diferentziala, problema matematiko konplexuak konpontzeko. Historialari askok Babbage eta Augusta Ada Byron (1815-1852) hartzen dituzte ordenagailu digital modernoaren asmatzaile bezala. Garai hartako teknologia ez zen gai bere kontzeptuak praktikara eramateko baina bere asmakizunetako batek: makina analitikoak bazituen ordenagailu modernoaren hainbat ezaugarri.

Konpiladore baten zatiak[aldatu | aldatu iturburu kodea]

Normalean konpiladoreak bi zati dituzte:

  • Front End: iturburu kodea analizatzen duen zatia da, bere balioa egiaztatzen du, honela deribazio arbola sortu eta sinbolo taulako balioak betetzeko. Zati hau plataforma edo konpilatu behar den sistemarekiko independentea da
  • Back End: makina kodea sortzen duen zatia da, plataforma berezi batekoa, analisi fasean lortutako emaitzekin, Front End-en bitartez egindakoa.

Zatiketa honek berak ahalbidetzen du Back End erabiltzea makina kodea sortzeko programazio lengoaia ezberdinetatik. Gainera, Front End bera ere zenbait plataforma ezberdinetan ere makina kodea sortzeko erabiltzen da. Back End-ek sortzen duen kodea ez da zuzenean exekutatzen, beste programa bati lotu behar baitzaio.

Historia[aldatu | aldatu iturburu kodea]

1946an sortu zen lehen ordenagailu digitala. Hasiera batean, makina hauek zenbakizko kodea exekutatzen zuten makinaren zirkuitura eragiketa bakoitzeko egoera eramanez, makina lengoaia deitzen dena.

Lehen erabiltzaileak berehala ohartu ziren ordenagailu hauen abantailaz, hau da, programak gako errazagoen bidez idatz zitezkeela. Azken batean, gako guzti horiek eskuz itzultzen ziren makina lengoaiara. Gako hauek osatzen dute mihiztadura lengoaia.

Dena dela, mihiztadura-lengoaia makina baten lengoaia izaten jarraitzen zuen, baino erabil errazagoa. Ikerketa lanak beste lengoaia batera bideratu ziren, pertsonarentzat errazago izango zen batera, alegia. Lehen konpiladorea Grace Hopper-ek idatzi zuen 1952an programazio lengoaiarako A-0. 1950an John Backus-ek IBM ikerketa bat bideratu zuen lengoaia aljebraikoari buruz. 1954an formula matematikoak idaztea posible zen lengoaia bat sortu zuten eta FORTRAN (FORmulae TRANslator) izena eman zioten. Maila altuko lehen lengoaia izan zen eta 1957an ordenagailuan erabil zitekeen IBM modelo 704 bezala.

Honela sortu zen lehen aldiz lengoaia bat beste batera itzultzen zuen programaren kontzeptua. Itzulitakoa maila altuko lengoaiatik maila baxuko lengoaiara denean konpiladorea erabiltzen da Bere iturburu kode propioa konpilatzeko gai zen konpiladorea Hart eta Levin-ek sortutakoa da MIT-en 1962an. 1970etik aurrera normaltzat jo da konpilatzen den lengoaia berberean idaztea, ordezko bezala Pascal oso erabilia izan den arren.

Konpiladore motak[aldatu | aldatu iturburu kodea]

  • Konpiladore gurutzatuak: funtzionamenduan dagoen sistema ezberdin batentzat sortzen dute kodea.
  • Konpiladore optimizatuak: kodean aldaketan egiten dituzte efizientzia hobetzeko, baina beti ere funtzionamenduan dagoen jatorrizko programa errespetatuz
  • Pasada bateko konpiladoreak: iturburu kodea behin bakarrik irakurrita sortzen dute makina lengoaia
  • Pasada bat baino gehiagoko konpiladoreak: behin baina gehiagotan irakurtzen dute iturburu kodea makina lengoaia sortu baino lehen
  • JIT konpiladoreak: interprete baten zati dira eta behar den neurrian konpilatzen dituzte kode zatiak

Konpiladore bat sortzerako garaian: informatikaren lehen urratsetan, konpiladorearen softwarea konplexuenetakotzat zuten Lehen konpiladoreak makina lengoaian programatzen ziren zuzenean. Konpiladorea sortuz geroztik, konpiladorearen bertsio ezberdinak sortu daitezke konpiladore horrek konpilatzen duen lengoaia berberera. Gaur egun, badaude tresnak konpiladoreak idazterako garaian gauzak errazten dituztenak. Tresna hauek, sintaxi-analizatzailearen eskeletoa egina dute, programatzailearen esku ekintza semantikoak soilik utziz.

Ikus, gainera[aldatu | aldatu iturburu kodea]