Что делает программа компилятор

Компилятор — это программа, преобразующая команды, созданные на языке программирования, в машинные кодов (понятных компьютерам). Или собирает разные модули в общий файл для исполнения алгоритмов последовательно.

Для какой цели нужен

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

Разница между компилятором и интерпретатором

Компилятор, интерпретатор и байт-код — разные способы перевода команд в набор нулей и единиц. Принцип работы компилятора описан выше.

Как работает язык программирования(Компилятор)? Основы программирования.

Интерпретатор выполняют код построчно (без сборки модулей в файл). Языки программирования, основанные на работе интерпретаторов, называют интерпретируемыми. Байт-код — связующее звено между этими двумя видами. Его используют в языках, запускаемых в виртуальной машине, например, в Java.

Какие языки используют компиляторы

Языки могут быть компилируемыми или транслируемыми в байт-код. К примерам компилируемых относятся Pascal, Swift, C и C ++, Haskell, Rust, Lisp и Prolog, а транслируемые — C#, Java, Scala и семейство .NET.

Почему не всегда в одном языке один компилятор

Наличие нескольких компиляторов для одного языка программирования объясняется различиями в платформах, стандартах, функциях и вендорах. Разные компиляторы могут быть оптимизированы для разных платформ, реализовывать стандарты по-разному и иметь различные функции. Это полезно для разработчиков: они выбрать наиболее подходящий компилятор под конкретную задачу.

Elbrus Bootcamp

Вам может также понравиться.

Что такое браузерные события

Что такое браузерные события

Что такое алгоритмы в программировании

26 мая 2023 г.

Что такое алгоритмы в программировании

Что такое frontend и backend разработка

15 мая 2023 г.

Источник: elbrusboot.camp

Введение

Таким образом, то, что вы можете назвать языком программирования, на самом деле представляет собой просто программное обеспечение, называемое компилятором, которое читает текстовый файл, много обрабатывает его и генерирует двоичный файл.Поскольку компьютер может читать только 1 и 0, а люди пишут лучше, чем Rust, чем двоичные файлы, были созданы компиляторы, чтобы превратить этот читаемый человеком текст в читаемый компьютером.Машинный код,

Читайте также:
4 программа это команд которую выполняет компьютер в процессе информации

Компиляция. Как работает компилятор

Компилятором может быть любая программа, которая переводит один текст в другой. Например, вот компилятор, написанный на Rust, который превращает 0 в 1, а 1 в 0:

Что такое переводчик

интерпретаторы очень похожи на компиляторы в том, что они читают язык и обрабатывают его. Хотя,интерпретаторы пропускают генерацию кода и выполняют AST вовремя ,Самое большое преимущество для интерпретаторов — это время, необходимое для запуска вашей программы во время отладки. Компилятору может потребоваться от секунды до нескольких минут, чтобы скомпилировать программу перед выполнением, в то время как интерпретатор начинает выполнение немедленно, без компиляции. Самым большим недостатком переводчика является то, что он должен быть установлен на компьютере пользователя, прежде чем программа может быть выполнена.

Эта статья в основном относится к компиляторам, но должно быть ясно, как они различаются и как соотносятся компиляторы.

1. Лексический анализ

Первый шаг — разделить входные данные символ за символом. Этот шаг называется лексический анализ или токенизация. Основная идея заключается в том, чтомы группируем символы вместе, чтобы сформировать наши слова, идентификаторы, символы и многое другое.Лексический анализ в основном не имеет ничего общего с решением 2+2 — было бы просто сказать, что есть три жетоны: число: 2 , знак плюс, а затем еще один номер: 2 ,

Допустим, вы лексировали строку как 12+3 : это будет читать символы 1 , 2 , + , а также 3 , У нас есть отдельные персонажи, но мы должны сгруппировать их; одна из главных задач токенизатора. Например, мы получили 1 а также 2 как отдельные буквы, но нам нужно сложить их и проанализировать как одно целое число. + также должен быть признан как знак плюс, а не его буквальное значение символа — код символа 43.

Если вы можете видеть код и таким образом придавать ему большее значение, то следующий токенайзер Rust может сгруппировать цифры в 32-разрядные целые числа и знаки плюс в качестве Token ценность Plus

Rust Playground

play.rust-lang.org

Вы можете нажать кнопку «Выполнить» в верхнем левом углу Rust Playground, чтобы скомпилировать и выполнить код в вашем браузере.

В компиляторе для языка программирования лексеру может потребоваться несколько различных типов токенов. Например: символы, числа, идентификаторы, строки, операторы и т. Д. От самого языка зависит, какие именно токены вам нужно извлечь из исходного кода.

Дерево, которое генерирует парсер при разборе, называется абстрактное синтаксическое дерево или АСТ.AST содержит все операции. Парсер не вычисляет операции, он просто собирает их в правильном порядке.

Читайте также:
Кто вел программу деньги не пахнут

