Översättare

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 24 oktober 2017; kontroller kräver 44 redigeringar .

Översättare  - ett program eller tekniskt verktyg som utför översättningen av programmet [1] [2] .

Översättning av ett program  är omvandlingen av ett program som presenteras på ett av programmeringsspråken till ett program skrivet på ett annat språk. Översättaren utför vanligtvis också feldiagnostik, genererar ordböcker med identifierare, skriver ut programtexten etc. [1]

Språket som inmatningsprogrammet presenteras på kallas källspråk och själva programmet kallas källkoden . Utdataspråket kallas målspråket .

I det allmänna fallet gäller begreppet översättning inte bara för programmeringsspråk, utan också för andra språk - både formella datorspråk (som HTML - markeringsspråk ) och naturliga språk ( ryska , engelska , etc.) [ 3] [4] .

Typer av översättare

Det finns flera typer av översättare [2] .

Implementeringar

Syftet med översättningen är att konvertera text från ett språk till ett språk som är förståeligt för adressaten. Vid sändning av ett datorprogram kan adressaten vara:

Sändningstyper:

Sammanställning

Språket för processorn (enhet, maskin) kallas maskinspråk, maskinkod . Maskinspråkskoden exekveras av processorn. Vanligtvis är maskinspråk ett lågnivåspråk, men det finns processorer som använder högnivåspråk (till exempel iAPX-432 [5] ). Sådana processorer har dock inte fått någon distribution på grund av deras komplexitet och höga kostnad.

En kompilator  är en sorts översättare som konverterar källkod från ett programmeringsspråk till maskinspråk [6] .

Sammanställningsprocessen består vanligtvis av flera steg:

Programmet kan använda tjänster som tillhandahålls av operativsystemet och tredjepartsbibliotek (till exempel bibliotek för att arbeta med filer och bibliotek för att skapa ett grafiskt gränssnitt) . Länkning eller länkning utförs för att lägga till maskinkod från andra objektfiler (kod för statiska bibliotek ) och information om dynamiska bibliotek till en objektfil . Länkning eller länkning görs av länken eller länken . Länkaren kan vara ett fristående program eller en del av en kompilator . Länkaren skapar en körbar fil . Den körbara filen (programmet) startas enligt följande:  

Sammanställningsfördelar:

Nackdelar med sammanställning:

En assembler  är en kompilator som konverterar text från assemblerspråk till maskinspråk . Assembly språk  är ett språk nära maskinspråk , ett lågnivåspråk .

Tolkning

Tolkning är processen att läsa och exekvera källkod . Genomförs av ett tolkprogram .

Tolken kan arbeta på två sätt:

  1. läs kod och exekvera den omedelbart ( ren tolkning [6] );
  2. läs koden, skapa en mellanrepresentation av koden i minnet ( bytecode eller p-code ), exekvera den mellanliggande representationen av koden ( blandad implementering [6] ).

I det första fallet används inte översättning och i det andra fallet används översättning av källkoden till mellankoden.

Stadier av tolken:

  1. lexikal analys ;
  2. analysera ;
  3. semantisk analys ;
  4. skapande av en mellanrepresentation av koden (inte utförd med ren tolkning);
  5. avrättning.

Tolken modellerar en maskin ( virtuell maskin ), implementerar en cykel för hämtning av maskinkommandon. Maskinkommandon skrivs inte på maskinspråk, utan på ett högnivåspråk . En tolk kan kallas en virtuell maskinspråksexekutor .

Ren tolkning tillämpas vanligtvis på språk med en enkel struktur, såsom skriptspråk , APL och Lisp .

Exempel på tolkar som producerar bytekod : Perl , PHP , Python , Erlang .

Fördelar med tolkar framför kompilatorer:

Nackdelar med tolkar jämfört med kompilatorer:

Jämförelse mellan en ren tolk och en bytekodgenererande tolk :

Dynamisk kompilering

