[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