Я добавил к нашему коду лексера ранее, чтобы он соответствовал нашей грамматике и мог генерировать AST, как на диаграмме. Я отметил начало и конец нового кода парсера с комментариями // BEGIN PARSER // а также // END PARSER // ,

Rust Playground

play.rust-lang.org

0.5 – Введение в компилятор, компоновщик (линкер) и библиотеки

Рисунок 1 Процесс разработки программного обеспечения

Чтобы скомпилировать программу на C++, мы используем компилятор C++, который последовательно просматривает каждый файл исходного кода ( .cpp ) в вашей программе и выполняет две важные задачи:

Сначала он проверяет ваш код, чтобы убедиться, что он соответствует правилам языка C++. В противном случае компилятор выдаст вам ошибку (и номер соответствующей строки), чтобы помочь точно определить, что нужно исправить. Процесс компиляции будет прерван, пока ошибка не будет исправлена.

Во-вторых, он переводит исходный код C++ в файл машинного кода, называемый объектным файлом. Объектные файлы обычно имеют имена name.o или name.obj , где name совпадает с именем файла .cpp , из которого он был создан.

Если бы в вашей программе было бы 3 файла .cpp , компилятор сгенерировал бы 3 объектных файла:

Рисунок 2 Процесс компиляции

Компиляторы C++ доступны для многих операционных систем. Мы скоро обсудим установку компилятора, поэтому сейчас нет необходимости останавливаться на этом.

Шаг 5. Компоновка (линковка) объектных файлов и библиотек

После того, как компилятор создал один или несколько объектных файлов, включается другая программа, называемая компоновщиком (линкером). Работа компоновщика состоит из трех частей:

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

Рисунок 3 Процесс компоновки (линковки)

Во-вторых, помимо возможности связывать объектные файлы, компоновщик (линкер) также может связывать файлы библиотек. Файл библиотеки – это набор предварительно скомпилированного кода, который был «упакован» для повторного использования в других программах.

Ядро языка C++ на самом деле довольно небольшое и лаконичное (и вы узнаете многое о нем в последующих статьях). Однако C++ также поставляется с обширной библиотекой, называемой стандартной библиотекой C++ (обычно сокращенно «стандартная библиотека», или STL), которая предоставляет дополнительные функции, которые вы можете использовать в своих программах. Одна из наиболее часто используемых частей стандартной библиотеки C++ – это библиотека iostream , которая содержит функции для печати текста на мониторе и получения от пользователя ввода с клавиатуры. Почти каждая написанная программа на C++ в той или иной форме использует стандартную библиотеку, поэтому она часто подключается к вашим программам. Большинство компоновщиков автоматически подключают стандартную библиотеку, как только вы используете какую-либо ее часть, так что, как правило, вам не о чем беспокоиться.

Читайте также:
Какой программой проверить видеокарту

Вы также можете при желании выполнить линковку с другими библиотеками. Например, если вы собрались написать программу, которая воспроизводит звук, вы, вероятно, не захотите писать свой собственный код для чтения звуковых файлов с диска, проверки их правильности или выяснения, как маршрутизировать звуковые данные к операционной системе или оборудованию для воспроизведения через динамик – это потребует много работы! Вместо этого вы, вероятно, загрузили бы библиотеку, которая уже знала, как это сделать, и использовали бы ее. О том, как связывать библиотеки (и создавать свои собственные!), мы поговорим в приложении.

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

Как только компоновщик завершит линковку всех объектных файлов и библиотек (при условии, что всё идет хорошо), вы получите исполняемый файл, который затем можно будет запустить!

Для продвинутых читателей

Для сложных проектов в некоторых средах разработки используется make-файл (makefile), который представляет собой файл, описывающий, как собрать программу (например, какие файлы компилировать и связывать, или обрабатывать какими-либо другими способами). О том, как писать и поддерживать make-файлы, написаны целые книги, и они могут быть невероятно мощным инструментом. Однако, поскольку make-файлы не являются частью ядра языка C++, и вам не нужно их использовать для продолжения изучения, мы не будем обсуждать их в рамках данной серии статей.

Шаги 6 и 7. Тестирование и отладка

Это самое интересное (надеюсь)! Вы можете запустить исполняемый файл и посмотреть, выдаст ли он ожидаемый результат!

Если ваша программа работает, но работает некорректно, то пора немного ее отладить, чтобы выяснить, что не так. Мы обсудим, как тестировать ваши программы и как их отлаживать, более подробно в ближайшее время.

Интегрированные среды разработки (IDE)

Обратите внимание, что шаги 3, 4, 5 и 7 включают в себя использование программного обеспечения (редактор, компилятор, компоновщик, отладчик). Хотя для каждого из этих действий вы можете использовать отдельные программы, программный пакет, известный как интегрированная среда разработки (IDE), объединяет все эти функции вместе. Мы обсудим IDE и установим одну из них в следующем разделе.

Источник: radioprog.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru