С чем на компьютер устанавливается компилятор/интерпретатор? Типо вместе с ОС есть сколько-то поддерживаемых для компиляции/интерпретации языков или все они устанавливаются с самим языком программирования? В случае, если с языком программирования, то как при развертывании(изменено) программы ее удается запустить на компе и без языка программирования?
Asked
Active
Viewed 60 times
0
-
Компилятор/интерпретатор не являются обязательной частью ОС, и вы обычно устанавливаете их самостоятельно. После компиляции в программе обычно остаётся только машинный код, понятный процессору, для запуска которого никакой язык больше не требуется. Для полноценной отладки необходим набор отладочных инструментов, который зависит от того, что, где и как конкретно вы хотите отладить. – andreymal Oct 13 '21 at 10:52
-
То есть после отладки просто стщдаются файлы с записанными в них коммандами на машинном коде и проц просто обращается к этим файлам при запуске проги? – MaGrAs Oct 13 '21 at 10:56
-
Что-то ваш комментарий мне не очень понятен. Что конкретно вы имеете в виду под словом "отладка"? – andreymal Oct 13 '21 at 10:58
-
Ой, я перепутал термины, не отладка, а развертывание. Прошу прощения, мой косяк – MaGrAs Oct 13 '21 at 16:30
-
Всё ещё непонятно, теперь что вы имеете в виду под «развертыванием»? – andreymal Oct 13 '21 at 16:34
-
1Программу удается запустить "без языка программирования" потому что компилятор преобразует исходный код этой программы в исполняемый файл, который понятен процессору и ОС. Т. е. разные ЯП компилируются в один и тот же исполняемый файл процессора и ОС, для запуска которого сам "язык программирования" не нужен (это не совсем так, потому что для работы в большинстве случаев требуются runtime библиотеки, но, думаю, суть понятна). – eanmos Oct 13 '21 at 16:43
-
В случае интерпретируемых языков обязательно нужен интерпретатор в той или иной форме. – eanmos Oct 13 '21 at 16:44
-
Все понял. Под развертыванием я имею в виду действия, направленные на то, чтобы сделать приложение готовым к использованию. – MaGrAs Oct 13 '21 at 16:53
-
@MaGrAs готовность к использованию — понятие субъективное и к компиляции/интерпретации и прочим техническим терминам отношения в общем-то не имеет – andreymal Oct 13 '21 at 16:55
-
Ну я имел в виду момент, когда программа превратилась в совокупность файлов, которые уже можно запукать и на других компах. Ну не знаю, может я непрофессионально высказался, если так, то извините. Скажи тогда, как правильно это называть. – MaGrAs Oct 13 '21 at 18:13
-
1Если вкратце, сперва идёт компиляция — преобразование из языка программирования в машинный код. Потом идёт компоновка (линковка), в процессе которой скомпилированные машинные коды собираются в единый файл и налаживаются связи со сторонними динамическими библиотеками (если таковые используются в программе), и вся информация о том, как и с чем запускать этот машинный код, собирается в единый exe/dll/elf/mach-o файл, который операционная система уже умеет запускать. – andreymal Oct 14 '21 at 08:54
-
А почему, если весь код можно засунуть в один файл, программы состоят из больше чем одного, например, dll файла? Типо это для удобства? – MaGrAs Oct 14 '21 at 17:27
-
@MaGrAs в том числе и для удобства, отдельные dll-файлы можно использовать одновременно в нескольких приложениях и обновлять по отдельности без пересборки exe-файлов. Тем не менее, сейчас намечается мода на сборку всего подряд в единый большой файл, например в языках Go и Rust – andreymal Oct 15 '21 at 22:24