[Python] Integrazione Pytho-altri linguaggi

enrico franchi enrico.franchi a gmail.com
Sab 21 Giu 2008 11:20:39 CEST


On Fri, Jun 20, 2008 at 1:08 PM, Masci <sradman a gmail.com> wrote:

> Se riesci ad incapsulare in apposite librerie le tue procedure C/C++
> poi si tratta di scrivere dei bindings in modo da poter richiamare le
> api delle librerie suddette da uno script python.

Subscribe.

> Per Matlab se hai la licenza esiste una versione che ti offre solo il
> runtime: puoi invocarne l'interprete da linea di comando passandogli
> lo script contentente il codice matlab come parametro: qui python pu
> aiutarti in molti modi...

Io userei un'altra strada. Per lo meno come prova.

http://www.mathworks.com/products/compiler/

Il compilatore ti permette di creare a partire dagli script matlab
funzioni chiamabili da C e C++. Il che vuole dire che puoi chiamarle
anche da Python (eventualmente con un thin wrapper).


Io tuttavia vorrei fare notare una cosa a monte: avere procedure
scritte in 5 linguaggi diversi che "pi o meno dialogano"  un incubo:
ogni volta che c' un baco, puoi dovere bucare svariati strati
software e andarlo a cercare nella libreria scritta in "x". Poi ci
sono tutti i bachi che si possono avere per le assunzioni che i
linguaggi fanno sui tipi che si passano avanti e indietro.

Ma in generare debuggare codice in questa maniera  piuttosto
complesso: immagina la differenza fra debuggare un programma Matlab
(non Mathlab) e debuggare il programma C da esso "generato". Io non mi
ci vorrei mettere, potendo evitare.

Una soluzione del genere pu essere fattibile per un transitorio
*brevissimo* con la consapevolezza che *deve* essere breve.

In particolare soluzioni miste C/Python e C++/Python sono
stra-standard. Potete usarle senza problemi, sono ben documentate
(almeno in 4 modi diversi potete farlo) e funziona decisamente bene.
Python e Java non saprei, non lo ho mai fatto. Usando Jhython penso
che i problemi siano pochi (ma poi entrano dalla finestra per
Python/C). Io mi metterei nell'ordine di idee di riscrivere il tutto.
BTW, a seconda di quello che , riscriverlo in Python e/o in C++
potrebbe essere relativamente facile.

Per Python e IDL ci sono cose come:
http://software.pseudogreen.org/i2py/

L'idea  quella che vi aiuta a riscrivere, ma dovete riscrivere.
Python e Matlab, come dicevo,  fattibile. Ma  sempre IMHO un
problema non da poco.

Valutate il costo di mantenere una soluzione cos complessa contro
quello di riscrivere il tutto in modo pi ortogonale. Ribadisco,
C/C++/Python potrebbe essere un bell'insieme.



-- 
-enrico


Maggiori informazioni sulla lista Python