Hva er en oversetter? Programmerings språk. Kompilatorer og tolker. Pakker for behandling av grafisk informasjon

De spesifikke utførerne av programmeringsspråk er oversettere og tolker.

Oversetter er et program på grunnlag av hvilket en datamaskin konverterer programmer som er lagt inn i den til maskinspråk, siden den kan kjøre programmer som kun er skrevet på språket til prosessoren, og algoritmer spesifisert på et annet språk må oversettes til maskinspråk før de utføres.

Oversetter- et program eller teknisk middel som sender et program.

Sending av programmet- transformasjon av et program presentert på et av programmeringsspråkene til et program på et annet språk, tilsvarende når det gjelder utførelsesresultater med det første. Oversetteren diagnostiserer vanligvis også feil, lager ordbøker over identifikatorer, produserer programtekster for utskrift, etc.

Språket som inndataprogrammet er presentert på kalles opprinnelig språk, og selve programmet - kildekoden. Utgangsspråket kalles målspråket eller objektiv kode. Hensikten med oversettelsen er å konvertere tekst fra ett språk til et annet, noe som er forståelig for mottakeren av teksten. Når det gjelder oversetterprogrammer, er adressaten en teknisk enhet (prosessor) eller et tolkeprogram.

Oversettere implementeres som kompilatorer eller tolker. Når det gjelder å utføre arbeidet, er kompilatoren og tolken vesentlig forskjellige.

Språket til prosessorer (maskinkode) er lavt nivå. En oversetter som konverterer programmer til maskinspråk som mottas og kjøres direkte av prosessoren kalles kompilator.

Kompilator(Engelsk) kompilator- kompilator, samler) leser hele programmet, oversetter det og lager en komplett versjon av programmet på maskinspråk, som deretter kjøres. Resultatet av kompilatoren er en binær kjørbar fil.

Fordelen med kompilatoren: programmet kompileres én gang og det kreves ingen ekstra transformasjoner hver gang det kjøres. Følgelig er det ikke nødvendig med en kompilator på målmaskinen som programmet er kompilert for. Ulempe: Et eget kompileringstrinn senker skriving og feilsøking og gjør det vanskelig å kjøre små, enkle eller engangsprogrammer.

Hvis kildespråket er et assemblerspråk (et lavnivåspråk nær maskinspråk), kalles kompilatoren av et slikt språk montør.

En annen metode for implementering er når programmet kjøres ved hjelp av tolk ingen sending i det hele tatt.

Tolk(Engelsk) tolk- tolk, tolk) oversetter og utfører programmet linje for linje.

Tolkeprogramvaren modellerer en maskin hvis hente-utførelsessyklus opererer på instruksjoner på høynivåspråk, i stedet for på maskininstruksjoner. Denne programvaresimuleringen skaper en virtuell maskin som implementerer språket. Denne tilnærmingen kalles ren tolkning. Ren tolkning brukes vanligvis for språk med en enkel struktur (for eksempel APL eller Lisp). Kommandolinjetolkere behandler kommandoer i skript i UNIX eller i batchfiler (.bat) i MS-DOS, også vanligvis i ren tolkningsmodus.

Fordelen med en ren tolk: fraværet av mellomhandlinger for oversettelse forenkler implementeringen av tolken og gjør den mer praktisk å bruke, inkludert i dialogmodus. Ulempen er at en tolk må være tilstede på målmaskinen hvor programmet skal kjøres. Dessuten er det som regel et mer eller mindre betydelig tap i hastighet. Og egenskapen til en ren tolk, at feil i det tolkede programmet oppdages kun når det gjøres et forsøk på å utføre en kommando (eller linje) med en feil, kan betraktes som både en ulempe og en fordel.

Det er kompromisser mellom kompilering og ren tolkning i implementeringen av programmeringsspråk, når tolken, før han kjører programmet, oversetter det til et mellomspråk (for eksempel til bytekode eller p-kode), mer praktisk for tolkning (det vil si, vi snakker om en tolk med innebygd oversetter) . Denne metoden kalles blandet gjennomføring. Et eksempel på en blandet språkimplementering er Perl. Denne tilnærmingen kombinerer både fordelene med en kompilator og tolk (større utførelseshastighet og brukervennlighet) og ulemper (ytterligere ressurser kreves for å oversette og lagre et program på et mellomspråk; en tolk må leveres for å utføre programmet på målet maskin). I tillegg, som i tilfellet med en kompilator, krever en blandet implementering at kildekoden er fri for feil (leksikalsk, syntaktisk og semantisk) før kjøring.

Med økningen i dataressurser og utvidelsen av heterogene nettverk (inkludert Internett) som kobler sammen datamaskiner av forskjellige typer og arkitekturer, har en ny type tolkning dukket opp, der kildekoden (eller mellomkoden) kompileres til maskinkoden direkte ved kjøring. , "i farten." Allerede kompilerte deler av kode bufres slik at når de åpnes igjen, mottar de umiddelbart kontroll, uten rekompilering. Denne tilnærmingen kalles dynamisk kompilering.

Fordelen med dynamisk kompilering er at hastigheten på programtolkning blir sammenlignbar med hastigheten på programutførelse i konvensjonelle kompilerte språk, mens selve programmet lagres og distribueres i en enkelt form, uavhengig av målplattformer. Ulempen er større implementeringskompleksitet og større ressurskrav enn ved enkle kompilatorer eller rene tolker.

Denne metoden fungerer bra for nettapplikasjoner. Følgelig har dynamisk kompilering dukket opp og støttes i en eller annen grad i implementeringer av Java, .NET Framework, Perl, Python.

