Какие языки сценариев похожи на ECMA? - PullRequest
2 голосов
/ 19 мая 2009

Я ищу альтернативу ECMAScript для работы в качестве языка сценариев для пользовательской логики приложения. Есть вещи, которые мне нравятся в ECMA, особенно синтаксис для новой спецификации (например, AS3).

К сожалению, движок AS3 не является открытым исходным кодом, чтобы его можно было интегрировать в проект. Я хотел бы, чтобы язык сценариев был разработан для объектно-ориентированного использования.

В частности, есть ли язык, который имеет:

  • Статически типизированные переменные (необязательно)
  • Классы, в том числе публичные / частные участники
  • Наследование, включая интерфейсы
  • пакеты (опционально)
  • Чистый синтаксис
  • Должен иметь возможность взаимодействовать как внутренний язык сценариев для приложения (например, Javascript для браузера), не может быть внешним системным вызовом.

Вещи, которые я бы предпочел сделать без

  • Грязный объект ECMA prototype

Какие языки, о которых вы знаете, соответствуют этому профилю? Мне было трудно найти качественный язык сценариев, который был бы разработан для хорошего объектно-ориентированного проектирования.

Ответы [ 9 ]

5 голосов
/ 19 мая 2009

В Java лучшим вариантом ECMAScript (Javascript) является встраивание Rhino . Я не считаю, что наследование, основанное на прототипах, является убийцей сделок, так как с некоторой дисциплиной вы можете заставить его вести себя почти как наследование на основе классов.

Если вы хотите что-то, что очень тесно взаимодействует с Java, используйте Groovy . Если вам нужна совместимость с JVM, посмотрите также Jython (python на JVM), Jruby (Ruby на JVM) и Scala (функциональный язык JVM). Если вас не интересует совместимость с Java и JVM, посмотрите Ruby , Python и Erlang . Clojure - это диалект Lisp на JVM.

В дальнейшем TCL (Tool Command Language) позволяет встроить интерпретатор в код C / C ++, имеется много встраиваемых интерпретаторов Lisp и Scheme и т. Д.

3 голосов
/ 19 мая 2009

Если вам нужен язык сценариев, который работает как ECMAScript, почему бы не использовать ECMAScript? Существует множество реализаций с открытым исходным кодом, просто взгляните на список в Wikipedia .

2 голосов
/ 20 мая 2009

Haxe на Neko выглядит именно так, как вы хотите. Я не знаю, насколько встраиваемый nekovm, но это с открытым исходным кодом, так что вы можете возиться с ним. http://haxe.org

2 голосов
/ 19 мая 2009

Lua - все, что вы хотите и больше в ~ 100KB

См. эту страницу для сравнения между Lua и другими упомянутыми языками.

2 голосов
/ 19 мая 2009

Я бы порекомендовал либо Python, либо Ruby. Ни одна из них не похожа на ECMA, но я выучил их после JavaScript, и их было очень просто подобрать. Кроме того, они являются более мощными языками, что делает его лучшей альтернативой использованию движка JavaScript внутри вашего приложения (Rhino для Java).

Python

  • Принудительный чистый синтаксис (почти как на английском while is not False:)
  • Множественное наследование (без интерфейсов)
  • Интерпретатор может быть расширен с помощью C / C ++ (возможно, используется для ваших адаптеров, если необходимо)

рубин

  • Синтаксис должен быть близок к английскому (unless условный, until цикл)
  • Все является объектом
  • Поддерживает только одиночное наследование, но использует Mixins для добавления функциональности

Оба

  • Классы
  • Может быть встроено в другое приложение
  • Личные участники
  • Пакеты
1 голос
/ 19 мая 2009

Мы используем ECMAscript в качестве языка расширения для программного продукта, над которым я работаю, и он работает довольно хорошо. Будучи стандартным (и популярным) языком, приятно иметь возможность указывать нашим пользователям обильную готовую документацию по языку. Мы создали наш собственный компилятор ECMAscript, который переводится в байт-код для платформы, на которой мы работаем, но если бы у меня была возможность сделать это снова, я бы серьезно подумал о встраивании движка ECMAscript V8 от Google (на самом деле, я бы даже подумал о создании всего нашего приложение на нем).

1 голос
/ 19 мая 2009

Интерпретатор Ruby также может быть встроен в программы на Си, и некоторые считают его более объектно-ориентированным, чем Python.

0 голосов
/ 19 мая 2009

QtScript - это ECMAScript. Вы не упоминаете, для чего написана основная часть вашего приложения, но я полагаю, что это не Qt, или вы уже знали о QtScript.

0 голосов
/ 19 мая 2009

Я бы пошел с чем-то довольно массовым, чтобы упростить вещи. Прочитав ваши требования, я бы порекомендовал Python . На самом деле у него нет интерфейсов в стиле Java / C #, но они и не нужны. Кроме этого, он должен хорошо подходить.

...