Справочные материалы в среде программирования

Компилятор

     Компилятоp (от англ. “compile” - собирать вместе, составлять) - системная программа, выполняющая преобразование программы, написанной на одном алгоритмическом языке, в программу на языке, близком к машинному, и в определённом смысле эквивалентную первой. Компиляторы пишутся как на автокоде, так и на языках высокого уровня. Кроме того, существуют и специальные языки конструирования компиляторов - компиляторы компиляторов.

     Первые компиляторы появились в начале 1950-х гг. Сегодня сложно определить, когда появился первый компилятор, поскольку в те годы проводилось множество экспериментов и разработок различными независимыми группами. В основном, целью разработки первых компиляторов было преобразование в машинный код арифметических формул.

    Большая часть компиляторов переводят программу с некоторого высокоуровневого языка программирования в машинный код, который может быть непосредственно выполнен центральным процессором. Как правило, этот код также должен выполняться в среде конкретной операционной системы, поскольку использует предоставляемые ей возможности (системные вызовы, библиотеки функций).

    Процесс компиляции программ состоит из нескольких фаз. Их состав может несколько отличаться - некоторые из них могут быть разбиты на составляющие, другие, напротив, объединены в одну. В этом случае компиляторы, как правило, выполняют трансляцию текста исходной программы за несколько проходов.


      Понятие прохода. Однопроходные и многопроходные компиляторы




Рис. 1 - Компилятор в языке программирования Pascal




       Примеры компиляторов:


  • GCC;
  • Free Pascal Compiler;
  • Компиляторы C, C++ и Fortran от Sun Microsystems Inc.;
  • Watcom Fortran / C++ Compiler;
  • Intel C++ / Fortran compiler;
  • ICC AVR. 



     Некоторые компиляторы (например, Java) переводят программу не в машинный код, а в программу на некотором специально созданном низкоуровневом языке. Такой язык - байт-код - также можно считать языком машинных команд, поскольку он подлежит интерпретации виртуальной машиной. Например, для языка Java это JVM (язык виртуальной машины Java), или так называемый байт-код Java (вслед за ним все промежуточные низкоуровневые языки стали называть байт-кодами). Для языков программирования на платформе .NET Framework (C#, Managed C++, Visual Basic, .NET и другие) это MSIL (Microsoft Intermediate Language, "Промежуточный язык фирмы Майкрософт").