Python

Язык программирования и

Предположим создана программа на каком-то языке. Каким образом вообще она загружается на устройстве без установленного самого языка? (программисты, ну уж простите за такой вопрос) )))) Программа может быть создана посредством нескольких языков сразу, но выходит например в формате .exe. Объясните хоть на пальцах, пожалуйста, в какой момент это решается при написании-то? Или где об этом почитать? Почему например создавая проект в Python, его все-равно сохраняют в .py???
P.S. Я понимаю, что это то же самое, что спросить у молочника, что такое молоко, но не серчайте)))
В момент компиляции...
ДЯ
Денис Янбеков
10 935
Лучший ответ
Александр Васильев Благодарю) Навели!
Обычный питон это динамический, некомпилируемый яп - исполняемый бинарник ты никак не получишь.
Есть другой вариант. Для питона понадобится упаковщик (наверняка такой есть), который запакует интерпретатор питона вместе с твоей программой в инсполняемый файл.
Serikhan Naimanhanuly
Serikhan Naimanhanuly
33 197
На пальцах - да пожалста.

Дело в том, что каждое устройство "говорит" на своём языке. Этот язык - машинный код. Вам он непонятен, как китайский, а устройство понимает только его (некоторые устройства понимают несколько, но не в этом суть) и умеет выполнять команды, написанные на нём. Собственно этот машинный код и находится внутри exe-файла.
Пока вроде всё ясно?

Теперь объясню, чем отличается компилятор от интерпретатора. Продолжим аналогию с иностранным языком.

Предположим, что вам надо послать китайца, который ВООБЩЕ не понимает русского куда-то доехать на общественном транспорте. Вы пишите инструкцию на русском языке - повернуть налево через подворотню, пройти 200 метров мимо кирпичного дома, перейти через дорогу к автобусной остановке и т. д. Потом вы проверяете её и ПЕРЕВОДИТЕ на китайский. Если всё правильно, то по переведённой инструкции китаец доберётся до места. Так работает компилятор, который переводит программу с естественного для вас языка в машинный код.
Более того, часть инструкции за вас может написать англичанин на английском, но если он сам переведёт её на китайский - проблем не будет.

Другой возможный вариант - вы даёте китайцу инструкции на русском языке и русско-китайский словарь. Он сам будет переводить её на китайский по мере надобности. И тоже доберётся до места, не так быстро как в первый раз, но доберётся.
Недостатки этого варианта:
-- требуется достаточно большой словарь, даже если в инструкции всего пара предложений
-- более медленная скорость выполнения инструкции
Но есть и достоинства:
-- не нужно самому знать китайский
-- если у вас есть ещё корейский и японский словари, то та же инструкция подойдёт для корейца и японца
По этому варианту работает интерпретатор. Именно таков язык Python. При наличии среды исполнения одна и та же программа теоретически будет работать на каком угодно устройстве БЕЗ ПЕРЕВОДА в машинные коды. Так как за вас "словарь" составили разработчики этого устройства.

ЗЫ
Есть ещё гибридные варианты с промежуточным языком, как в Java и .Net. Это чуть сложнее.
Но именно так мы поступаем в жизни - рисуем карту пути с понятными обозначениями.
Asomddin Abdulamidov
Asomddin Abdulamidov
11 112
ого, а у кого-то бурная ночь
Исходный текст (на любом языке программирования), в процессе компиляции, преобразуется в машинный код процессора, на котором он будет выполнятся (*.EXEcutable format). Поэтому исходный текст программы уже не нужен...
Игорь Тетерин
Игорь Тетерин
3 463
Василий Сизов Иногда и не прямо в машинный, а в промежуточный код с расшрением уже не exe (впрочем, в майкрософтовской платформе :NET всё равно exe, но уже не в машинном коде) , тогда на компьютере должна быть установлена программа преобразования этого промежуточного кода в машинный.