Når et program er kompilert, trengs verken programmets kildekode eller en kompilator for å kjøre programmet. Samtidig må programmet som behandles av tolken oversettes på nytt til maskinspråk hver gang programmet startes. Det vil si at kildefilen er direkte kjørbar.

Kompilerte programmer kjører raskere, men tolkede programmer er lettere å fikse og endre.

Hvert spesifikt språk er orientert enten mot kompilering eller tolkning - avhengig av formålet det ble laget for. For eksempel brukes C++ vanligvis til å løse ganske komplekse problemer der programhastighet er viktig, så dette språket implementeres ved hjelp av en kompilator.

For å oppnå høyere driftshastighet for programmer i tolkede programmeringsspråk, kan oversettelse til mellombytekode brukes. Språkene som tillater dette trikset er Java, Python og noen andre programmeringsspråk.

Algoritme for en enkel tolk:

2. analysere instruksjonene og bestemme passende handlinger;

3. iverksette passende tiltak;

4. hvis betingelsen for programavslutning ikke nås, les følgende instruksjoner og gå til trinn 2

Oversettere implementeres som kompilatorer eller tolker. Når det gjelder å utføre arbeidet, er kompilatoren og tolken vesentlig forskjellige.

Kompilator(Engelsk) kompilator- kompilator, samler) leser hele programmet fullstendig, oversetter det og lager en komplett versjon av programmet på maskinspråk, som deretter kjøres.

Tolk(Engelsk) tolk- tolk, tolk) oversetter og kjører programmet linje for linje.

Når et program er kompilert, trengs verken kildeprogrammet eller kompilatoren lenger. Samtidig skal programmet som behandles av tolken på nytt overføre til maskinspråk hver gang programmet startes.

Hvert spesifikt språk er orientert enten mot kompilering eller tolkning - avhengig av formålet det ble laget for. For eksempel, Pascal brukes vanligvis til å løse ganske komplekse problemer der programhastighet er viktig. Derfor er dette språket vanligvis implementert ved hjelp av kompilator. På den andre siden, GRUNNLEGGENDE ble opprettet som et språk for nybegynnere programmerere, for hvem linje-for-linje kjøring av et program har ubestridelige fordeler. Noen ganger er det for ett språk og kompilator, og tolk. I dette tilfellet kan du bruke en tolk til å utvikle og teste programmet, og deretter kompilere det feilsøkte programmet for å forbedre utførelseshastigheten.

Hva er programmeringssystemer?

Moderne programmeringssystemer gir vanligvis brukerne kraftige og praktiske programutviklingsverktøy. Disse inkluderer:

· kompilator eller tolk;

· integrert utviklingsmiljø;

· verktøy for å lage og redigere programtekster;

· omfattende biblioteker av standard programmer og funksjoner;

· brukervennlig dialogmiljø;

· flervindusdriftsmodus;

· kraftige grafiske biblioteker; verktøy for å jobbe med biblioteker

· innebygd montør;

· innebygd helpdesk;

· andre spesifikke funksjoner.

Populære programmeringssystemer – Turbo Basic, Quick Basic, Turbo Pascal, Turbo C.

Nylig har programmeringssystemer fokusert på å skape Windows-applikasjoner:

Borland Delphi 3.0

· plastpose Borland Delphi(Delphi) er en strålende etterfølger til Borland Pascal-familien av kompilatorer, og tilbyr høykvalitets og svært praktiske visuelle utviklingsverktøy. Den eksepsjonelt raske kompilatoren lar deg løse praktisk talt alle appeffektivt og raskt.

· plastpose Microsoft Visual Basic- et praktisk og populært verktøy for å lage Windows-programmer ved hjelp av visuelle verktøy. Inneholder verktøy for å lage diagrammer Og presentasjoner.

· plastpose Borland C++- et av de vanligste verktøyene for utvikling av DOS- og Windows-applikasjoner.

Nedenfor, for illustrasjon, er gitt i BASIC-, Pascal- og C-språkprogrammer for å løse det samme enkle problemet - å beregne summen av S-elementer i en endimensjonal matrise A=(a 1 , a 2 , ..., a n ).

Hva trengs verktøyprogrammer til?

I sin hensikt ligner de på programmeringssystemer. Verktøyprogrammer inkluderer for eksempel:

· redaktører;

· verktøy for programsammensetning;

· feilsøkingsprogrammer, dvs. programmer som hjelper til med å finne og fikse feil i programmet;

· hjelpeprogrammer som implementerer ofte brukte systemhandlinger;

· grafiske programvarepakker, etc.

Programvareverktøy kan gi assistanse i alle stadier av programvareutvikling.

Hva er et tekstredigeringsprogram?

Disse dataene kan være et program eller et dokument eller en bok. Den redigerte teksten vises på skjermen, og brukeren kan gjøre endringer i den i dialogmodus.

Tekstredigerere kan tilby en rekke funksjoner, nemlig:

· redigere tekstlinjer;

· evne til å bruke forskjellige tegnfonter;

· kopiere og overføre deler av teksten fra ett sted til et annet eller fra ett dokument til et annet;

· kontekstuell søk og erstatning av deler av tekst;

· innstilling av vilkårlig linjeavstand;

· automatisk ordbryting;

· automatisk sidenummerering;

· behandling og nummerering av fotnoter;

· justering av avsnittskanter;

· opprettelse av tabeller og diagrammer;

· kontrollere stavemåten til ord og velge synonymer;

· konstruksjon av innholdsfortegnelser og emneregister;

· skrive ut den forberedte teksten på en skriver i ønsket antall eksemplarer osv.

