Kääntäjä

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 24. lokakuuta 2017 tarkistetusta versiosta . tarkastukset vaativat 44 muokkausta .

Kääntäjä  - ohjelma tai tekninen työkalu, joka suorittaa ohjelman kääntämisen [1] [2] .

Ohjelman kääntäminen on  jollain ohjelmointikielellä esitetyn ohjelman muuntamista toisella kielellä kirjoitetuksi ohjelmaksi. Kääntäjä tekee yleensä myös virhediagnostiikkaa, luo tunnistesanakirjoja, tulostaa ohjelmatekstin jne. [1]

Kieltä, jolla syöttöohjelma esitetään, kutsutaan lähdekieleksi ja itse ohjelmaa lähdekoodiksi . Tulostuskieltä kutsutaan kohdekieleksi .

Yleisesti ottaen käännöksen käsite ei koske vain ohjelmointikieliä, vaan myös muita kieliä - sekä virallisia tietokonekieliä (kuten HTML -kuvauskielet ) että luonnollisia kieliä ( venäjä , englanti jne.) [ 3] [4] .

Kääntäjätyypit

Kääntäjiä on useita tyyppejä [2] .

Toteutukset

Käännöksen tarkoituksena on muuntaa tekstiä yhdeltä kieleltä vastaanottajan ymmärtämälle kielelle. Lähetettäessä tietokoneohjelmaa, vastaanottaja voi olla:

Lähetystyypit:

Kokoelma

Prosessorin (laitteen, koneen ) kieltä kutsutaan konekieleksi, konekoodiksi . Prosessori suorittaa konekielikoodin. Yleensä konekieli on matalan tason kieli , mutta on prosessoreita, jotka käyttävät korkean tason kieliä (esimerkiksi iAPX-432 [5] ). Tällaiset prosessorit eivät kuitenkaan ole levinneet monimutkaisuuden ja korkeiden kustannustensa vuoksi.

Kääntäjä  on eräänlainen kääntäjä, joka muuntaa ohjelmointikielen lähdekoodin konekieleksi [ 6 ] .

Kokoonpanoprosessi koostuu yleensä useista vaiheista:

Ohjelma voi käyttää käyttöjärjestelmän ja kolmansien osapuolien kirjastojen tarjoamia palveluita (esimerkiksi kirjastoja tiedostojen käsittelyyn ja kirjastoja graafisen käyttöliittymän luomiseen). Linkittäminen tai linkittäminen suoritetaan konekoodin lisäämiseksi muista objektitiedostoista ( staattisten kirjastojen koodi ) ja tietoa dynaamisista kirjastoista objektitiedostoon . Linkittäjä tai linkittäjä tekee linkityksen tai linkittäjän . Linkki voi olla erillinen ohjelma tai osa kääntäjää . Linkkeri luo suoritettavan tiedoston . Suoritettava tiedosto (ohjelma) käynnistetään seuraavasti:  

Kokoonpanon edut:

Kokoonpanon haitat:

Assembler  on kääntäjä, joka muuntaa tekstin kokoonpanokielestä konekieleksi . Kokoonpanokieli  on konekieltä lähellä oleva kieli , matalan tason kieli .

Tulkinta

Tulkinta on prosessi, jossa luetaan ja suoritetaan lähdekoodia . Toteutettu tulkkiohjelmalla .

Tulkki voi työskennellä kahdella tavalla:

  1. lue koodi ja suorita se välittömästi ( puhdas tulkinta [6] );
  2. lue koodi, luo koodin väliesitys muistissa ( tavukoodi tai p-koodi ), suorita koodin väliesitys ( sekoitettu toteutus [6] ).

Ensimmäisessä tapauksessa käännöstä ei käytetä, ja toisessa tapauksessa käytetään lähdekoodin käännöstä välikoodiksi.

Tulkin vaiheet:

  1. leksikaalinen analyysi ;
  2. jäsentäminen ;
  3. semanttinen analyysi ;
  4. koodin väliesityksen luominen (ei suoriteta puhtaalla tulkinnalla);
  5. teloitus.

Tulkki mallintaa koneen ( virtuaalikone ), toteuttaa konekäskyjen haku-suoritussyklin. Konekomentoja ei kirjoiteta konekielellä, vaan korkean tason kielellä . Tulkkia voidaan kutsua virtuaalikoneen kielen suorittajaksi .

Puhdasta tulkintaa sovelletaan yleensä kieliin, joilla on yksinkertainen rakenne, kuten komentosarjakielet , APL ja Lisp .

Esimerkkejä tavukoodia tuottavista tulkeista : Perl , PHP , Python , Erlang .

Tulkkien edut kääntäjiin verrattuna:

Tulkkien haitat kääntäjiin verrattuna:

Vertailu puhtaan tulkin ja tavukoodia tuottavan tulkin välillä :

Dynaaminen kokoelma

