Assembler срещу преводач
По принцип компилаторът е компютърна програма, която чете програма, написана на един език, който се нарича източник и го превежда на друг език, който се нарича целевия език. Традиционно езикът на източник е език на високо ниво като C ++, а целевият език е език на ниско ниво, като например език за сглобяване. Съществуват обаче компилатори, които могат да конвертират изходна програма, написана на асемблиращ език, и да я преобразуват в машинен код или обектов код. Асемблерите са такива инструменти. От друга страна, Интерпретаторите са инструменти, които изпълняват инструкции, написани на някакъв език за програмиране. Интерпретаторът може директно да изпълни изходен код от високо ниво или да ги преведе в междинен код и след това да го интерпретира или да изпълни предварително компилиран код.
Какво е Асемблер?
Assembler е софтуер или инструмент, който превежда езика на сборката в машинен код. Така че, асемблерът е тип компилатор и изходният код е написан на езика за сглобяване. Сглобяването е език, който може да се чете от хора, но обикновено има отношение към едно към съответния машинен код. Следователно се казва, че асемблерът извършва изоморфен (едно към едно картографиране) превод. Разширените асемблери предоставят допълнителни функции, които поддържат процеса на разработване на програми и отстраняване на грешки. Например, типът асемблери, наречени макросглобяващи устройства, осигурява макроустройство.
Какво е преводач?
Преводачът е компютърна програма или инструмент, който изпълнява инструкции за програмиране. Интерпретаторът може или да изпълни изходния код директно, или да преобразува източника в междинен код и да го изпълни директно или да изпълни предварително компилиран код, произведен от компилатор (някои интерпретационни системи включват компилатор за тази задача). Езици като Perl, Python, MATLAB и Ruby са примери за езици за програмиране, които използват междинен код. UCSD Pascal интерпретира предварително компилиран код. Езици като Java, BASIC и Samlltalk първо компилират източника на междинен код, наречен байт код и след това го интерпретират.
Каква е разликата между Асемблер и Преводач?
Асемблерът може да се счита за специален тип компилатор, който само превежда езика на сборника в машинен код. Интерпретаторите са инструменти, които изпълняват инструкции, написани на някакъв език. Интерпретаторните системи могат да включват компилатор за предварително съставяне на код преди интерпретация, но преводач не може да бъде наречен специален тип компилатор. Асемблерите произвеждат обект код, който може да се наложи да се свърже с помощта на линкерни програми, за да работи на машина, но повечето интерпретатори могат да завършат изпълнението на програма сами. Асемблерът обикновено прави превод от един към един, но това не е вярно за повечето преводачи. Тъй като езикът на сглобяване има едно към едно картографиране с машинен код, асемблер може да се използва за създаване на код, който работи много ефективно за случаи, в които производителността е много важна (например графични двигатели, вградени системи с ограничени хардуерни ресурси в сравнение с личен компютър като микровълни, перални и др.). От друга страна, преводачите се използват, когато се нуждаете от висока преносимост. Например, един и същ байт код на Java може да се изпълнява на различни платформи, като се използва съответният интерпретатор (JVM).