Mulighetene til tekstredigerere er varierte - fra programmer designet for å utarbeide små dokumenter med en enkel struktur, til programmer for skriving, design og fullstendig forberedelse for utskrift av bøker og magasiner (publiseringssystemer).

Ris. 6.5. Microsoft Word Editor-vinduet

Den mest kjente tekstredigereren er Microsoft Word.

Fullverdige publiseringssystemer - Microsoft Publisher, Corel Ventura Og Adobe PageMaker. Publiseringssystemer er uunnværlige for datamaskinlayout og grafikk. De forenkler arbeidet med dokumenter på flere sider; de har muligheten til å automatisk dele tekst i sider, ordne sidetall, lage overskrifter osv. Å lage layouter for enhver publikasjon - fra flyers til bøker og magasiner på flere sider - blir veldig enkelt, selv for nybegynnere.

Typer oversettere

  • Dialog. Gir bruk av et programmeringsspråk i tidsdelingsmodus ( Engelsk).
  • Syntaktisk-orientert (syntaktisk-drevet). Mottar som input en beskrivelse av syntaks og semantikk til språket og teksten på det beskrevne språket, som oversettes i samsvar med den gitte beskrivelsen.
  • Enkelt pass. Danner en objektmodul i én sekvensiell visning av kildeprogrammet.
  • Multi-pass. Danner en objektmodul over flere visninger av kildeprogrammet.
  • Optimalisering. Utfører kodeoptimalisering i den genererte objektmodulen.
  • Test. Et sett med assemblerspråkmakroer som lar deg angi ulike feilsøkingsprosedyrer i programmer skrevet på assemblerspråk.
  • Tilbake. For et program i maskinkode produserer det et tilsvarende program i et hvilket som helst programmeringsspråk (se: disassembler, dekompiler).

Implementeringer

Hensikten med oversettelsen er å konvertere tekst fra ett språk til et annet, noe som er forståelig for mottakeren av teksten. Når det gjelder oversetterprogrammer, er adressaten et teknisk apparat (prosessor) eller tolkeprogram.

Kompileringsprosessen består vanligvis av flere stadier: leksikalsk, syntaktisk og semantisk analyse, mellomkodegenerering, optimalisering og generering av den resulterende maskinkoden. I tillegg avhenger programmet vanligvis av tjenester levert av operativsystemet og tredjepartsbiblioteker (for eksempel fil-I/O eller grafisk grensesnitt), og programmets maskinkode må å knytte med disse tjenestene. Kobling med statiske biblioteker er gjort kommunikasjonsredaktør eller linker(som kan være et eget program eller være en del av en kompilator), og kobling til operativsystemet og dynamiske biblioteker utføres ved starten av programkjøringen bootloader.

Fordelen med kompilatoren: programmet kompileres én gang og det kreves ingen ekstra transformasjoner hver gang det kjøres. Følgelig er det ikke nødvendig med en kompilator på målmaskinen som programmet er kompilert for. Ulempe: Et eget kompileringstrinn senker skriving og feilsøking og gjør det vanskelig å kjøre små, enkle eller engangsprogrammer.

Hvis kildespråket er et assemblerspråk (et lavnivåspråk nær maskinspråk), kalles kompilatoren av et slikt språk montør.

En annen metode for implementering er når programmet kjøres ved hjelp av tolk ingen sending i det hele tatt. Tolkeprogramvaren modellerer en maskin hvis hente-utførelsessyklus opererer på instruksjoner på høynivåspråk, i stedet for på maskininstruksjoner. Denne programvaresimuleringen skaper en virtuell maskin som implementerer språket. Denne tilnærmingen kalles ren tolkning. Ren tolkning brukes vanligvis for språk med en enkel struktur (for eksempel APL eller Lisp). Kommandolinjetolkere behandler kommandoer i skript i UNIX eller i batchfiler (.bat) i MS-DOS, også vanligvis i ren tolkningsmodus.

Fordelen med en ren tolk: fraværet av mellomhandlinger for oversettelse forenkler implementeringen av tolken og gjør den mer praktisk å bruke, inkludert i dialogmodus. Ulempen er at en tolk må være tilstede på målmaskinen hvor programmet skal kjøres. Dessuten er det som regel et mer eller mindre betydelig tap i hastighet. Og egenskapen til en ren tolk, at feil i det tolkede programmet oppdages kun når det gjøres et forsøk på å utføre en kommando (eller linje) med en feil, kan betraktes som både en ulempe og en fordel.

Det er kompromisser mellom kompilering og ren tolkning i implementeringen av programmeringsspråk, når tolken, før han kjører programmet, oversetter det til et mellomspråk (for eksempel til bytekode eller p-kode), mer praktisk for tolkning (det vil si, vi snakker om en tolk med innebygd oversetter) . Denne metoden kalles blandet gjennomføring. Et eksempel på en blandet språkimplementering er Perl. Denne tilnærmingen kombinerer både fordelene med en kompilator og tolk (større utførelseshastighet og brukervennlighet) og ulemper (ytterligere ressurser kreves for å oversette og lagre et program på et mellomspråk; en tolk må leveres for å utføre programmet på målet maskin). I tillegg, som i tilfellet med en kompilator, krever en blandet implementering at kildekoden er fri for feil (leksikalsk, syntaktisk og semantisk) før kjøring.

Med økningen i dataressurser og utvidelsen av heterogene nettverk (inkludert Internett) som kobler sammen datamaskiner av forskjellige typer og arkitekturer, har en ny type tolkning dukket opp, der kildekoden (eller mellomkoden) kompileres til maskinkoden direkte ved kjøring. , "i farten." Allerede kompilerte deler av kode bufres slik at når de åpnes igjen, mottar de umiddelbart kontroll, uten rekompilering. Denne tilnærmingen kalles dynamisk kompilering.

