2014-01-19 13 views
0

В последнее время я начал изучать принцип программирования. Есть некоторые концепции, которые являются абстрактными для меня на данный момент. Я хотел бы знать, что такое «машина» в плане компиляции. Или пример машины был бы хорош для меня, чтобы понять это. Как понять машину - это «само по себе основа, на которой должны стоять другие вещи»?Что такое «машина» с точки зрения компиляции?

+0

Вероятно, вы спрашиваете о * абстрактной машине *, которая часто используется для описания семантики промежуточного кода, используемого компиляторами (см., Например, «Warren Abstract Machine»). –

ответ

4

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

+0

Я не уверен, что упоминание интерпретатора как машины с точки зрения компиляции не путает новичка. –

2

Машина в этом смысле будет фактическим физическим компьютером. С точки зрения компиляции: каждый код, который вы пишете, должен быть скомпилирован в машинный код в конце. Точнее, это микропроцессор компьютера, и все входы в ЦП должны быть в машинном языке. Когда вы программируете на языках высокого уровня (C, Java и т. Д.), Все файлы машинного кода обрабатываются компиляторами (или также виртуальной машиной/эмулятором).

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

Смежные вопросы