ПредишенСледващото

Да, да. Това е друг въпрос за разликата между компилатор и интерпретатор PL. Само отговори, които обикновено са ми дадени не съм доволен.

Обикновено те казват, компилаторът превежда кода в който и да е изпълним или PLS в и вече при изпълнението на кода изпълнява незабавно директно от процесора. В случай на преводач по време на изпълнението на програмата интерпретатора специална програма чете изходния код ред по ред, и то се изпълнява. Стъпка по стъпка. В същото време те се каже, че те казват съставителите не са толкова лесни за пиша отново.

Всъщност въпросът е това. Ако в резултат на програмата се изпълнява, какво в действителност разликата се извършва веднъж машинен код или първия интерпретатор прави нещо с изходния код, а след това по-късно да го изпълни - в края на краищата, процесорът изпълнява същите инструкции машини. Каква е разликата? Очевидно не е в това, че компилаторът съхранява машинен код във файл предварително и interpretetor не) Е, да речем, аз разбирам, че програмата за преводач, ако-ите някаква част може никога да не бъде изпълнена, и поради това не преведени на машинен код , Но след това отново, най-вероятно няма проблем, че е трудно да се преведе цялата ако-те години в кода на компютър по-рано, това е да се съберат на кода.

С една дума, това, което все още са различия и сложността на изпълнението на компилатора, за разлика от преводача?

Преводачът не се занимава с производство на машинен код. Вместо това, той призовава за всеки отбор се тълкува специалната функция (която е част от кода на преводач), който върши цялата работа.

Съставител и съща (и двете редовни и JIT), първо генерира родния код, който след това се подава към процесор за незабавно изпълнение.

Компилаторът върши работата веднъж (при сглобяване на програмата), и преводач - всеки път, когато чета следващата инструкция. Това означава, че при съставянето на изпълнение над по-малки, и следователно по-висока скорост крайния код.

Сега, по отношение на сложността на изпълнението на компилатора. Преводачът просто улавя и извършва редовна програма изразяване; и как да се извърши - тогава забрави за него (разбира се, след като запазите резултата). Компилаторът е принуден да се мисли по-глобално: има оптимизация и интер-модул внос / износ лица (защото програмата може да се състои от няколко файловете с изходен код). В допълнение, компилаторът трябва да се придържат към определени стандарти и споразумения за взаимодействие с други инструменти (линкера, например); преводач като "нещо, което само по себе си", правим всичко сами работата.

"Compiler и преводач" - не е валиден въпрос. Нещата са съвсем различни. Съставител - преобразува изходния код в изпълнима (машина, която ще се изпълняват от процесор, или който и да е посредник, който ще се проведе на виртуалната Runtime Environment). Преводачът да отговаря също на изходния код. Виждате ли разликата. Преобразува компилатора (компилира) и преводаческите изпълнява (интерпретира). Може би искате да се сложи още един въпрос: каква е разликата, съставен от Яп тълкува. Разликата е очевидна: последният може да се играе, тъй като те са и не е необходимо за този допълнителен инструмент. Е, като цяло се опитвам да обобщим: в края на краищата, да, в крайна сметка ние имаме промяна на статута процесор с реалния физически процесор, а това намалява ефективността на всяка програма. Но в действителност има различия: 1), съставени езици изискват специални инструменти (компилатори), крайният продукт е частично защитени и трудни за да получите изходния код, крайният продукт е по-компактен. тъй като тя се състои от двоични инструкции, а не от човешки разбираемо - думи. Крайният продукт се извършва по-бързо - защото тя описва инструкциите, които са пряко подкрепени от целевата платформа. 2) интерпретиран език се изпълнява, тъй като е - не се нуждае от допълнително. инструменти за привеждане до крайното състояние, не са защитени - всеки може да открадне и промяна. Аз разбирам, че е написал очевидното. Просто не те разбирам, освен, че искате да чуете.

Ако за сложността на компилатора и преводачът може да бъде също толкова трудно да се напише. Ако езикът е трудно, във всеки случай, тя ще бъде трудно да се разглоби причина, че няма значение с каква цел да се изпълни или компилирате. Е, само точката, че преди компилатор винаги ще се изправят пред предизвикателството да донесе инструкция за някои канонична форма не е изобретен от вас

Свързани статии

Подкрепете проекта - споделете линка, благодаря!