Tradukilo

**Tradukilo** estas komputila programo kiu tradukas homlegeblan programon al bazaj instrukcioj por la komputilo. Tiu traduko fariĝas unufoje por ĉiu programo kaj ĉiu sistemo. Se la programo estas legata kaj tuj efektivigata, oni parolas pri interpretilo: la komputilo tiam ne tradukas unufoje, sed ĉiufoje kiam la programo estas uzata.

## Principo kaj historio 
Programisto skribas komputan programon kun programa lingvo. Programa lingvo estas programaj vortoj, kiujn la programisto skribas: ili nomiĝas simboloj. Plie programa lingvo havas rulojn, kiuj ebligas asocii simbolojn kune. Pro la komputilo ne povas kompreni tekston, oni devas traduki tiun al ĝi. La programo, kiu tradukas tekston, nomiĝas **tradukilo** ĉar ĝi tradukas la simbolojn de la teksto. La teksto nomiĝas la origina teksto (aŭ pli ofte fontkodo).

Pro la tradukado de la origina teksto en komputaj kodoj devas ĝuste respekti la lingvajn rulojn de la programa lingvo, la unua tradukilo estis malfacila: ĉirkaŭ la jaro 1954, programistoj ne havis la aktualajn programojn, kiuj helpas konstrui tradukilon. Fakte la tradukilo de la programa lingvo *Fortran* necesis la laboradon de multaj homoj: se oni supozus, ke nur unu homo laborus sur tiu projekto dum tiu epoko, tiam li necesus 18 jarojn por krei ĝin.

La tradukado povas esti malpli kompleksa, kiam la programa lingvo havas klaran strukturan difinon. Tio okazis en la jaro 1960 kun la unua struktura programlingvo *Algol 60*, kies traduka metodo estas ankoraŭ uzata hodiaŭ. Estis la unua fojo, ke la sciencisto *Peter Naur* uzis notacion por la difino de struktura programlingvo. Tiu notacio nomiĝis Formo de Backus–Naur. De tiu notacio, la sciencistoj hodiaŭ uzas pli vastan notacion, kiu nomiĝas Plivasta notacio de Back-Naur formo.

## Funkciado de la tradukilo 
La komputa tradukado konsistas el tiuj partoj:

# La **leksika analizo**. La tradukilo tradukas ĉiun simbolon el la origina teksto en simbola kodo, kiu havas  signifon nur por la sintaksa analizo (la dua parto).
# La **sintaksa analizo**. La programa lingvo havas rulojn: la programisto kelkfoje ne povas apude skribi du simbolojn. La tradukitaj simboloj ebligas al la sintaksa analizo ekzameni, ke la programisto respektis la rulojn de la programa lingvo. Konsekvence tiu parto kreas la prezenton de la sintaksa strukturo (la sintaksa arbaro) de la origina teksto. Plie la sintaksa analizo havas subparton
# La **speca kontrolo**. Programa lingvo povas speci la ŝanĝeblon aŭ la agadon: kiam la agado ekzemple finiĝas, tiam ĝi donas valoron de la datenspeco. La tradukilo do devas analizi, ke la programisto ĝuste asociis datenspecojn, kiel ekzempla estas la asocio inter la operacisimbolo (ekzemplo estas la adicia simbolo +) kaj du valoroj de la datenspecoj (ekzemplo estas la entjero 3 kun la reelo 3.14: ĉu la programa lingvo do devas operacii la du malsamajn datenspecojn "entjero" kaj "reelo"?).
# La **koda farado**. Laŭ la sintaksa strukturo de la dua parto, la tradukilo tradukas ĝin en komputaj kodoj. En la mondo ekzistas malsamaj komputiloj (procesoroj): ili ne uzas la samajn kodojn por komputi. Pro tio, la koda farado estas la parto, kiu demandas grandan laboron: ĝi do havas subpartojn.
alternative=Skemo de la tradukilo, kiu konsistas el tri fazoj.|centra|eta|1000x1000ra|La komputa tradukado konsistas el tri fazoj. La unua fazo (la leksika analizo) tradukas ĉiun simbolon el la origina teksto en simbola kodo. La dua fazo (la sintaksa analizo) legas la simbolajn kodojn kaj poste ebligas al la sintaksa analizo ekzameni, ke la programisto respektis la rulojn de la programa lingvo. La tria fazo, laŭ la sintaksa strukturo de la dua fazo, tradukas ĝin en komputaj kodoj.
Kiam la programistoj kreis la unuajn tradukilojn, ne ekzistis tiom da memoroj, kiom la komputilo hodiaŭ havas. La programisto do devis krei plurajn partojn, por ke li registris ĉiun en la pasinta malgranda memoro. La parto nomiĝis la paso kaj la tradukilo nature nomiĝis la multpasa tradukilo. Hodiaŭ modernaj komputiloj proponas pli kompleksan tradukilon: ĝi ne atendas, ke la antaŭa paso finiĝu. Kiam la unua paso komenciĝas, tiam la dua kaj la tria paso tuj komenciĝas. Tiu tradukilo nomiĝas *unupas-tradukilo*, ĉar ŝajnas, ke ekzistas nur unu paso. Kvankam tia tradukilo estas kompleksa, la rapideco miloble multiĝas.

Ekzistas ankaŭ alia maniero krei tradukilon, kiu prezentas nur du partojn. La antaŭa parto kaj la malantaŭa parto nomiĝas la tradukil-fronto kaj la tradukil-malfronto :

# La **tradukil-fronto** konsistas el la leksika kaj sintaksa analizo kaj la speca kontrolo: ili kune kreas la arbaron, kiu prezentas la sintaksan strukturon de la origina teksto.
# La **tradukil-malfronto**. Laŭ la sintaksa arbaro, la koda farado legas ĝin kaj kreas la komputajn kodojn. Tiel per la sintaksa arbaro, la tradukilo povas krei la komputajn kodojn de ĉiu komputilo (procesoro).
alternative=Skemo de la tradukilo, kiu konsistas el du partojn.|centra|eta|480x480ra|Unu el la manieroj krei tradukilon, tiu kiu prezentas du partojn: la antaŭa kaj malantaŭa partoj.

## Referencoj