2010-02-02 2 views
6

Я только что узнал, что Erlang может удаленно загружать код и модули во все экземпляры кластера с помощью команды «nl». Могут ли другие языки сделать это?Есть ли на других языках, кроме Erlang, возможность отправлять код в исполняемые экземпляры?

+1

Команда 'nl' - это просто инструмент CLI, основанный на основной силе загрузчика кода - это не та магия. :) – Dustin

ответ

3

Технически любой из лепестковых диалектов мог это сделать. Поскольку «код - это данные» в lisp, передавая некоторый код на другое поле, и «eval'-ing» выполнит эту работу. SLIME делает это в некоторой степени с помощью удаленной замены, используя сокеты.

2

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

1

Отсутствует, что я знаю, но его должно быть возможно реализовать в динамических языках, таких как Python, Perl или Lisp.

3

Вы можете написать ClassLoader в java, аналогичном кодогенератору в erlang. Java ClassLoaders обладают большой изоляцией, поэтому это может быть немного сложнее (но вы могли бы с этим справиться, если бы использовали его в своих интересах, а не думали об этом как о враге).

ClassLoaders легко писать, но java не поставляется с той, которая делает то же самое, что делает erlang. Java также не имеет инструментов кластеризации, которые erlang делает, поэтому это не особенно удивительно.