0

С чем на компьютер устанавливается компилятор/интерпретатор? Типо вместе с ОС есть сколько-то поддерживаемых для компиляции/интерпретации языков или все они устанавливаются с самим языком программирования? В случае, если с языком программирования, то как при развертывании(изменено) программы ее удается запустить на компе и без языка программирования?

MaGrAs
  • 47
  • Компилятор/интерпретатор не являются обязательной частью ОС, и вы обычно устанавливаете их самостоятельно. После компиляции в программе обычно остаётся только машинный код, понятный процессору, для запуска которого никакой язык больше не требуется. Для полноценной отладки необходим набор отладочных инструментов, который зависит от того, что, где и как конкретно вы хотите отладить. – 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

0 Answers0