Pytanie Czy byłoby możliwe zintegrowanie Pythona lub Perla z Ruby?


Czy możliwe byłoby zintegrowanie Pythona (i / lub Perla) z Ruby? Sprawdziłem http://www.goto.info.waseda.ac.jp/~fukusima/ruby/python/doc/ i http://code.google.com/p/ruby-perl/ , ale oba wydają się dość przestarzałe.

Czy ktoś wygenerował interfejs Ruby dla C API Pythona?

Edycja: Python może być zintegrowany z wieloma innymi językami zgodnie z http://wiki.python.org/moin/IntegratingPythonWithInneLanguages . Jednak ta lista nie zawiera Rubiego.


10
2018-03-10 01:20


pochodzenie


Co dokładnie chcesz robić? To brzmi jak problem, który może być lepiej podchodzący pod innym kątem (na przykład przeniesienie biblioteki, której brakuje w jednym języku). - bta


Odpowiedzi:


Integracja dynamicznych języków jest jednym z celów Papuga projekt. To wirtualna maszyna, która dynamicznie kompiluje język docelowy. Po skompilowaniu na tę samą maszynę wirtualną powinieneś być w stanie użyć formularza "obiekt" w dowolnym języku bez względu na jego źródło.

Problemem w tej chwili jest jednak ustabilizowanie maszyny wirtualnej i wykańczanie najczęściej wykonywanych kompilatorów. Jednak to był długi czas. :)


4
2018-03-16 14:05



Ciekawostki: papuga zaczęła jako żart prima aprilis ogłaszający połączenie Pythona i Perla. - Andrew Grimm


Moja szkoła (Georgia Tech), wraz z Bryn Mawr i Microsoft Research, realizują teraz projekt Piżama. Zasadniczo korzysta z DLR firmy Microsoft, aby swobodnie mieszać Python i Ruby. Nie próbowałem tego, ale brzmi całkiem fajnie.

Oto przykład ze strony internetowej. Wprowadzasz klasę w "trybie Python". Następnie zostanie skompilowany, a ty uruchomisz polecenie w "trybie Ruby".

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

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

Który produkuje "Python przywitał się z Ruby".


7
2018-03-10 02:06



To interesujące. Słyszałem, że DLR i Mono Microsoftu są zdolne do interoperacyjności między różnymi językami, ale nie widziałem projektu, który by to wykorzystał. Dziękuję Ci. - Yktula


Możesz napisać rozszerzenia dla Rubiego w C.

Tak więc, jeśli Python ma API C, możesz napisać rozszerzenie C dla Rubiego, które używa tego API.

Nie wiem nic o interfejsie API Pythona ani o tym, jak duży fragment chciałbyś zintegrować, ale jeśli nie jest zbyt duży, może to (prawdopodobnie) dać ci sposób na uruchomienie kodu Pythona z Ruby.


2
2018-03-10 02:16



Aby użyć rozszerzenia C dla Rubiego, musisz użyć projektu Ruby FFI - github.com/ffi/ffi - Sasha Koss
ffi nie jest wymogiem, ale umożliwia integrację z innymi implementacjami ruby ​​niemonitorowanych przez MRI. - Mark Carey
Jest o wiele prostszy w użyciu niż Ruby / DL. Chcę spróbować zrobić to później za pomocą C API Pythona. Dziękuję Ci. - Yktula


Do projektu badawczego chciałem użyć bajecznego matplotlib dostępnego dla Pythona. Znalazłem także bibliotekę, o której wspomniałeś. Jednak nie wygląda to na coś popularnego i dobrze przetestowanego. Postanowiłem więc napisać skrypt generujący wykresy za pomocą czystego Pythona i wywołać go z Rubiego przez popen. To zadziałało bardzo dobrze dla mnie.


2
2018-03-10 01:59



Szukałem czegoś takiego jak projekt Ruby / Python Masaki Fukushimy, ale to dobry pomysł. Dziękuję Ci. - Yktula


Może to możliwe, ale nie bardzo praktyczne. Znacznie łatwiej byłoby przesłać dowolne moduły z jednego do drugiego, niż osadzić jednego z tłumaczy w drugim.

Jeśli koniecznie musisz używać obu języków w projekcie, najlepszym rozwiązaniem będzie prawdopodobnie połączenie Jython i Jruby'ego lub IronPython i IronRuby. Nie jestem pewien, czy mógłbyś zmusić ich do rozmowy ze sobą, ale przynajmniej mógłbyś gościć ich na tej samej wirtualnej maszynie.


2
2018-03-10 01:54





Inną strategią, stosowaną przez Facebooka, jest udostępnianie interfejsów API za pośrednictwem Oszczędność. Zdefiniujesz lekkie interfejsy API usług, a wywołań RPC są między procesami.


1
2018-03-20 19:36