Было бы возможно интегрировать Python или Perl с Ruby?

Было бы возможно интегрировать Python (и/или Perl) и Ruby? Я посмотрел на http://www.goto.info.waseda.ac.jp/~fukusima/ruby/python/doc/ и http://code.google.com/p/ruby-perl/, но они оба кажутся довольно устаревшими.

Кто-то генерировал интерфейс Ruby для API Python C?

Править: Python может быть интегрирован со многими другими языками согласно http://wiki.python.org/moin/IntegratingPythonWithOtherLanguages. Однако тот список не включает Ruby.

10
задан Yktula 20 March 2010 в 19:26
поделиться

6 ответов

Интеграция динамических языков - одна из целей проекта Parrot . Это виртуальная машина, на которую нацелены компиляторы динамического языка. После компиляции на ту же виртуальную машину вы должны иметь возможность использовать форму «объекта» на любом из языков, независимо от источника объекта.

Однако на данный момент проблема заключается в стабилизации виртуальной машины и доработке компиляторов, которые в основном выполняются. Однако так было долгое время. :)

4
ответ дан 3 December 2019 в 20:41
поделиться

Возможно, но не очень практично. Было бы значительно проще переносить любые необходимые модули с одного на другой, чем встраивать один из интерпретаторов в другой.

Если вам абсолютно необходимо использовать оба языка в проекте, лучшим вариантом, вероятно, будет комбинация Jython и Jruby или IronPython и IronRuby. Я не уверен, что вы могли бы заставить их разговаривать друг с другом, но, по крайней мере, вы могли бы разместить их на одной виртуальной машине.

2
ответ дан 3 December 2019 в 20:41
поделиться

Для исследовательского проекта я хотел использовать великолепную библиотеку matplotlib, доступную для Python. Я также нашел ту библиотеку, о которой вы говорили. Однако это не похоже на что-то популярное и хорошо протестированное. Поэтому я решил написать скрипт, который генерирует графики на чистом Python и вызывал его из Ruby через popen. Для меня это очень хорошо сработало.

2
ответ дан 3 December 2019 в 20:41
поделиться

Вы можете писать расширения для Ruby на C.

Итак, если у Python есть C API, вы можете написать расширение C для Ruby, которое использует это API.

Я ничего не знаю об API Python или о том, какой размер части вы хотите интегрировать, но если он не слишком большой, это может (возможно) дать вам возможность запускать код Python из Ruby.

2
ответ дан 3 December 2019 в 20:41
поделиться

Моя школа (Технологический институт Джорджии) вместе с Брин Маур и Microsoft Research сейчас занимается проектом под названием Pajama . По сути, он использует Microsoft DLR, чтобы вы могли свободно смешивать Python и Ruby. Я не пробовал, но звучит довольно круто.

Вот пример с сайта. Вы входите в класс в «режиме Python». Затем он компилируется, и вы запускаете команду в «режиме Ruby».

class PythonClass:
     def hello(self, value):
         print "Python says hello to", value

pc = python_class().new
pc.hello "Ruby"

Результат: «Python здоровается с Ruby».

7
ответ дан 3 December 2019 в 20:41
поделиться

Другая стратегия, используемая Facebook, заключается в предоставлении доступа к API через Thrift . Вы определяете облегченные сервисные API, и RPC являются межпроцессными.

1
ответ дан 3 December 2019 в 20:41
поделиться