Ruby - это язык сценариев или интерпретируемый язык? - PullRequest
29 голосов
/ 02 сентября 2011

Я только что заметил, что на странице википедии на Ruby этот язык определяется как интерпретируемый язык.
Я понял, что, вероятно, чего-то не хватает в моем фоне.
Я всегда знал разницу между интерпретируемым языком, которому не нужен компилятор, и компилируемым языком (который требуется компилировать перед выполнением программ), но что характеризует язык сценариев?
Определим ли Ruby как язык сценариев?

Спасибо и прости меня за затемнение

Ответы [ 3 ]

43 голосов
/ 02 сентября 2011

Вещи не просто черно-белые.По крайней мере, они также большие и маленькие, громкие и тихие, синие и оранжевые, серые и серые, длинные и короткие, правильные и неправильные и т. Д.

Интерпретация / компиляция - это только один из способов классификацииязыки, и он полностью независим от (среди множества других вещей) того, называете ли вы тот же язык "языком сценариев" или нет.В довершение всего, это также неправильная классификация:

  • Интерпретация / компиляция зависит от языковой реализации, а не от языка (это не просто теория, на самом деле существует довольно много языков, для которых обасуществуют интерпретаторы и компиляторы)
  • Существуют языковые реализации (многие из них, включая большинство реализаций Ruby), которые являются компиляторами, но «только» компилируются в байт-код и интерпретируют этот байт-код.
  • Существуют также реализации, которые переключаются между интерпретацией и компиляцией в собственный код (JIT-компиляторы).

Видите ли, реальность - это сложный зверь;) Ruby, как упоминалось выше, часто компилируется.Выходные данные этой компиляции затем интерпретируются, по крайней мере, в некоторых случаях - есть также реализации, которые JIT-компилирует (Rubinius и IIRC JRuby компилируют в байт-код Java через некоторое время).Эталонная реализация была компилятором в течение длительного времени, а IIRC все еще существует.Так Ruby интерпретируется или компилируется?Ни один из терминов не имеет смысла, если вы его не определите;)

Но вернемся к вопросу: «Язык сценариев» также не является свойством языка, он зависит от того, как язык используется, а именно от того, является ли языкиспользуется для задач сценариев.Если вы ищете определение, страница Wikipedia на « языке сценариев » может помочь (только не позволяйте им путать вас с примечаниями о деталях реализации, таких как сценарии, которые обычно интерпретируются).Действительно, есть несколько программ, которые используют Ruby для выполнения задач сценариев, и, несомненно, существует множество автономных Ruby-программ, которые, скорее всего, будут считаться сценариями (очистка веб-страниц, системное администрирование и т. Д.).

Итак да, я думаю, можно назвать Ruby языком сценариев.Конечно, это не означает, что веб-приложение ruby ​​on rails - это просто скрипт.

4 голосов
/ 02 сентября 2011

Да.

Подробный ответ:

Язык сценариев обычно используется для управления приложениями, которые часто не написаны на этом языке. Например, сценарии оболочки и т. Д. Могут вызывать произвольные консольные приложения.

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

Вы можете совершать произвольные системные вызовы, используя обратную нотацию, как показано ниже.

`<system command>`

Существует также множество отличных гемов Ruby, таких как Watir и RAutomation для автоматизации веб-сайтов и собственных графических интерфейсов.

Определение языка сценариев приведено в здесь .

3 голосов
/ 02 сентября 2011

Термин «язык сценариев» очень широк и может включать как интерпретируемые, так и скомпилированные языки.В частности, Ruby может компилироваться или интерпретироваться в зависимости от того, какую конкретную реализацию мы используем - например, JRuby компилируется в байт-код, тогда как CRuby (эталонная реализация Ruby) интерпретируется

...