Предположим создана программа на каком-то языке. Каким образом вообще она загружается на устройстве без установленного самого языка? (программисты, ну уж простите за такой вопрос) )))) Программа может быть создана посредством нескольких языков сразу, но выходит например в формате .exe. Объясните хоть на пальцах, пожалуйста, в какой момент это решается при написании-то? Или где об этом почитать? Почему например создавая проект в Python, его все-равно сохраняют в .py???
P.S. Я понимаю, что это то же самое, что спросить у молочника, что такое молоко, но не серчайте)))
Python
Язык программирования и
В момент компиляции...
Александр Васильев
Благодарю) Навели!
Обычный питон это динамический, некомпилируемый яп - исполняемый бинарник ты никак не получишь.
Есть другой вариант. Для питона понадобится упаковщик (наверняка такой есть), который запакует интерпретатор питона вместе с твоей программой в инсполняемый файл.
Есть другой вариант. Для питона понадобится упаковщик (наверняка такой есть), который запакует интерпретатор питона вместе с твоей программой в инсполняемый файл.
На пальцах - да пожалста.
Дело в том, что каждое устройство "говорит" на своём языке. Этот язык - машинный код. Вам он непонятен, как китайский, а устройство понимает только его (некоторые устройства понимают несколько, но не в этом суть) и умеет выполнять команды, написанные на нём. Собственно этот машинный код и находится внутри exe-файла.
Пока вроде всё ясно?
Теперь объясню, чем отличается компилятор от интерпретатора. Продолжим аналогию с иностранным языком.
Предположим, что вам надо послать китайца, который ВООБЩЕ не понимает русского куда-то доехать на общественном транспорте. Вы пишите инструкцию на русском языке - повернуть налево через подворотню, пройти 200 метров мимо кирпичного дома, перейти через дорогу к автобусной остановке и т. д. Потом вы проверяете её и ПЕРЕВОДИТЕ на китайский. Если всё правильно, то по переведённой инструкции китаец доберётся до места. Так работает компилятор, который переводит программу с естественного для вас языка в машинный код.
Более того, часть инструкции за вас может написать англичанин на английском, но если он сам переведёт её на китайский - проблем не будет.
Другой возможный вариант - вы даёте китайцу инструкции на русском языке и русско-китайский словарь. Он сам будет переводить её на китайский по мере надобности. И тоже доберётся до места, не так быстро как в первый раз, но доберётся.
Недостатки этого варианта:
-- требуется достаточно большой словарь, даже если в инструкции всего пара предложений
-- более медленная скорость выполнения инструкции
Но есть и достоинства:
-- не нужно самому знать китайский
-- если у вас есть ещё корейский и японский словари, то та же инструкция подойдёт для корейца и японца
По этому варианту работает интерпретатор. Именно таков язык Python. При наличии среды исполнения одна и та же программа теоретически будет работать на каком угодно устройстве БЕЗ ПЕРЕВОДА в машинные коды. Так как за вас "словарь" составили разработчики этого устройства.
ЗЫ
Есть ещё гибридные варианты с промежуточным языком, как в Java и .Net. Это чуть сложнее.
Но именно так мы поступаем в жизни - рисуем карту пути с понятными обозначениями.
Дело в том, что каждое устройство "говорит" на своём языке. Этот язык - машинный код. Вам он непонятен, как китайский, а устройство понимает только его (некоторые устройства понимают несколько, но не в этом суть) и умеет выполнять команды, написанные на нём. Собственно этот машинный код и находится внутри exe-файла.
Пока вроде всё ясно?
Теперь объясню, чем отличается компилятор от интерпретатора. Продолжим аналогию с иностранным языком.
Предположим, что вам надо послать китайца, который ВООБЩЕ не понимает русского куда-то доехать на общественном транспорте. Вы пишите инструкцию на русском языке - повернуть налево через подворотню, пройти 200 метров мимо кирпичного дома, перейти через дорогу к автобусной остановке и т. д. Потом вы проверяете её и ПЕРЕВОДИТЕ на китайский. Если всё правильно, то по переведённой инструкции китаец доберётся до места. Так работает компилятор, который переводит программу с естественного для вас языка в машинный код.
Более того, часть инструкции за вас может написать англичанин на английском, но если он сам переведёт её на китайский - проблем не будет.
Другой возможный вариант - вы даёте китайцу инструкции на русском языке и русско-китайский словарь. Он сам будет переводить её на китайский по мере надобности. И тоже доберётся до места, не так быстро как в первый раз, но доберётся.
Недостатки этого варианта:
-- требуется достаточно большой словарь, даже если в инструкции всего пара предложений
-- более медленная скорость выполнения инструкции
Но есть и достоинства:
-- не нужно самому знать китайский
-- если у вас есть ещё корейский и японский словари, то та же инструкция подойдёт для корейца и японца
По этому варианту работает интерпретатор. Именно таков язык Python. При наличии среды исполнения одна и та же программа теоретически будет работать на каком угодно устройстве БЕЗ ПЕРЕВОДА в машинные коды. Так как за вас "словарь" составили разработчики этого устройства.
ЗЫ
Есть ещё гибридные варианты с промежуточным языком, как в Java и .Net. Это чуть сложнее.
Но именно так мы поступаем в жизни - рисуем карту пути с понятными обозначениями.
ого, а у кого-то бурная ночь
Исходный текст (на любом языке программирования), в процессе компиляции, преобразуется в машинный код процессора, на котором он будет выполнятся (*.EXEcutable format). Поэтому исходный текст программы уже не нужен...
Василий Сизов
Иногда и не прямо в машинный, а в промежуточный код с расшрением уже не exe (впрочем, в майкрософтовской платформе :NET всё равно exe, но уже не в машинном коде) , тогда на компьютере должна быть установлена программа преобразования этого промежуточного кода в машинный.
Похожие вопросы
- Вы согласны с мнением, что питон хуже других языков программирования?
- Почему Python считается легким языком программирования ?
- Вопрос про языки программирования и фреймворки
- Стоит ли начинать изучение языков программирования с "Python"?
- Нужна помощь.(Язык программирования Python)
- Что значит интерпретируемый объектно-ориентированный язык программирования?
- Стоит ли изучать язык программирования паскаль в школе?
- Какой язык программирования лучше учить?
- Что такое типизация в языках программирования или как типизация реализована в python??
- Паскаль. Решить систему уравнений на языке программирования Паскаль.