Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Ветка, для тех, кто начинает.

28.09.21 11:13
Re: Ветка, для тех, кто начинает.
 
alex445 свой человек
в ответ melodi_ 27.09.21 17:18

У меня непонимание:

1) Значит ли это, что существуют к каждому языку различные Compiler, которые только для определенного процессора предназначены? Значит ли это, что перевод пайтон программы одним типом процессора будет понята, а для другого этот машинный код не понятен?

2) Как осуществляется, что благодаря промежуточной программев Джава его Compiler(Java Virtual Machine) для любого типа процессора в нужный машинный код переводит?

Даже если где-то работает интерпретатор, то после него всегда есть компилятор, т.к. всё равно весь код так или иначе должен быть переведён в машинный код. Только там разные пути до нативного кода могут быть - через браузер, например.


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


2) насколько я знаю, по аналогии с виртуальной машиной .NET, программа поставляется компилированной в промежуточный код (байткод), а при первом запуске на конкретной машине она компилируется в двоичный код конкретной архитектуры, на которой эта программа запущена. Поэтому первый старт программы с подобными промежуточными компиляциями на новой машине замедлен - идёт компиляция в нативный код текущей архитектуры.


Вообще, лучше обращайтесь к Википедии - там буквально по первым нескольким абзацам получите куда лучшее представление по таким темам.

 

Перейти на