Любая программа – это набор инструкций, будь то добавление 2 чисел или отправка запроса по сети. Компиляторы и интерпретаторы берут понятный для человека код и переводят его на машинный язык, который может прочесть компьютер.
В компилируемом языке целевая машина переводит программу самостоятельно. В интерпретируемом языке исходный код не переводится самой машиной; его читает и выполняет другая программа (интерпретатор).
Подробное объяснение
Представьте ситуацию: вы решили приготовить хумус. Но имеющийся у вас рецепт написан на древнегреческом. У вас, как человека не знающего этого языка, есть два варианта.
Вариант 1: кто-то уже перевел этот рецепт на ваш язык. Поэтому вы (и любой человек, знающий ваш язык) сможете прочесть рецепт в переводе и приготовить хумус. Переведенный рецепт и будет компилированной версией.
Есть и другой вариант: у вас есть друг, который знает древнегреческий. Поэтому, решив приготовить хумус, вы пригласили этого друга к себе. Друг сидит рядом и переводит рецепт – строчка за строчкой, – а вы занимаетесь готовкой. Ваш друг – это интерпретатор (переводчик) для интерпретируемой версии рецепта.
Когда JavaScript БЫСТРЕЕ, чем язык C
Компилируемые языки
Компилируемые языки сразу переводятся в машинный код, который может выполнить процессор. В результате они выполняются быстрее и эффективнее, чем интерпретируемые языки. Кроме того, в таких языках разработчик лучше контролирует аппаратные средства (управление памятью, использование ЦП и т.д.).
Компилируемым языкам требуется дополнительный этап «сборки», при котором их сначала компилируют вручную. Каждый раз при внесении изменений вам нужно будет «пересобирать» программу. Вернемся к примеру с хумусом. Перевод рецепта делался до того, как попал к вам в руки. Если автор рецепта захочет изменить тип оливкового масла, то весь рецепт придется переводить заново, а затем повторно отправлять вам.
Примеры истинных компилируемых языков: C, C++, Erlang, Haskell, Rust и Go.
Интерпретируемые языки
Интерпретаторы проходятся по каждой строке программы и выполняют все команды. Если автор из нашего примера захочет заменить оливковое масло, то он просто зачеркнет старую запись и добавит новую. А затем ваш друг-переводчик сразу увидит это изменение и переведет его вам.
Интерпретируемые языки гораздо медленнее компилируемых. Но с появлением JIT-компиляции (динамической компиляции) эта разница начинает сокращаться.
Примеры популярных интерпретируемых языков: PHP, Ruby, Python и JavaScript.
Небольшое пояснение
В большинстве языков программирования есть компилируемые и интерпретируемые реализации, а сам язык необязательно относится только к компилируемым или интерпретируемым. Но для простоты и удобства их принято относить к тому или иному типу.
Например, Python можно выполнять как компилируемую программу или интерпретируемый язык в интерактивном режиме. А большинство инструментов командной строки, интерфейсов командной строки и оболочек чисто теоретически относятся к интерпретируемым языкам.
Программа для написания программ не зная языка программирования.
Плюсы и минусы
Плюсы компилируемых языков
Обычно программы, скомпилированные в машинный код, выполняются быстрее интерпретируемых. Это связано с тем, что при переводе кода в процессе его выполнения увеличивается потребление ресурсов, что, в свою очередь, замедляет программу.
Минусы компилируемых языков
Основные недочеты компилируемых языков:
- нужно больше времени для завершения полной компиляции перед тестированием;
- сгенерированный двоичный код зависит от платформы.
Плюсы интерпретируемых языков
Интерпретируемые языки более гибкие и чаще предлагают такие возможности, как динамическая типизация и меньший размер программы. Кроме того, исходный код программы выполняют интерпретаторы, поэтому сам код не зависит от платформы.
Минусы интерпретируемых языков
Самый главный недочет этих языков – скорость выполнения. Она обычно ниже, чем в компилируемых языках.
Источник: dzen.ru
А. Это программа, которая Переводит текст, написанный на языке программирования, в набор машинных кодов
б.стиль написания программ, при котором появляющиеся ошибки легко обнаруживаются и идентифицируются программистом.
в. Небольшая программа, написанная на интерпретируемом языке
4. Каких видов существуют комментарии?
А. однострочный
Б. многострочный
5. Что такое интерполяция?
а. строка, перед которой расположен знак $
б. вид двойственного оператора
в. процедуры и процессы, выполняемые на сервере
6. Что такое литерал?]
а. Текстовые заметки, которые мы оставляем по поводу написанного кода
б. Вспомогательная программа, предназначенная для выполнения определенной задачи
В. какая-либо запись в исходном коде, представляющая собой фиксированное значение
7. Что представляет собой целочисленный литерал?
А. целые положительные и отрицательные числа
б. дробные положительные и отрицательные числа
в. целые только положительные числа
8. Что такое массив?
а. Конструкция, которая заставляет программу многократно выполнять определенное количество стейтментов до тех пор, пока заданное условие не станет ложным (или наоборот)
Б. пронумерованный набор однотипных данных с общим именем
в. Это последовательность стейтментов для выполнения определенного задания.
9. Что такое классы?
А. конструкция, которая объединяет поля, свойства и методы и является определением для создания объектов или экземпляров класса
б.Многократно используемый (типовой) кусок кода, позволяющий написать одну версию функции или класса, которая будет работать с разными типами данных.
в. Это функция, которая имеет доступ к закрытым членам класса, но при этом сама не является членом данного класса.
10. Что такое объектно-ориентированное программирования?
а. способ адресации данных, изменение которых рассматриваемой программой не предполагается или запрещается.
б. программа, основной задачей которой является защита сегментов сети или отдельных хостов от несанкционированного доступа с использованием уязвимых мест в протоколах сетевой модели OSI или в программном обеспечении, установленном на компьютерах сети.
В. методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования
Примеры учебно-методических материалов.
Пример презентации для изучения:
Источник: infopedia.su
Десктопные приложения на интерпретируемых языках. Как это работает?
Вопрос. Я начал изучать всякое программирование потихоньку, и стало интересно. Насколько я понимаю, когда ты делаешь приложение на каком-то компилируемом языке — ты компилируешь исходный код, получаешь бинарник, и если он был собран под правильную архитектуру — он скорее всего запустится. Ну, это если очень упростить всё.
Но я слышал, что люди делают десктопные приложения на всяких там питонах и других интерпретируемых языках. Можно ли так сделать, и если да — как сделать приложение на подобном языке, которое не будет требовать от конечного юзера установки интерпретатора со всеми модулями и остальным окружением? Говорю про питон потому, что начал потихоньку его учить. Но сам вопрос мне интересен в целом, без привязки к конкретному языку.
В заголовке написал «десктопные», потому что остальные обычно предполагают либо наличие окружения, либо предполагают, что человек в состоянии его установить. Так — совсем не обязательно именно десктопные.
UPD: Речь тут не обязательно о линукс, в линукс то понятно, там зависимости будут. Случайно этот тег поставил). Речь об OS X и возможно Windows
UPD 2: Всем спасибо! Теперь вроде понятнее. Как я понял, если у пользователя нет окружения и нельзя поставить зависимости — значит надо упаковать это окружение для пользователя в само приложение.
- Вопрос задан более трёх лет назад
- 563 просмотра
1 комментарий
Оценить 1 комментарий
Источник: qna.habr.com