Что такое компилятор? Как работает: виды и примеры
Рассказываем об инструменте, который помогает человеку и компьютеру понять друг друга и способствует эффективному взаимодействию
![1715612471_oskaryildizcOkpTiJMGzAunsplash.jpg](https://cs.kiozk.ru/content/article/yvd/wfr/x8h/an7kx3mzsbjtiakzjgygyqd/halfnv.jpg?v=2&temp_url_sig=k4Rv_eJQsJngYu3Hx1BaRw&temp_url_expires=1718803811)
Компьютер и его составляющие не способны понять и выполнить команды на придуманных человеком языках программирования. Если команды и другие элементы программного кода, написанные программистом, напрямую будут считаны вычислительной машиной, они предстанут для них бессмысленным набором символов. Для организации своей работы все компьютеры используют длинные комбинации нулей и единиц, регулирующие включение и отключение переключателей.
Что такое компилятор?
Компилятор — это вид специального ПО, которое трансформирует программный код (программный текст) языка программирования в двоичный код, легко выполняемый компьютером. От пользователя компилятор получает исходник, а получившуюся комбинацию нулей и единиц передает компьютеру. Для преобразования программа использует методы анализа и синтаксиса.
Первые компиляторы
Впервые программа, преобразующая команды человека в двоичную форму, была создана в 1951 году американским программистом Грейс Хоппер. Эта программа за миллисекунды трансформировала программный текст высокого уровня, организовывала подпрограммы и распределяла память ЭВМ. Новую программу Хоппер назвала компоновщиком (англ. compiler). Такое название она объяснила тем, что программа подбирает нужную подпрограмму из библиотеки компьютера. Первый компилятор получил название A-0.
Впоследствии языки программирования стали снабжаться специализированными компиляторами. В 1957 было создано средство для языка FORTRAN, а в 1960-х — ПО от создателей COBOL.
Сегодня разработано множество компилирующих программ для разных языков программирования и для выполнения различных задач. Если вы не знаете, какой выбрать для изучения, прочитайте нашу статью.
Какие задачи выполняет компилятор
Кроме изложения программного кода в понятной для компьютера форме, компилятор выполняет следующие задачи:
1. Оптимизация программного текста, в рамках которой уменьшается объем используемой памяти, увеличивается скорость выполнения.
2. Анализ синтаксиса, лексики, семантики, который позволяет избежать ошибки в проектировании исходного текста.
3. Статический анализ кода для определения потенциальных уязвимостей программы.
4. Создание готовых к запуску исполняемых файлов на основе программного текста.
Как работает компилятор
Преобразование программного кода в машинный проходит в несколько этапов.
Лексический анализ
Программа идентифицирует лексические единицы исходника и группирует их по классам, таких как идентификаторы, константы, ключевые слова и т. д. Лексический анализ выполняется для прочтения компилирующим ПО исходного кода.
Синтаксический анализ (парсинг)
Определение правил написания исходника, построение синтаксического дерева. Если дерево получилось построить, значит, ошибок в исходнике нет. Проблемы в построении дерева свидетельствуют об ошибках, о которых компилятор сообщит пользователю.
Семантический анализ
Проверка согласованности элементов исходника, их смысла и значения.