Dynaaminen tai JIT-käännös - käännös, jossa lähde- tai välikoodi muunnetaan (käännetään) konekoodiksi suoraan ajon aikana, "lennossa" ( englanniksi  just in time , JIT ). Jokainen koodinpala käännetään vain kerran; käännetty koodi tallennetaan välimuistiin ja käytetään tarvittaessa uudelleen.

Dynaamisen kokoamisen edut kääntämiseen verrattuna:

Dynaamisen kokoamisen haitat kääntämiseen ja puhtaaseen tulkintaan verrattuna:

Dynaaminen käännös sopii hyvin web - sovelluksiin .

Dynaaminen käännös ilmestyi ja sitä tuetaan jossain määrin Java , .NET Framework , Perl , Python toteutuksissa .

Kääntämisen ja tulkkauksen sekavuus

Käsitteet "käännös" ja "tulkkaus" ovat erilaisia. Käännöksen aikana ohjelmakoodi muunnetaan kielestä toiselle. Tulkinnan aikana ohjelma suoritetaan.

Koska kääntämisen tarkoituksena on yleensä valmistautua tulkkaukseen, näitä prosesseja tarkastellaan yhdessä. Esimerkiksi ohjelmointikieliä luonnehditaan usein "käännetyiksi" tai "tulkituiksi" riippuen siitä, käytetäänkö kieltä vallitsevalla tavalla: käännös vai tulkinta. Lisäksi lähes kaikki matalan tason ja kolmannen sukupolven kielet , kuten assembler , C tai Modula-2 , käännetään ja ylemmän tason kieliä , kuten Python tai SQL  , tulkitaan.

Toisaalta käännös- ja tulkkausprosessit tunkeutuvat toisiinsa: tulkit voivat kääntää (mukaan lukien dynaaminen käännös), ja kääntäjät voivat vaatia tulkintaa metaohjelmoinnin toteuttamiseksi (esimerkiksi kokoonpanokielen makroille , ehdolliseen kääntämiseen C - kielellä tai malleihin C++ : ssa ).

Lisäksi samaa ohjelmointikieltä voidaan sekä kääntää että tulkita, ja molemmissa tapauksissa tulee olla yhteiset lähdekielen konstruktien ja direktiivien analysointi- ja tunnistamisvaiheet. Tämä koskee sekä ohjelmisto- että laitteistototeutuksia - esimerkiksi x86 -perheen prosessorit, purkaa ne ennen konekielisten käskyjen suorittamista , korostamalla operandikenttiä opkoodeissa (osoittavat rekisterit , muistiosoitteet , vakiot ), bittisyvyyden jne. ja In Pentiumissa prosessorit NetBurst - arkkitehtuurilla , sama konekoodi käännetään lisäksi sarjaksi mikrotoimintoja ennen kuin se tallennetaan sisäiseen välimuistiin .

Muistiinpanot

  1. 1 2 GOST 19781-83 // Tietojenkäsittelytiede. Terminologia: Viiteopas. Numero 1 / Arvostelija Ph.D. tekniikka. Tieteet Yu. P. Selivanov. - M . : Publishing House of Standards, 1989. - 168 s. - 55 000 kappaletta.  — ISBN 5-7050-0155-X .
  2. 1 2 Pershikov V.I., Savinkov V.M. Informatiikan selittävä sanakirja / Arvostelijat: Ph.D. Fys.-Math. Sci. A. S. Markov ja Dr. Phys.-Math. Tieteet I. V. Pottosin. - M. : Talous ja tilastot, 1991. - 543 s. – 50 000 kappaletta.  - ISBN 5-279-00367-0 .
  3. ST ISO 2382/7-77 // Tietojenkäsittelytiede. Terminologia. asetus. op.
  4. Dictionary of Computing Systems = Dictionary of Computing / Toim. V. Illingworth ja muut: Per. englannista. A. K. Belotsky ja muut; Ed. E.K. Maslovsky. - M . : Mashinostroenie, 1990. - 560 s. - 70 000 (lisä) kopiota.  - ISBN 5-217-00617-X (Neuvostoliitto), ISBN 0-19-853913-4 (Yhdistynyt kuningaskunta).
  5. Organik E. Intel 432 -järjestelmän organisaatio = Ohjelmoijan näkemys Intel 432 -järjestelmästä / Per. englannista. - M .: Mir, 1987. - S. 20, 31. - 446 s. - 59 000 kappaletta.
  6. 1 2 3 Robert W. Sebesta. 1.7. Toteutusmenetelmät // Ohjelmointikielten peruskäsitteet\u003d Ohjelmointikielten käsitteet / Per. englannista. - 5. painos — M .: Williams , 2001. — S. 45-52. — 672 s. -5000 kappaletta.  — ISBN 5-8459-0192-8 (venäjä), ISBN 0-201-75295-6 (englanniksi).

Kirjallisuus