www.wikidata.uk-ua.nina.az
Cya stattya ne mistit posilan na dzherela Vi mozhete dopomogti polipshiti cyu stattyu dodavshi posilannya na nadijni avtoritetni dzherela Material bez dzherel mozhe buti piddano sumnivu ta vilucheno lyutij 2020 Interpretator movi programuvannya interpreter programa chi tehnichni zasobi neobhidni dlya vikonannya inshih program vid translyatora yakij zdijsnyuye pooperatornu pokomandnu postrokovu obrobku peretvorennya u mashinnij kod ta vikonannya programi abo zapitu na vidminu vid kompilyatora yakij translyuye u mashinni kodi vsyu programu bez yiyi vikonannya Interpretatori mozhut pracyuvati yak z pochatkovim kodom programi angl source code napisanim movoyu programuvannya tak i z bajt kodom interpretatori bajt kodu Zmist 1 Tipi interpretatoriv 2 Porivnyannya interpretatora ta kompilyatora 2 1 Rozrobka programnogo zabezpechennya 2 2 Rozpovsyudzhennya 2 3 Efektivnist 3 Promizhnij kod 3 1 Promizhnij kod dlya Java 3 1 1 Priklad kodu 3 2 Promizhnij kod dlya mov NET Framework 3 2 1 Priklad kodu 3 3 Parrot 3 3 1 Osnovni komponenti Parrot 3 3 1 1 Parseri PASM i PIR 3 3 1 2 Kompilyator bajt kodu ta optimizator 3 3 1 3 Iterpretator 3 3 2 Priklad kodu 3 3 2 1 PIR 3 3 2 2 PASM 3 3 2 3 Rezultat 4 Div takozh 5 DzherelaTipi interpretatoriv RedaguvatiProstij interpretator analizuye i vidrazu vikonuye vlasne interpretaciya programu pokomandno abo poryadkovo po miri nadhodzhennya tekstu programi na vhid interpretatora Perevagoyu takogo pidhodu ye mittyeva reakciya Nedolik takij interpretator viyavlyaye pomilki v teksti programi tilki pri sprobi vikonannya komandi abo ryadka z pomilkoyu Interpretator kompilyuyuchogo tipu ce sistema z kompilyatora yakij perekladaye tekst programi v promizhne predstavlennya napriklad v bajt kod abo p kod i vlasne interpretatora yakij vikonuye otrimanij promizhnij kod tak zvana virtualna mashina Perevagoyu takih sistem ye bilsha shvidkodiya vikonannya program za rahunok vinesennya analizu pochatkovogo kodu v okremij razovij prohid i minimizaciyi cogo analizu v interpretatori Nedoliki bilshi vimogi do resursiv i vimoga na korektnist tekstu programi Zastosovuyetsya v takih movah yak Java Tcl Perl vikoristovuyetsya bajt kod REXX zberigayetsya rezultat sintaksichnogo analizu a takozh u riznih SUBD vikoristovuyetsya p kod Interpretator kompilyuyuchogo tipu skladayetsya z kompilyatora movi i prostogo interpretatora z minimizovanim analizom pochatkovogo kodu cej kod u takomu vipadku ne obov yazkovo povinen mati tekstovij format ce mozhe buti mashinnij kod yakoyis nayavnoyi aparatnoyi platformi Napriklad virtualni mashini tipu QEMU Bochs VMware mistyat u sobi interpretatori mashinnogo kodu procesoriv simejstva x86 Deyaki interpretatori napriklad dlya mov Lisp Scheme Python Basic ta inshih mozhut pracyuvati v rezhimi dialogu abo tak zvanogo ciklu chitannya obchislennya druku angl read eval print loop REPL U takomu rezhimi interpretator zchituye zakinchenu konstrukciyu movi napriklad s expression u movi Lisp vikonuye yiyi drukuye rezultati pislya chogo perehodit do ochikuvannya vvedennya koristuvachem nastupnoyi konstrukciyi Unikalnoyu ye mova Forth yaka zdatna pracyuvati yak v rezhimi interpretaciyi tak i kompilyaciyi vhidnih danih dozvolyayuchi pereklyuchatis mizh cimi rezhimami v dovilnij moment yak pid chas translyaciyi pochatkovogo kodu tak i pid chas roboti program 1 Slid takozh zaznachiti sho rezhimi interpretaciyi mozhna znajti ne tilki v programnomu a j aparatnomu zabezpechenni Tak bagato mikroprocesoriv interpretuyut mashinnij kod za dopomogoyu vbudovanih mikroprogram a procesori simejstva x86 pochinayuchi z Pentium napriklad na arhitekturi Intel P6 pid chas vikonannya mashinnogo kodu poperedno translyuyut jogo u vnutrishnij format v poslidovnist mikrooperacij Porivnyannya interpretatora ta kompilyatora RedaguvatiProgrami yak pravilo pishut movoyu visokogo rivnya yaka povinna buti peretvorena v mashinnij kod dlya vikonannya centralnim procesorom Ce peretvorennya vikonuye kompilyator abo interpretator Rozrobka programnogo zabezpechennya Redaguvati Pid chas rozrobki programnogo zabezpechennya programisti roblyat chasti zmini u pochatkovomu kodi Pri vikoristanni kompilyatoriv kozhen raz pislya vnesennya zmin u pochatkovij kod kompilyator translyuye zmineni pochatkovi fajli i komponuye vsi fajli binarnogo kodu razom persh nizh programa mozhe buti vikonana Chim bilsha programa tim bilshim ye chas ochikuvannya kompilyuvannya Z inshogo boku pri vikoristanni interpretatora ochikuvannya nabagato menshe bo interpretatoru ne treba translyuvati vsyu programu a prosto potribno translyuvati kod sho zaraz vikonuyetsya na promizhne predstavlennya abo ne translyuvati jogo vzagali sho vimagaye nabagato menshe chasu shob programa mogla buti vikonana Rozpovsyudzhennya Redaguvati Kompilyator peretvoryuye pochatkovij kod u binarni instrukciyi dlya procesora pevnoyi arhitekturi sho robit jogo mensh portativnim Takij pereklad zdijsnyuyetsya tilki odin raz v seredovishi rozrobnika pislya chogo toj zhe binarnij fajl mozhna rozpovsyuditi na mashini koristuvacha de vin mozhe buti vikonanij bez dodatkovogo perekladu Kros kompilyator mozhe generuvati binarnij kod dlya mashini koristuvacha navit yaksho vona maye inshij procesor nizh mashina rozrobnika na yakij vidbuvalas kompilyaciya kodu Programa sho interpretuyetsya mozhe poshiryuvatisya u viglyadi pochatkovogo kodu Vona maye buti translovana na kozhnij mashini sho zajmaye bilshe chasu ale robit rozpovsyudzhennya programi nezalezhnim vid arhitekturi mashini Odnak perenosimist pochatkovogo kodu sho interpretuyetsya zalezhit vid togo chi maye cilova mashina vidpovidnij interpretator Yaksho interpretator treba rozpovsyudzhuvati razom z pochatkovim kodom zagalnij proces vstanovlennya programi uskladnyuyetsya porivnyano z postachannyam odnogo vikonuvanogo fajlu Te sho interpretovanij kod legko chitayetsya i kopiyuyetsya lyudmi mozhe predstavlyati problemu z tochki zoru avtorskogo prava Tim ne mensh isnuyut riznomanitni sistemi shifruvannya i zaplutuvannya Dostavka promizhnogo kodu napriklad bajt kodu maye takij zhe efekt zaplutuvannya ale bajt kod mozhna dekoduvati z dopomogoyu dekompilyatora abo dizasemblera Efektivnist Redaguvati Osnovnim nedolikom interpretovanih program ye te sho proces interpretaciyi zazvichaj nabagato povilnishij nizh zapusk skompilovanoyi programi Riznicya v shvidkosti mozhe riznitisya vid neznachnoyi do dostatno vidchutnoyi chasto na poryadok a inodi j bilshe Prote chas interpretaciyi programi mozhe buti shvidshim nizh zagalnij chas neobhidnij dlya kompilyaciyi i zapusku Ce osoblivo vazhlivo pid chas prototipuvannya i testuvannya kodu cikl redaguvannya interpretaciya nalagodzhennya chasto mozhe buti nabagato korotshij nizh redaguvannya kompilyaciya zapusk nalagodzhennya Interpretaciya kodu vidbuvayetsya povilnishe nizh zapusk skompilovanogo kodu tomu sho interpretator povinen analizuvati kozhnu instrukciyu u programi kozhnogo razu koli vona vikonuyetsya a potim vikonuvati potribnu diyu v toj chas yak skompilovanij kod prosto vikonuye fiksovani diyi viznacheni pid chas kompilyaciyi Cej analiz pid chas vikonannya vidomij yak dodatkovi vitrati interpretaciyi Dostup do zminnih v interpretovanih program takozh povilnishij tomu sho operaciya zv yazuvannya identifikatoriv z miscyami zberigannya povtoryuyetsya pid chas vikonannya todi yak kompilyatorom vikonuyetsya odin raz pid chas kompilyaciyi Isnuyut rizni kompromisi mizh shvidkistyu rozrobki programnogo zabezpechennya pri vikoristanni interpretatora i shvidkistyu vikonannya programi pri vikoristanni kompilyatora Deyaki sistemi napriklad Lisp dozvolyayut interpretovanomu i skompilovanomu kodu viklikati odin odnogo i obminyuvatisya zminnimi Ce oznachaye sho potochnij kod yakij buv protestovanij i nalagodzhenij interpretatorom mozhe buti skompilovanij i takim chinom otrimati bilshu shvidkist vikonannya v toj chas yak inshij kod rozroblyayetsya Bagato interpretatoriv ne vikonuyut operatori programi bezposeredno a privodyat jogo do bilsh kompaktnoyi vnutrishnoyi formi Bagato interpretatoriv movi BASIC zaminyuyut zarezervovani slova odnim bajtom tokena yakij mozhe buti vikoristanij dlya poshuku komandi v tablici perehodiv Promizhnij kod RedaguvatiZazvichaj pochatkovij kod movi programuvannya visokogo rivnya kompilyuyetsya u promizhnu movu yaka bude skompilovana abo interpretovana u mashinnij kod Promizhnij kod dlya Java Redaguvati Pochatkovij kod na Java kompilyuyetsya v promizhnij kod yakij bude interpretovano nbsp nbsp Pochatkovij kod Promizhnij kod InterpretatorPromizhnoyu movoyu dlya Java ye bajt kod interpretator Java Virtual Machine JVM Fajl bajt kodu ye universalnim todi yak interpretator ye unikalnim dlya kozhnoyi platformi nbsp nbsp nbsp nbsp nbsp Priklad kodu Redaguvati Rozglyanemo nastupnij priklad na movi Java outer for int i 2 i lt 1000 i for int j 2 j lt i j if i j 0 continue outer System out println i Kompilyator Java mozhe translyuvati cej kod v nastupnij bajt kod 0 iconst 2 1 istore 1 2 iload 1 3 sipush 1000 6 if icmpge 44 9 iconst 2 10 istore 2 11 iload 2 12 iload 1 13 if icmpge 31 16 iload 1 17 iload 2 18 irem 19 ifne 25 22 goto 38 25 iinc 2 1 28 goto 11 31 getstatic 84 Field java lang System out Ljava io PrintStream 34 iload 1 35 invokevirtual 85 Method java io PrintStream println I V 38 iinc 1 1 41 goto 2 44 return Promizhnij kod dlya mov NET Framework Redaguvati nbsp Proces kompilyaciyi program dlya mov NET Framework v CIL ta interpretaciyi za dopomogoyu CLRMovi sumisni z platformoyu NET Framework taki yak Visual Basic C Visual F VB NET J kompilyuyutsya v Common Intermediate Language CIL promizhnu movu dlya platformi NET Framework Otrimanij promizhnij kod interpretuyetsya Common Language Runtime CLR zagalnomovnim seredovishem vikonannya Specifikaciya CIL ta CLR ye realizaciyeyu specifikaciyi Common Language Infrastructure CLI specifikaciyi zagalnomovnoyi infrastrukturi kompaniyi Microsoft Kod na CIL generuyut vsi kompilyatori dlya platformi NET Framework Mova CIL po strukturi ta mnemonici nagaduye movu asembler Prote CIL mistit deyaki visokorivnevi konstrukciyi i pisati na CIL znachno legshe nizh na asembleri Priklad kodu Redaguvati Priklad programi na C static void Main string args outer for int i 2 i lt 1000 i for int j 2 j lt i j if i j 0 goto outer Console WriteLine i Viglyad ciyeyi zh programi na CIL method private hidebysig static void Main string args cil managed entrypoint maxstack 2 locals init 0 int32 i 1 int32 j IL 0000 ldc i4 2 stloc 0 br s IL 001f IL 0004 ldc i4 2 stloc 1 br s IL 0011 IL 0008 ldloc 0 ldloc 1 rem brfalse s IL 0000 ldloc 1 ldc i4 1 add stloc 1 IL 0011 ldloc 1 ldloc 0 blt s IL 0008 ldloc 0 call void mscorlib System Console WriteLine int32 ldloc 0 ldc i4 1 add stloc 0 IL 001f ldloc 0 ldc i4 0x3e8 blt s IL 0004 ret Parrot Redaguvati Parrot VM ce virtualna mashina priznachena dlya efektivnoyi kompilyaciyi ta vikonannya bajt kodu dlya dinamichnih mov V Parrot na danij moment realizovana pidtrimka bagatoh mov sered yakih Tcl Javascript Ruby Lua Scheme PHP Python Perl 6 APL i NET translyator bajt kodu Virtualna mashina Parrot analogichna virtualnim mashinam Java i NET platformi Prote na vidminu vid vkazanih dvoh yaki rozrobleni dlya statichno tipizovanih mov yak Java chi C Parrot rozrobleno dlya dinamichno tipizovanih mov programuvannya Virtualna mashina Parrot napisana na movi C Same tomu sho Parrot priznachena dlya pidtrimki riznomanitnih mov visokogo rivnya yiyi arhitektura dovoli zagalna ta bagatofunkcionalna Osnovni komponenti Parrot Redaguvati Parseri PASM i PIR Redaguvati Dlya kompilyuvannya pochatkovogo kodu u PIR Parrot Intermediate Representation promizhne predstavlennya Parrot dostupno dva parseri IMCC vikoristovuyetsya zaraz ale ye neefektivnim PIRC ye efektivnishim ale poki sho nestabilnij Planuyetsya zrobiti PIRC osnovnim parserom dlya PIR do vihodu versiyi Parrot 1 0 Kompilyator bajt kodu ta optimizator Redaguvati Kompilyator bajt kodu skladova Parrot sho vidpovidaye za peretvorennya vhidnih kodu na PASM abo PIR u bajt kod Parrot Cej bajt kod vikonuyetsya shvidko i efektivno Inshim komponentom Parrot ye optimizator bajt kodu yakij vidpovidaye za nizkorivnevi optimizaciyi bajt kodu Parrot Iterpretator Redaguvati Todi yak kompilyator bajt kodu prijmaye vhidnij kod pislya obrobki parserami PIRC abo IMCC i peretvoryuye jogo v bajt kod dlya zberigannya i podalshogo vikonannya funkciyeyu interpretatora ye bezposerednye vikonannya otrimanogo PIR ta PASM kodu Ce oznachaye sho nemaye niyakogo promizhnogo etapu kompilyaciyi i skript mozhna vikonati shvidko bez neobhidnosti kompilyaciyi Priklad kodu Redaguvati PIR Redaguvati Priklad ciklu sub loopy local int counter counter 0 LOOP if counter gt 10 goto DONE print counter print inc counter goto LOOP DONE print counter n end end PASM Redaguvati Priklad ciklu set I1 1 REDO gt I1 10 END print I1 print inc I1 branch REDO END print n end Rezultat Redaguvati 0 1 2 3 4 5 6 7 8 9 10Div takozh RedaguvatiKompilyatorDzherela Redaguvati Jeff Fox Chapter 2 More Interpretation Thoughtful Programming and Forth angl UltraTechnology Arhiv originalu za 22 serpnya 2011 Procitovano 12 travnya 2013 Otrimano z https uk wikipedia org w index php title Interpretator amp oldid 39619617