Fordelen med dynamisk kompilering er at hastigheten på programtolkning blir sammenlignbar med hastigheten på programutførelse i konvensjonelle kompilerte språk, mens selve programmet lagres og distribueres i en enkelt form, uavhengig av målplattformer. Ulempen er større implementeringskompleksitet og større ressurskrav enn ved enkle kompilatorer eller rene tolker.

Denne metoden fungerer godt for nettapplikasjoner. Følgelig har dynamisk kompilering dukket opp og støttes i en eller annen grad i implementeringer av Java, .NET Framework, Perl, Python.

Blande begrepene oversettelse og tolkning

Oversettelse og tolkning er forskjellige prosesser: oversettelse omhandler oversettelse av programmer fra ett språk til et annet, og tolking er ansvarlig for gjennomføringen av programmer. Men siden hensikten med oversettelse vanligvis er å forberede programmet for tolkning, vurderes disse prosessene vanligvis sammen. For eksempel karakteriseres programmeringsspråk ofte som "kompilert" eller "tolket", avhengig av om kompilering eller tolkning dominerer bruken av språket. Dessuten er nesten alle lavnivå- og tredjegenerasjons programmeringsspråk, som assembler, C eller Modula-2, kompilert, og høyere nivåspråk, som Python eller SQL, tolkes.

På den annen side er det en interpenetrasjon av oversettelses- og tolkningsprosesser: tolker kan kompilere (inkludert dynamisk kompilering), og oversettere kan kreve tolkning for (for eksempel for makroer i assemblerspråk, betinget kompilering i C eller maler i C++).

Dessuten kan det samme programmeringsspråket både oversettes og tolkes, og i begge tilfeller må det være felles stadier av analyse og gjenkjennelse av konstruksjoner og direktiver for kildespråket. Dette gjelder både programvare- og maskinvareimplementeringer - for eksempel x86-familieprosessorer, før de utfører maskinspråkinstruksjoner, utfører deres dekoding, uthever operandfelt (registre, minneadresser, umiddelbare verdier), bitdybde osv. i opkoder og i prosessorer Pentium med NetBurst-arkitektur, den samme maskinkoden blir i tillegg oversatt til en sekvens av mikrooperasjoner før den lagres i den interne hurtigbufferen.

Notater

  1. GOST 19781-83 // Datateknikk. Terminologi: Referansehåndbok. Utgave 1 / Anmelder Ph.D. tech. Sciences Yu. P. Selivanov. - M.: Standards Publishing House, 1989. - 168 s. - 55 000 eksemplarer. - ISBN 5-7050-0155-X
  2. Pershikov V. I., Savinkov V. M. Forklarende informatikkordbok / Anmeldere: Ph.D. fysikk og matematikk Sciences A. S. Markov og Dr. Phys.-Math. Sciences I. V. Pottosin. - M.: Finans og statistikk, 1991. - 543 s. - 50 000 eksemplarer. - ISBN 5-279-00367-0
  3. ST ISO 2382/7-77 // Datateknikk. Terminologi. Dekret. Op.
  4. Explanatory Dictionary of Computing Systems = Dictionary of Computing / Ed. V. Illingworth et al.: Trans. fra engelsk A.K. Belotsky og andre; Ed. E.K. Maslovsky. - M.: Maskinteknikk, 1990. - 560 s. - 70 000 (ekstra) eksemplarer. - ISBN 5-217-00617-X (USSR), ISBN 0-19-853913-4 (Storbritannia)
  5. Organik E. Organisering av Intel 432-systemet = En programmerers syn på Intel 432-systemet / Transl. fra engelsk - M.: Mir, 1987. - S. 20, 31. - 446 s. - 59 000 eksemplarer.

    Det er en rekke andre eksempler der arkitekturen til den utviklede serien av datamaskiner var basert på eller sterkt avhengig av en modell av programstruktur. Dermed var GE/Honeywell Multics-serien basert på en semantisk modell for å utføre programmer skrevet på PL/1-språket. I Burroughs ( Engelsk) B5500, B6700 ... B7800 var basert på en kjøretidsprogrammodell skrevet i det utvidede ALGOL-språket. ...

    i432-prosessoren, som disse tidligere arkitekturene, er også basert på en semantisk modell av programstruktur. I motsetning til forgjengerne er i432 imidlertid ikke basert på en spesifikk programmeringsspråkmodell. I stedet var utviklernes hovedmål å gi direkte kjøretidsstøtte for begge abstrakte data(det vil si programmering med abstrakte datatyper), og for domenespesifikke operativsystemene. …

    Ada-språket støtter objektbasert programmering, som var årsaken til at det ble valgt som hovedprogrammeringsspråk for i432.

  6. Robert W. Sebesta. 1.7. Implementeringsmetoder // Grunnleggende programmeringsspråk = Concepts of Programming Languages ​​/ Transl. fra engelsk - 5. utg. - M.: Williams, 2001. - S. 45-52. - 672 s. - 5000 eksemplarer. - ISBN 5-8459-0192-8 (russisk), ISBN 0-201-75295-6 (engelsk)

Litteratur

  • Kasyanov V. N., Pottosin I. V. Metoder for å konstruere oversettere. - Novosibirsk: Science, 1986. - 344 s.

Wikimedia Foundation. 2010.

Synonymer:
  • Slang
  • Tolk

