Програмно осигуряване

© Христо Тужаров, 2008

ПРОГРАМИ ЗА ЕЗИКОВА ОБРАБОТКА

 

[Home] [Съдържание] [В началото] [За проекта] [За автора] [Бизнес консултации] [Асеневци]

 

СИСТЕМНО ПРОГРАМНО ОСИГУРЯВАНЕ

 

ПРОГРАМИ ЗА ЕЗИКОВА ОБРАБОТКА

 

СЛУЖЕБНИ ПРОГРАМИ

 

УПРАВЛЯВАЩИ ПРОГРАМИ

 (ДРАЙВЕРИ)

 

 

Транслатор

Програма, която преобразува програма написана на един език  (нарича се изходен език, а програмата изходен код) в програма, написана на друг език (нарича се целеви език и обектен код).

 

 

Транслатор

 

 

Като целеви език най-често се използват машинен код, Асемблер и байт код, които са най-удобни за следващо използване.

Използват два вида транслатори:

 

            Компилатор – резултатът от транслацията е изпълним файл. Този файл се:

  • Транслира еднократно – може да бъде пуснат самостоятелно;

  • Не изисква присъствие на създалия го транслатор.

             Интерпретатор – транслира програмата постъпково. В този случай програмата :

  • Се транслира (интерпретира) при всяко стартиране;

  • Изисква за изпълнение  съответния интерпретатор и изходния код.

Освен „чисти компилатори и интерпретатори” съществуват множество междинни варианти.

 

Компилатор

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

 

Компилатор

 

 

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

 

Като правило машинния код се изпълнява в среда на конкретна операционна система, тъй като използва предоставени от нея възможности. Това изисква създаване на компилатори за всяка операционна система.

 

           Крос–компилатори – позволяват в среда на една операционна система да се получи код за изпълнение в друга среда на ОС.

 

            Декомпилатори – програми, които решават обратната задача. Те преобразуват програми с език на машинно ниво в програми с език от високо ниво.

 

Интерпрета́тор

Транслира програмите непосредствено в хода на изпълнението им.

 

Интерпрета́тор

 

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

 

              Сложни интерпретатори (наричат се интерпретатори от компилиращ тип)  - преди изпълнението извършват компилация на изходния код на програмата в машинен или някакъв „междинен” код, след което пристъпват към изпълнението му.

    

Асе́мблер

Транслира инструкциите написани на асемблерен език в машинен код.

 

За всяка процесорна архитектура или за всяка ОС, съществува собствен Асемблер.

 

Байт-код

Машинно-независим код от ниско ниво, генериран от компилатор и изпълняван от интерпретатор.

 

Байт-код

 

 

на байт-код

  • Трансляцията в байт-код заема междинно положение между компилацията в машинен код и интерпретацията.

  • Болшинството инструкции на  байт-кода са еквивалентни на една или няколко команди на асемблера.

  • Всяка инструкция представлява еднобайтов код на операцията, след който следват параметри  - регистри или адреси в паметта. 

  • Програмата на байт-кода обикновено се изпълнява от интерператора на байт код (обикновено се нарича виртуална машина).

          Преимущества на байт-код

  • Постига се мобилност, т.е. един и същ байт код може да се изпълнява на различни платформи и архитектури.

  • Байт кодът обикновено е по-компактен и по ефективен от чистата интерпретация на изходния код.

          Приложение на байт-код

Този подход се използва в много съвременни ивтерпретируеми езици, при които изходния код се компилира до байт код и след това се интерпретира (Perl, PHP и Python).

   

Програмите написани на езика Java обикновено се предават за изпълнение във вид на байт код, който преди изпълнение се транслира в машинен код в реално време с помощта на JIT-компилация.

 

За програмните езици използвани в платформата  .NET Framework (C#, Managed C++, Visual Basic .NET и други) транслаторът в машинен код се нарича MSIL (Microsoft Intermediate Language, „Промеждутъчен език на фирмата Microsoft”).