Ответ 1
Вещи не только черно-белые. По крайней мере, они также большие и маленькие, громкие и тихие, синие и оранжевые, серые и серые, длинные и короткие, правильные и неправильные и т.д.
Интерпретировать/скомпилировать - это всего лишь один из способов классифицировать языки и полностью независим от (среди множества других вещей), называете ли вы тот же язык "языком сценариев" или нет. В довершение всего, это также разбитая классификация:
- Интерпретировать/скомпилировать зависит от языковой реализации, а не от языка (это не просто теория, на самом деле существует довольно много языков, для которых существуют как переводчики, так и компиляторы)
- Существуют языковые реализации (многие из них, включая большинство реализаций Ruby), которые являются компиляторами, но "только" компилируются для байт-кода и интерпретируют этот байт-код.
- Существуют также реализации, которые переключаются между интерпретацией и компиляцией на собственный код (JIT-компиляторы).
Вы видите, что реальность - сложный зверь;) Ruby, как упоминалось выше, часто компилируется. Затем результат этой компиляции интерпретируется, по крайней мере, в некоторых случаях - существуют также реализации, которые JIT-компиляция (Rubinius и IIRC JRuby скомпилируется в Java-байт-код через некоторое время). Эталонная реализация давно была компилятором, и IIRC все еще есть. Так интерпретируется или компилируется Ruby? Ни один из термина не имеет смысла, если вы его не определите;)
Но вернемся к вопросу: "Язык сценариев" также не является свойством языка, это зависит от того, как используется язык, а именно: используется ли язык для задач сценариев. Если вы ищете определение, страница Wikipedia на языке сценариев" может помочь (просто не позволяйте им путать вас с примечаниями о деталях реализации, таких как что скрипты обычно интерпретируются). Есть действительно несколько программ, которые используют Ruby для задач сценариев, и есть, несомненно, множество свободно работающих программ Ruby, которые, вероятно, будут квалифицироваться как скрипты (веб-скребок, системное администрирование и т.д.).
Итак да, я думаю, можно назвать Ruby скриптовым языком. Конечно, это не означает, что рубин на веб-приложении rails - это всего лишь script.