Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Java как Скриптовый язык


Автор: ShurikA 23.4.2007, 14:56
Для начала задам простой вопрос:
На сколько сложно создать скриптовый язык на Java? И чего в результате возможно достичь?

Понятно что создавая свой скриптовый язык (конечно тщательно его описать) возможно давать другим возможность писать код для своей же программы.
Мне не понятна ещё одна вещь: каким образом тот самый "другой" программист прогоняет цвой код не компилируя?
или я просто ничего в этом не понимаю...  smile 

короче, давайте поговорим о создании скриптовых языков на Джаве...

Автор: nornad 23.4.2007, 19:36
Ответ на простой вопрос - зависит от того, как ты его себе представляешь. ;)
Я как-то делал скриптовый язык на основе XPath. Занятная штука. smile
Есть свои ограничения, но и плюсов масса.

Если же писать свой движок с нуля, то сложнее, конечно. Но вполне реально.

Цитата(ShurikA @  23.4.2007,  17:56 Найти цитируемый пост)
Мне не понятна ещё одна вещь: каким образом тот самый "другой" программист прогоняет цвой код не компилируя?

Легко. smile
Думаешь проще написать компилятор? ;)
Не-а. Интерпретатор куда проще. Определяешь основные конструкции скрипта. Идёшь по шагам и выполняешь то, что требует скрипт. Вот и вся недолга.
Чтобы было проще понять, попробуй представить себе, как бы ты реализовал обработку такого скрипта:
Код

print console "Hello world!"
a = b + 2
print console "a = " a

Автор: nerezus 23.4.2007, 21:03
Цитата

На сколько сложно создать скриптовый язык на Java?
 Уровня бейсика - совсем не сложно.

Цитата

каким образом тот самый "другой" программист прогоняет цвой код не компилируя?
 Кроме компиляторов бывают еще и интерпретаторы...

Автор: ShurikA 24.4.2007, 16:09
Цитата(nornad @  23.4.2007,  18:36 Найти цитируемый пост)
Интерпретатор куда проще.

Цитата(nerezus @  23.4.2007,  20:03 Найти цитируемый пост)
Кроме компиляторов бывают еще и интерпретаторы... 

если я правильно понимаю, интерпретатор парсит текст и его вуполняет, тоже не так уж просто...

Цитата(nornad @  23.4.2007,  18:36 Найти цитируемый пост)
Если же писать свой движок с нуля, то сложнее, конечно.

Какие ещё варианты есть, если не базироваться на XML?

Автор: nornad 24.4.2007, 20:14
Цитата(ShurikA @  24.4.2007,  19:09 Найти цитируемый пост)
если я правильно понимаю, интерпретатор парсит текст и его вуполняет

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

Цитата(ShurikA @  24.4.2007,  19:09 Найти цитируемый пост)
Какие ещё варианты есть, если не базироваться на XML? 

Никто и не говорил, что обязательно надо на чём-то базироваться, тем более на хмле. Это я вспоминал довольно интересный период в своей практике.
Делать можно вообще с нуля. Для этого надо для начала описать свой скриптовый язык и его основные конструкции. Затем написать свой парсер, который будет разбирать код на атомы. А там уже и интерпретатор не за горами - из атомов выбирать необходимые довольно просто.

В плане общего знакомства рекомендую почитать Шилдта. Не скажу, что мне у него всё нравится, но в общем познакомиться с областью для начала хватит.
Я читал "С++. Архив программ", но, насколько знаю, он этот свой минибейсик часто в книгах приводит.

Автор: ShurikA 24.4.2007, 21:39
Цитата(nornad @  24.4.2007,  19:14 Найти цитируемый пост)
Делать можно вообще с нуля

На самом делел это не есть моя цель, а цель как раз: просто и быстро добиться имплементирования скриптового языка. По этому и думал воспользоваться уже готовой базой, только вот не знаю какой.
Отыскал я следующие вещи:
http://java-source.net/open-source/scripting-languages.
Какой из этих максимально гибок, так что бы можно было его под себя подкрутить?

Автор: nornad 24.4.2007, 23:16
Не работал ни с одним из них, так что ничего не скажу. Кроме того, что всякие Ruby, Tcl и иже с ними дадут синтаксис, а выполнять. вроде бы, будет уже жаба.
В любом случае, использовать один из готовых будет быстрее и менее накладно, чем делать своё.

Автор: RebornCrusader 27.4.2007, 06:33
Как на счёт BeanShell или Janino? Последний работает почти с настоящей Javой

Автор: nerezus 27.4.2007, 07:28
Jython

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)