Se hva "Oversetter" er i andre ordbøker:

    Oversetter- stort sett et program som konverterer tekst skrevet på ett språk til tekst på et annet språk. En oversetter i snever forstand er et program som konverterer: et program skrevet på ett (inndata) språk til et program presentert på et annet... ... Finansiell ordbok

    OVERSETTER- [Engelsk] oversettere Ordbok med utenlandske ord i det russiske språket

    oversetter- omformer, kringkastingsprogram; TV-kringkaster, kompilator Ordbok over russiske synonymer. oversetter substantiv, antall synonymer: 6 kompilator (5) ... Synonymordbok

    oversetter- Et program eller teknisk middel som sender et program. Merk Oversetteren er vanligvis tildelt funksjonene for å diagnostisere feil, generere ordbøker med identifikatorer, utstede programtekster for utskrift osv. [GOST 19781 90] … … Teknisk oversetterveiledning

    OVERSETTER Moderne leksikon

    OVERSETTER- i informatikk (kompilator) et dataprogram designet for å automatisk oversette en beskrivelse av en algoritme fra ett programmeringsspråk til et annet, spesielt til maskinspråk... Stor encyklopedisk ordbok

    oversetter- oversetter; industri programmeringsprogram; kompilator Et program for å oversette en algoritmepost fra ett algoritmisk språk til et annet (spesielt til et dataspråk) ... Polyteknisk terminologisk forklarende ordbok

    Oversetter- i informatikk (kompilator), et dataprogram designet for å automatisk oversette en beskrivelse av en algoritme fra ett programmeringsspråk til et annet, spesielt til maskinspråk. Det er en del av den grunnleggende dataprogramvaren, en av... ... Illustrert encyklopedisk ordbok

Typer oversettere

  • Dialog. Gir bruk av et programmeringsspråk i tidsdelingsmodus ( Engelsk).
  • Syntaktisk-orientert (syntaktisk-drevet). Mottar som input en beskrivelse av syntaks og semantikk til språket og teksten på det beskrevne språket, som oversettes i samsvar med den gitte beskrivelsen.
  • Enkelt pass. Danner en objektmodul i én sekvensiell visning av kildeprogrammet.
  • Multi-pass. Danner en objektmodul over flere visninger av kildeprogrammet.
  • Optimalisering. Utfører kodeoptimalisering i den genererte objektmodulen.
  • Test. Et sett med assemblerspråkmakroer som lar deg angi ulike feilsøkingsprosedyrer i programmer skrevet på assemblerspråk.
  • Tilbake. For et program i maskinkode produserer det et tilsvarende program i et hvilket som helst programmeringsspråk (se: disassembler, dekompiler).

Implementeringer

Hensikten med oversettelsen er å konvertere tekst fra ett språk til et annet, noe som er forståelig for mottakeren av teksten. Når det gjelder oversetterprogrammer, er adressaten et teknisk apparat (prosessor) eller tolkeprogram.

Kompileringsprosessen består vanligvis av flere stadier: leksikalsk, syntaktisk og semantisk analyse, mellomkodegenerering, optimalisering og generering av den resulterende maskinkoden. I tillegg avhenger programmet vanligvis av tjenester levert av operativsystemet og tredjepartsbiblioteker (for eksempel fil-I/O eller grafisk grensesnitt), og programmets maskinkode må å knytte med disse tjenestene. Kobling med statiske biblioteker er gjort kommunikasjonsredaktør eller linker(som kan være et eget program eller være en del av en kompilator), og kobling til operativsystemet og dynamiske biblioteker utføres ved starten av programkjøringen bootloader.

Fordelen med kompilatoren: programmet kompileres én gang og det kreves ingen ekstra transformasjoner hver gang det kjøres. Følgelig er det ikke nødvendig med en kompilator på målmaskinen som programmet er kompilert for. Ulempe: Et eget kompileringstrinn senker skriving og feilsøking og gjør det vanskelig å kjøre små, enkle eller engangsprogrammer.

Hvis kildespråket er et assemblerspråk (et lavnivåspråk nær maskinspråk), kalles kompilatoren av et slikt språk montør.

En annen metode for implementering er når programmet kjøres ved hjelp av tolk ingen sending i det hele tatt. Tolkeprogramvaren modellerer en maskin hvis hente-utførelsessyklus opererer på instruksjoner på høynivåspråk, i stedet for på maskininstruksjoner. Denne programvaresimuleringen skaper en virtuell maskin som implementerer språket. Denne tilnærmingen kalles ren tolkning. Ren tolkning brukes vanligvis for språk med en enkel struktur (for eksempel APL eller Lisp). Kommandolinjetolkere behandler kommandoer i skript i UNIX eller i batchfiler (.bat) i MS-DOS, også vanligvis i ren tolkningsmodus.

Fordelen med en ren tolk: fraværet av mellomhandlinger for oversettelse forenkler implementeringen av tolken og gjør den mer praktisk å bruke, inkludert i dialogmodus. Ulempen er at en tolk må være tilstede på målmaskinen hvor programmet skal kjøres. Dessuten er det som regel et mer eller mindre betydelig tap i hastighet. Og egenskapen til en ren tolk, at feil i det tolkede programmet oppdages kun når det gjøres et forsøk på å utføre en kommando (eller linje) med en feil, kan betraktes som både en ulempe og en fordel.

Det er kompromisser mellom kompilering og ren tolkning i implementeringen av programmeringsspråk, når tolken, før han kjører programmet, oversetter det til et mellomspråk (for eksempel til bytekode eller p-kode), mer praktisk for tolkning (det vil si, vi snakker om en tolk med innebygd oversetter) . Denne metoden kalles blandet gjennomføring. Et eksempel på en blandet språkimplementering er Perl. Denne tilnærmingen kombinerer både fordelene med en kompilator og tolk (større utførelseshastighet og brukervennlighet) og ulemper (ytterligere ressurser kreves for å oversette og lagre et program på et mellomspråk; en tolk må leveres for å utføre programmet på målet maskin). I tillegg, som i tilfellet med en kompilator, krever en blandet implementering at kildekoden er fri for feil (leksikalsk, syntaktisk og semantisk) før kjøring.

