Вопрос

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

Это было полезно?

Решение

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

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

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

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

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

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

Другие советы

Плюсы:

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

Минусы:

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

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

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

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

Con:

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

Профессиональный:

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

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

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

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

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

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

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

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

Поскольку java является интерпретируемым языком

Плюсы:

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

Минусы:

  • Виртуальная машина Java имеет множество реализаций, например, при написании программы, использующей функции Java 8, эта программа должна запускаться на JVM с версией не менее 8.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top