Каковы плюсы и минусы интерпретируемых языков? - PullRequest
5 голосов
/ 23 октября 2009

Я сейчас изучаю Perl. Каковы плюсы и минусы переведенных языков?

Ответы [ 8 ]

11 голосов
/ 23 октября 2009

Явная копия из Википедии , поэтому я сделаю это сообщество вики.

Преимущества переведенных языков

Интерпретируемые языки дают программам некоторую дополнительную гибкость по сравнению со скомпилированными языками. Функции, которые легче реализовать в интерпретаторах, чем в компиляторах, включают (но не ограничиваются ими):

  • независимость от платформы (например, байт-код Java)
  • отражение и рефлексивное использование оценщика (например, функция оценки первого порядка)
  • динамическая печать
  • простота отладки (легче получить информацию об исходном коде на интерпретируемых языках)
  • небольшой размер программы (поскольку интерпретируемые языки могут выбирать код инструкции)
  • динамическое определение объема
  • автоматическое управление памятью

Недостатки переведенных языков

Выполнение интерпретатором обычно намного менее эффективно, чем обычное выполнение программы. Это происходит потому, что каждая инструкция должна проходить интерпретацию во время выполнения или как в более новых реализациях, код должен быть скомпилирован в промежуточное представление перед каждым выполнением. Виртуальная машина - это частичное решение проблемы производительности, поскольку определенный промежуточный язык намного ближе к машинному языку и, следовательно, его легче переводить во время выполнения. Другим недостатком является необходимость в интерпретаторе на локальной машине, чтобы сделать возможным выполнение.

6 голосов
/ 23 октября 2009

Плюсы:

  • Быстрое создание прототипов (без записи, компиляции, выполнения цикла)
  • Кроссплатформенность (при условии, что для каждой платформы существуют переводчики)

Минусы:

  • Производительность (не будет такой же быстрой, как у скомпилированных языков)
2 голосов
/ 23 октября 2009

Самый большой недостаток? Большинство скажет скорость выполнения, но это не всегда так. Большинство современных интерпретируемых языков в наши дни преобразуют файлы для интерпретации в промежуточное состояние при сборке, которое при исполнении превращается в машинный код, как и любой другой язык. Поскольку в наши дни в этих языковых виртуальных машинах преобладает интеллектуальное кэширование, это не должно быть проблемой. Это, конечно, не означает, что производительность не является проблемой для интерпретируемых языков, просто она часто не так плоха, как многие могли бы предположить.

Имейте в виду, что даже при проблемах с производительностью часто проще выполнять те же задачи, что и скомпилированный язык, в менее эффективном коде, что делает потерю производительности во время компиляции незначительной во время выполнения программы. 1003 *

Лично для меня самым большим недостатком является необходимость постоянного присутствия переводчика, прежде чем может произойти выполнение. Это часто снижает мобильность, особенно потому, что интерпретируемые языки не всегда являются кроссплатформенными.

1 голос
/ 23 октября 2009

Для очевидного и широкого смысла скомпилированные языки, как правило, имеют более высокую производительность, чем интерпретируемые, поскольку компиляция исключает необходимость в интерпретаторе времени выполнения.

Скомпилированные языки больше подходят для коммерческого настольного программного обеспечения, поскольку исходный код вместе с ним не поставляется.

Интерпретируемые языки, как правило, учатся немного быстрее, поскольку они позволяют вам быстро редактировать / запускать / повторять, не дожидаясь компилятора. По моему опыту, они также имеют тенденцию быть более высокого уровня, что также облегчает их.

1 голос
/ 23 октября 2009

Con:

  • Самым большим недостатком является, вероятно, скорость выполнения

Pro:

  • Самый большой потенциал роста - это, вероятно, время оборота, то есть цикл итерации теста кода
0 голосов
/ 15 июля 2017

Как интерпретируется язык Java

Плюсы:

  • Совместимость: виртуальная машина Java одобряет эту концепцию «Пиши один раз, запускай везде».
  • Безопасность: программа, работающая в JVM, поэтому в случае сбоя это не влияет на файлы операционной системы.
  • Управление памятью.

Минусы:

  • Виртуальная машина Java имеет много реализаций, например, при написании программы, использующей функции Java 8, эта программа должна работать на JVM с версией 8, не менее.
0 голосов
/ 23 октября 2009

«Медлительность» динамических языков, таких как PERL, может больше не быть проблемой. Вот отличная презентация о последних тенденциях в области динамического языка:

http://steve -yegge.blogspot.com / 2008/05 / динамические-языки-сдвиговых back.html

0 голосов
/ 23 октября 2009

Википедия имеет страницу о преимуществах и недостатках. Любой значительно продвинутый интерпретируемый язык может быть фактически скомпилирован в собственный двоичный файл, таким образом размывая границы между преимуществами и недостатками интерпретируемого языка.

PERL - один из тех языков, который стирает строки. Несмотря на то, что он известен как мощный язык сценариев, вы можете скомпилировать его как родной.

...