Med økningen i dataressurser og utvidelsen av heterogene nettverk (inkludert Internett) som kobler sammen datamaskiner av forskjellige typer og arkitekturer, har en ny type tolkning dukket opp, der kildekoden (eller mellomkoden) kompileres til maskinkoden direkte ved kjøring. , "i farten." Allerede kompilerte deler av kode bufres slik at når de åpnes igjen, mottar de umiddelbart kontroll, uten rekompilering. Denne tilnærmingen kalles dynamisk kompilering.

Fordelen med dynamisk kompilering er at hastigheten på programtolkning blir sammenlignbar med hastigheten på programutførelse i konvensjonelle kompilerte språk, mens selve programmet lagres og distribueres i en enkelt form, uavhengig av målplattformer. Ulempen er større implementeringskompleksitet og større ressurskrav enn ved enkle kompilatorer eller rene tolker.

Denne metoden fungerer godt for nettapplikasjoner. Følgelig har dynamisk kompilering dukket opp og støttes i en eller annen grad i implementeringer av Java, .NET Framework, Perl, Python.

Blande begrepene oversettelse og tolkning

Oversettelse og tolkning er forskjellige prosesser: oversettelse omhandler oversettelse av programmer fra ett språk til et annet, og tolking er ansvarlig for gjennomføringen av programmer. Men siden hensikten med oversettelse vanligvis er å forberede programmet for tolkning, vurderes disse prosessene vanligvis sammen. For eksempel karakteriseres programmeringsspråk ofte som "kompilert" eller "tolket", avhengig av om kompilering eller tolkning dominerer bruken av språket. Dessuten er nesten alle lavnivå- og tredjegenerasjons programmeringsspråk, som assembler, C eller Modula-2, kompilert, og høyere nivåspråk, som Python eller SQL, tolkes.

På den annen side er det en interpenetrasjon av oversettelses- og tolkningsprosesser: tolker kan kompilere (inkludert dynamisk kompilering), og oversettere kan kreve tolkning for (for eksempel for makroer i assemblerspråk, betinget kompilering i C eller maler i C++).

Dessuten kan det samme programmeringsspråket både oversettes og tolkes, og i begge tilfeller må det være felles stadier av analyse og gjenkjennelse av konstruksjoner og direktiver for kildespråket. Dette gjelder både programvare- og maskinvareimplementeringer - for eksempel x86-familieprosessorer, før de utfører maskinspråkinstruksjoner, utfører deres dekoding, uthever operandfelt (registre, minneadresser, umiddelbare verdier), bitdybde osv. i opkoder og i prosessorer Pentium med NetBurst-arkitektur, den samme maskinkoden blir i tillegg oversatt til en sekvens av mikrooperasjoner før den lagres i den interne hurtigbufferen.

Notater

  1. GOST 19781-83 // Datateknikk. Terminologi: Referansehåndbok. Utgave 1 / Anmelder Ph.D. tech. Sciences Yu. P. Selivanov. - M.: Standards Publishing House, 1989. - 168 s. - 55 000 eksemplarer. - ISBN 5-7050-0155-X
  2. Pershikov V. I., Savinkov V. M. Forklarende informatikkordbok / Anmeldere: Ph.D. fysikk og matematikk Sciences A. S. Markov og Dr. Phys.-Math. Sciences I. V. Pottosin. - M.: Finans og statistikk, 1991. - 543 s. - 50 000 eksemplarer. - ISBN 5-279-00367-0
  3. ST ISO 2382/7-77 // Datateknikk. Terminologi. Dekret. Op.
  4. Explanatory Dictionary of Computing Systems = Dictionary of Computing / Ed. V. Illingworth et al.: Trans. fra engelsk A.K. Belotsky og andre; Ed. E.K. Maslovsky. - M.: Maskinteknikk, 1990. - 560 s. - 70 000 (ekstra) eksemplarer. - ISBN 5-217-00617-X (USSR), ISBN 0-19-853913-4 (Storbritannia)
  5. Organik E. Organisering av Intel 432-systemet = En programmerers syn på Intel 432-systemet / Transl. fra engelsk - M.: Mir, 1987. - S. 20, 31. - 446 s. - 59 000 eksemplarer.

    Det er en rekke andre eksempler der arkitekturen til den utviklede serien av datamaskiner var basert på eller sterkt avhengig av en modell av programstruktur. Dermed var GE/Honeywell Multics-serien basert på en semantisk modell for å utføre programmer skrevet på PL/1-språket. I Burroughs ( Engelsk) B5500, B6700 ... B7800 var basert på en kjøretidsprogrammodell skrevet i det utvidede ALGOL-språket. ...

    i432-prosessoren, som disse tidligere arkitekturene, er også basert på en semantisk modell av programstruktur. I motsetning til forgjengerne er i432 imidlertid ikke basert på en spesifikk programmeringsspråkmodell. I stedet var utviklernes hovedmål å gi direkte kjøretidsstøtte for begge abstrakte data(det vil si programmering med abstrakte datatyper), og for domenespesifikke operativsystemene. …

    Ada-språket støtter objektbasert programmering, som var årsaken til at det ble valgt som hovedprogrammeringsspråk for i432.

  6. Robert W. Sebesta. 1.7. Implementeringsmetoder // Grunnleggende programmeringsspråk = Concepts of Programming Languages ​​/ Transl. fra engelsk - 5. utg. - M.: Williams, 2001. - S. 45-52. - 672 s. - 5000 eksemplarer. - ISBN 5-8459-0192-8 (russisk), ISBN 0-201-75295-6 (engelsk)

Litteratur

  • Kasyanov V. N., Pottosin I. V. Metoder for å konstruere oversettere. - Novosibirsk: Science, 1986. - 344 s.

Wikimedia Foundation. 2010.

Synonymer:

Se hva "Oversetter" er i andre ordbøker:

    Stort sett et program som konverterer tekst skrevet på ett språk til tekst på et annet språk. En oversetter i snever forstand er et program som konverterer: et program skrevet på ett (inndata) språk til et program presentert på et annet... ... Finansiell ordbok

    - [Engelsk] oversettere Ordbok med utenlandske ord i det russiske språket

    Konverter; kringkastingsprogram; TV-kringkaster, kompilator Ordbok over russiske synonymer. oversetter substantiv, antall synonymer: 6 kompilator (5) ... Synonymordbok

    oversetter- Et program eller teknisk middel som sender et program. Merk Oversetteren er vanligvis tildelt funksjonene for å diagnostisere feil, generere ordbøker med identifikatorer, utstede programtekster for utskrift osv. [GOST 19781 90] … … Teknisk oversetterveiledning

    Moderne leksikon

    I informatikk (kompilator), et dataprogram designet for å automatisk oversette en beskrivelse av en algoritme fra ett programmeringsspråk til et annet, spesielt til maskinspråk ... Stor encyklopedisk ordbok

    oversetter- oversetter; industri programmeringsprogram; kompilator Et program for å oversette en algoritmepost fra ett algoritmisk språk til et annet (spesielt til et dataspråk) ... Polyteknisk terminologisk forklarende ordbok

    Oversetter- i informatikk (kompilator), et dataprogram designet for å automatisk oversette en beskrivelse av en algoritme fra ett programmeringsspråk til et annet, spesielt til maskinspråk. Det er en del av den grunnleggende dataprogramvaren, en av... ... Illustrert encyklopedisk ordbok

Siden tekst skrevet på et programmeringsspråk er uforståelig for en datamaskin, må den oversettes til maskinkode. Denne oversettelsen av et program fra et programmeringsspråk til et maskinkodespråk kalles oversettelse, og den utføres av spesielle programmer - oversettere.

En oversetter er et tjenesteprogram som konverterer et kildeprogram levert i inndataprogrammeringsspråket til et arbeidsprogram presentert på et objektspråk.

For tiden er oversettere delt inn i tre hovedgrupper: montører, kompilatorer og tolker.

En assembler er et systemverktøy som konverterer symbolske strukturer til maskinspråkkommandoer. Et spesifikt trekk ved montører er at de utfører en ordrett oversettelse av én symbolsk instruksjon til én maskininstruksjon. Dermed er assemblerspråk (også kalt autokode) designet for å lette oppfatningen av datamaskinens kommandosystem og øke hastigheten på programmeringen i dette kommandosystemet. Det er mye lettere for en programmerer å huske den mnemoniske betegnelsen til maskininstruksjoner enn deres binære kode.

Samtidig inneholder assemblerspråk, i tillegg til analoger av maskinkommandoer, mange tilleggsdirektiver som forenkler administrasjon av dataressurser, skriving av repeterende fragmenter og bygging av multimodulprogrammer. Derfor er uttrykksevnen til språket mye rikere enn bare et symbolsk kodespråk, noe som i stor grad forbedrer programmeringseffektiviteten.

En kompilator er et tjenesteprogram som oversetter et program skrevet i kildeprogrammeringsspråket til maskinspråk. Akkurat som en assembler, konverterer en kompilator et program fra ett språk til et annet (oftest til språket til en bestemt datamaskin). Samtidig skiller kildespråkkommandoer seg betydelig i organisering og kraft fra maskinspråkkommandoer. Det er språk der en kommando av kildespråket er oversatt til 7-10 maskinkommandoer. Imidlertid er det også språk der hver kommando kan ha 100 eller flere maskinkommandoer (for eksempel Prolog). I tillegg bruker kildespråkene ofte streng dataskriving, utført gjennom deres foreløpige beskrivelse. Programmering er kanskje ikke avhengig av koding av en algoritme, men på å tenke nøye over datastrukturer eller klasser. Prosessen med å oversette fra slike språk kalles vanligvis kompilering, og kildespråkene er vanligvis klassifisert som høynivåprogrammeringsspråk (eller høynivåspråk). Abstraksjonen av et programmeringsspråk fra datakommandosystemet førte til den uavhengige opprettelsen av et bredt spekter av språk fokusert på å løse spesifikke problemer. Språk har dukket opp for vitenskapelige beregninger, økonomiske beregninger, tilgang til databaser og andre.

Tolk - et program eller en enhet som utfører operatør-for-operatør oversettelse og utførelse av kildeprogrammet. I motsetning til en kompilator, produserer ikke en tolk et maskinspråkprogram som utdata. Etter å ha gjenkjent en kommando på kildespråket, utfører den den umiddelbart. Både kompilatorer og tolker bruker de samme metodene for å analysere kildekoden til et program. Men tolken lar deg begynne å behandle data etter å ha skrevet enda en kommando. Dette gjør prosessen med å utvikle og feilsøke programmer mer fleksibel. I tillegg gjør fraværet av utdatamaskinkode det mulig å ikke "rote opp" eksterne enheter med tilleggsfiler, og selve tolken kan ganske enkelt tilpasses enhver maskinarkitektur, etter å ha utviklet den bare en gang i et mye brukt programmeringsspråk. Derfor har tolkede språk som Java Script og VB Script blitt utbredt. Ulempen med tolker er den lave hastigheten på programutførelsen. Vanligvis kjører tolkede programmer 50 til 100 ganger langsommere enn opprinnelige programmer.

En emulator er et program eller et programvare- og maskinvareverktøy som gir muligheten til, uten omprogrammering, å kjøre på en gitt datamaskin et program som bruker koder eller metoder for å utføre operasjoner som er forskjellige fra den gitte datamaskinen. En emulator ligner på en tolk ved at den kjører direkte et program skrevet på et bestemt språk. Men oftest er det maskinspråk eller mellomkode. Begge representerer instruksjoner i binær kode som kan utføres umiddelbart etter at operasjonskoden er gjenkjent. I motsetning til tekstprogrammer er det ikke nødvendig å gjenkjenne programstrukturen eller velge operander.

Emulatorer brukes ganske ofte til en rekke formål. For eksempel, når man utvikler nye datasystemer, opprettes det først en emulator som kjører programmer utviklet for datamaskiner som ennå ikke eksisterer. Dette lar deg evaluere kommandosystemet og utvikle den grunnleggende programvaren selv før den tilsvarende maskinvaren er opprettet.

Svært ofte brukes en emulator til å kjøre gamle programmer på nye datamaskiner. Vanligvis er nyere datamaskiner raskere og har bedre periferiutstyr. Dette lar deg emulere eldre programmer mer effektivt enn å kjøre dem på eldre datamaskiner.

En transkoder er et program eller en programvareenhet som oversetter programmer skrevet på maskinspråket til en datamaskin til programmer på maskinspråket til en annen datamaskin. Hvis emulatoren er en mindre intelligent analog av tolken, fungerer transkoderen i samme kapasitet i forhold til kompilatoren. På samme måte konverteres kilde (og vanligvis binær) maskinkode eller en mellomrepresentasjon til annen lignende kode med en enkelt instruksjon og uten noen generell analyse av kildeprogrammets struktur. Transkodere er nyttige når du overfører programmer fra en datamaskinarkitektur til en annen. De kan også brukes til å rekonstruere språkprogramtekst på høyt nivå fra eksisterende binær kode.

En makroprosessor er et program som erstatter en sekvens av tegn med en annen. Dette er en type kompilator. Den genererer utdatatekst ved å behandle spesielle innlegg som ligger i kildeteksten. Disse innleggene er utformet på en spesiell måte og tilhører konstruksjoner av et språk som kalles et makrospråk. Makroprosessorer brukes ofte som tillegg til programmeringsspråk, noe som øker funksjonaliteten til programmeringssystemer. Nesten enhver assembler inneholder en makroprosessor, noe som øker effektiviteten ved å utvikle maskinprogrammer. Slike programmeringssystemer kalles vanligvis makromontører.

Makroprosessorer brukes også med høynivåspråk. De øker funksjonaliteten til språk som PL/1, C, C++. Makroprosessorer er spesielt mye brukt i C og C++, noe som gjør det lettere å skrive programmer. Makroprosessorer forbedrer programmeringseffektiviteten uten å endre syntaksen eller semantikken til språket.

Syntaks er et sett med regler for et språk som bestemmer dannelsen av dets elementer. Dette er med andre ord et sett med regler for dannelsen av semantisk signifikante sekvenser av symboler i et gitt språk. Syntaks spesifiseres ved hjelp av regler som beskriver begrepene til et språk. Eksempler på begreper er: variabel, uttrykk, operator, prosedyre. Rekkefølgen av konsepter og deres akseptable bruk i regler bestemmer de syntaktisk korrekte strukturene som danner programmer. Det er hierarkiet av objekter, og ikke hvordan de samhandler med hverandre, som defineres gjennom syntaks. For eksempel kan en setning bare forekomme i en prosedyre, et uttrykk i en setning, en variabel kan bestå av et navn og valgfrie indekser osv. Syntaksen er ikke assosiert med slike fenomener i programmet som "hoppe til en ikke-eksisterende etikett" eller "en variabel med gitt navn er ikke definert." Dette er hva semantikk gjør.

Semantikk - regler og betingelser som bestemmer forholdet mellom språkelementer og deres semantiske betydninger, samt tolkningen av den meningsfulle betydningen av syntaktiske konstruksjoner av språket. Objekter av et programmeringsspråk er ikke bare plassert i teksten i samsvar med et visst hierarki, men er også i tillegg sammenkoblet gjennom andre konsepter som danner ulike assosiasjoner. For eksempel, en variabel, som syntaksen definerer en gyldig plassering for bare i deklarasjoner og noen utsagn, har en bestemt type, kan brukes med et begrenset antall operasjoner, har en adresse, en størrelse og må deklareres før den kan brukes i programmet.

En parser er en kompilatorkomponent som sjekker kildesetninger for samsvar med de syntaktiske reglene og semantikken til et gitt programmeringsspråk. Til tross for navnet, kontrollerer analysatoren både syntaks og semantikk. Den består av flere blokker, som hver løser sine egne problemer. Det vil bli diskutert mer detaljert når strukturen til oversetteren skal beskrives.

Enhver oversetter utfører følgende hovedoppgaver:

Analyserer det oversatte programmet, avgjør spesielt om det inneholder syntaksfeil;

Genererer et utdataprogram (ofte kalt et objektprogram) i maskininstruksjonsspråk;

Tildeler minne for et objektprogram.