Skip to main content

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

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

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

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

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

Промежуточный вывод в многоступенчатом компиляторе обычно называется псевдокодом , поскольку он не используется компьютером. Псевдокод очень структурирован, как компьютерная программа, не свободен и многословен, как более естественный язык. Окончательный вывод называется исполняемым файлом , поскольку он фактически выполняется или выполняется компьютером. Разделение задачи таким образом облегчило написание более сложных компиляторов, поскольку каждая подзадача различна. Кроме того, компьютеру было легче указывать, где он испытывает затруднения при понимании того, что ему предлагается делать.

Ошибки, которые ограничивают компилятор в понимании программы, называются синтаксическими ошибками . Ошибки в том, как функции программы называются логическими ошибками . Логические ошибки гораздо сложнее обнаружить и исправить. Синтаксические ошибки похожи на орфографические ошибки, тогда как логические ошибки больше похожи на грамматические ошибки.

Кросс-компиляторные программы также были разработаны. Кросс-компилятор позволяет скомпилировать набор команд для текстового файла, написанный для одного компьютера, созданного конкретным производителем, и запустить его для другого компьютера другого производителя. Например, программа, написанная для запуска на компьютере Intel, иногда может быть скомпилирована для запуска на компьютере, разработанном компанией Motorola. Это часто не очень хорошо работает. На уровне, на котором работают компьютерные программы, компьютерное оборудование может выглядеть очень по-разному, даже если оно может выглядеть как вы.

Кросс-компиляция отличается от того, чтобы один компьютер эмулировал другой. Если компьютер эмулирует другой компьютер, он притворяется этим другим компьютером. Эмуляция часто медленнее, чем кросс-компиляция, поскольку одновременно запускаются две программы: программа, которая претендует на роль другого компьютера, и программа, которая выполняется. Однако, чтобы кросс-компиляция работала, вам нужен как исходный текст на естественном языке, описывающий программу, так и компьютер, который достаточно похож на исходный компьютер, на котором программа может работать, чтобы работать на другом компьютере. Это не всегда возможно, поэтому используются оба метода.