Dynamisk eller JIT-kompilering - översättning, där käll- eller mellankoden konverteras (kompileras) till maskinkod direkt vid körning, "on the fly" ( engelska  just in time , JIT ). Varje kodstycke kompileras endast en gång; kompilerad kod cachelagras och återanvänds vid behov.

Fördelar med dynamisk kompilering jämfört med kompilering:

Nackdelar med dynamisk sammanställning jämfört med sammanställning och ren tolkning:

Dynamisk kompilering är väl lämpad för webbapplikationer .

Dynamisk kompilering dök upp och stöds till viss del i implementeringar av Java , .NET Framework , Perl , Python .

Förvirring av översättning och tolkning

Begreppen "översättning" och "tolkning" är olika. Under översättningen konverteras programkoden från ett språk till ett annat. Under tolkning exekveras programmet.

Eftersom syftet med översättning vanligtvis är att förbereda för tolkning, betraktas dessa processer tillsammans. Till exempel karakteriseras programmeringsspråk ofta som "kompilerade" eller "tolkade" beroende på om språket används på ett övervägande sätt: kompilering eller tolkning. Dessutom kompileras nästan alla lågnivå- och tredjegenerationsspråk , som assembler , C eller Modula-2 , och språk på högre nivå , som Python eller SQL  , tolkas.

Å andra sidan finns det en interpenetration av översättnings- och tolkningsprocesser: tolkar kan kompilera (inklusive dynamisk kompilering), och översättare kan behöva tolkning för att implementera metaprogrammering (till exempel för makron i assemblerspråk , villkorlig kompilering i C eller mallar i C++ ).

Dessutom kan samma programmeringsspråk både översättas och tolkas, och i båda fallen måste det finnas gemensamma stadier av analys och igenkänning av konstruktioner och direktiv för källspråket. Detta gäller både mjukvaru- och hårdvaruimplementationer - till exempel x86 - familjens processorer, innan de exekverar maskinspråksinstruktioner , avkodar dem, markerar operandfält i opkoder ( indikerar register , minnesadresser , konstanter ), bitdjup etc., och i In Pentium processorer med NetBurst - arkitekturen översätts samma maskinkod dessutom till en sekvens av mikrooperationer innan den lagras i den interna cachen .

Anteckningar

  1. 1 2 GOST 19781-83 // Datavetenskap. Terminologi: Referensmanual. Nummer 1 / Granskare Ph.D. tech. Vetenskaper Yu. P. Selivanov. - M . : Publishing house of standards, 1989. - 168 sid. - 55 000 exemplar.  — ISBN 5-7050-0155-X .
  2. 1 2 Pershikov V.I., Savinkov V.M. Explanatory Dictionary of Informatics / Granskare: Ph.D. Phys.-Matte. Sci. A. S. Markov och Dr. Phys.-Math. Vetenskaper I. V. Pottosin. - M. : Finans och statistik, 1991. - 543 sid. — 50 000 exemplar.  - ISBN 5-279-00367-0 .
  3. ST ISO 2382/7-77 // Datavetenskap. Terminologi. Dekret. op.
  4. Dictionary of Computing Systems = Dictionary of Computing / Ed. V. Illingworth m. fl.: Per. från engelska. A. K. Belotsky och andra; Ed. E. K. Maslovsky. - M . : Mashinostroenie, 1990. - 560 sid. - 70 000 (ytterligare) exemplar.  - ISBN 5-217-00617-X (USSR), ISBN 0-19-853913-4 (Storbritannien).
  5. Organik E. Organisation of the Intel 432 System = En programmerares syn på Intel 432-systemet / Per. från engelska. - M . : Mir, 1987. - S. 20, 31. - 446 sid. - 59 000 exemplar.
  6. 1 2 3 Robert W. Sebesta. 1.7. Implementeringsmetoder // Grundläggande begrepp för programmeringsspråk \u003d Begrepp av programmeringsspråk / Per. från engelska. - 5:e uppl. — M .: Williams , 2001. — S. 45-52. — 672 sid. - 5000 exemplar.  — ISBN 5-8459-0192-8 (ryska), ISBN 0-201-75295-6 (engelska).

Litteratur