Плюсы и минусы интерпретируемых языков
Сейчас я изучаю Perl, но каковы плюсы и минусы интерпретируемых языков? Потому что я начал изучать Perl, потому что мой друг начал, тогда для моего опыта это всего лишь один язык. Благодарю.
8 ответов
Явная копия из Википедии, поэтому я сделаю это сообщество вики.
Преимущества переводимых языков
Интерпретируемые языки дают программам некоторую дополнительную гибкость по сравнению с компилируемыми языками. Функции, которые легче реализовать в интерпретаторах, чем в компиляторах, включают (но не ограничиваются ими):
- независимость от платформы (например, байт-код Java)
- отражение и рефлексивное использование оценщика (например, функция оценки первого порядка)
- динамическая типизация
- простота отладки (легче получить информацию об исходном коде на интерпретируемых языках)
- небольшой размер программы (поскольку интерпретируемые языки могут выбирать код инструкции)
- динамический обзор
- автоматическое управление памятью
Недостатки переводимых языков
Выполнение интерпретатором обычно намного менее эффективно, чем обычное выполнение программы. Это происходит потому, что каждая инструкция должна проходить интерпретацию во время выполнения или как в более новых реализациях, код должен быть скомпилирован в промежуточное представление перед каждым выполнением. Виртуальная машина - это частичное решение проблемы производительности, поскольку определенный промежуточный язык намного ближе к машинному языку и, следовательно, его легче переводить во время выполнения. Другим недостатком является необходимость переводчика на локальном компьютере, чтобы сделать возможным выполнение.
Плюсы:
- Быстрое прототипирование (без записи, компиляции, выполнения цикла)
- Кроссплатформенность (при условии, что для каждой платформы существуют переводчики)
Минусы:
- Производительность (не будет такой же быстрой, как у скомпилированных языков)
Самый большой недостаток? Большинство скажет скорость выполнения, но это не всегда так. Большинство современных интерпретируемых языков в наши дни при сборке преобразуют файлы для интерпретации в промежуточное состояние, которое при исполнении превращается в машинный код, как и любой другой язык. Поскольку в наши дни в этих языковых виртуальных машинах преобладает интеллектуальное кэширование, это не должно быть проблемой. Это, конечно, не означает, что производительность не является проблемой для интерпретируемых языков, просто она часто не так плоха, как многие предполагают.
Имейте в виду, что даже при проблемах с производительностью часто проще выполнить те же задачи, что и скомпилированный язык, в менее и более эффективном коде, что делает потерю производительности во время компиляции незначительной во время выполнения программы.
Лично для меня самым большим недостатком является необходимость постоянного присутствия переводчика до выполнения. Это часто снижает мобильность, особенно потому, что интерпретируемые языки не всегда являются кроссплатформенными.
Против:
- Самый большой недостаток, вероятно, скорость выполнения
Pro:
- Самый большой плюс, вероятно, время оборота, то есть цикл итерации теста кода
Чтобы сформулировать очевидную и общую точку зрения, компилируемые языки, как правило, имеют более высокую производительность, чем интерпретируемые, поскольку компиляция исключает необходимость в интерпретаторе времени выполнения.
Скомпилированные языки больше подходят для коммерческого настольного программного обеспечения, поскольку исходный код вместе с ним не поставляется.
Интерпретируемые языки, как правило, учатся немного быстрее, поскольку они позволяют вам быстро редактировать / запускать / повторять, не дожидаясь компилятора. По моему опыту, они также имеют тенденцию быть более высокого уровня, что также облегчает их.
"Медлительность" динамических языков, таких как PERL, может больше не быть проблемой. Вот отличная презентация о последних тенденциях в области динамического языка:
http://steve-yegge.blogspot.com/2008/05/dynamic-languages-strike-back.html
Существенным преимуществом интерпретируемого языка является то, что его не нужно компилировать для каждого целевого оборудования отдельно.
Недостаток в том, что это замедляет выполнение кода.
В Википедии есть страница о преимуществах и недостатках. Любой значительно продвинутый интерпретируемый язык может быть фактически скомпилирован в нативный двоичный файл, таким образом размывая границы между преимуществами и недостатками интерпретируемого языка.
PERL - один из тех языков, который стирает строки. Хотя он известен тем, что он является мощным языком сценариев, вы можете скомпилировать его, чтобы он был нативным.
Как ява интерпретируется язык
Плюсы:
- Совместимость: Виртуальная машина Java поддерживает эту концепцию "Пиши один раз, запускай везде".
- Безопасность: программа, работающая в JVM, поэтому в случае сбоя это не влияет на файлы операционной системы.
- Управление памятью.
Минусы:
- Виртуальная машина Java имеет много реализаций, например, при написании программы, использующей функции Java 8, эта программа должна работать на JVM с версией 8, не менее.