Можно ли было интегрировать Python или Perl с Ruby? - PullRequest
10 голосов
/ 10 марта 2010

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

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

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

Ответы [ 6 ]

7 голосов
/ 10 марта 2010

Моя школа (штат Джорджия), вместе с Брин Маур и Microsoft Research, сейчас реализуют проект под названием Пижама . По сути, он использует 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".

4 голосов
/ 16 марта 2010

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

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

2 голосов
/ 10 марта 2010

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

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

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

2 голосов
/ 10 марта 2010

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

2 голосов
/ 10 марта 2010

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

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

1 голос
/ 20 марта 2010

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

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