So che molte applicazioni su larga scala come i videogiochi sono create utilizzando più lingue. Ad esempio, è probabile che i motori di gioco/fisica siano scritti in C++ mentre le attività di gioco, le GUI sono scritte in qualcosa come Python o Lua.Funzionamento dell'interoperabilità
Capisco perché questa divisione dei ruoli è stata eseguita; utilizzare linguaggi di livello inferiore per attività che richiedono estrema ottimizzazione, ottimizzazione, efficienza e velocità, mentre si utilizzano linguaggi di livello superiore per accelerare i tempi di produzione, ridurre i bug ect.
Recentemente, ho deciso di intraprendere un progetto personale più ampio e vorrei dividere parti del progetto come sopra. A questo punto, sono davvero confuso su come funziona questa interoperabilità tra i linguaggi (specialmente quelli compilati e interpretati).
Sono abbastanza familiare con i dettagli di passare dal test del codice ANSCII al caricamento di un eseguibile, quando scritto in qualcosa come C/C++. Sono molto curioso di sapere come funziona qualcosa come un videogioco, costruito in molte lingue diverse. Questa è una domanda ampia/ampia, ma nello specifico sono interessato a:
- Come funziona la logica a livello di codice? Cioè come posso chiamare il codice Python da un programma C++? Soprattutto perché non supportano gli stessi tipi built-in?
- Che aspetto ha l'immagine del programma? Da quello che posso dire, un videogioco è in esecuzione in un unico processo, quindi che aspetto ha l'immagine runtime quando si esegue un programma C/C++ che chiama una funzione Python?
- Se si chiama codice da una lingua interpretata da un programma compilato, qual è la sequenza di eventi che si verificano? Se io sono nel mio eseguibile compilato, e per qualche ragione ho una chiamata a un linguaggio interpretato all'interno di un ciclo, devo aspettare che l'interprete venga ripetuto?
In realtà sto trovando un momento difficile trovare informazioni su ciò che accade a livello di macchina, quindi qualsiasi aiuto sarebbe apprezzato. Sebbene io sia curioso in generale sull'interoperabilità del software, sono particolarmente interessato all'interazione con C++ e Python.
Grazie mille per qualsiasi intuizione, anche se mi sta solo indicando dove posso trovare maggiori informazioni.
http://en.wikipedia.org/wiki/Foreign_function_interface probabilmente non sapevano termine giusto per cercare – aryjczyk
@aryjczyk Grazie per il link. Sì, non sapevo di quel termine. Questo è ottimo per aiutare a capire come è fatto. Sono ancora confuso su come qualcosa di simile funzioni fisicamente, specialmente negli ambienti GC vs non GC. Non ho idea di come sarebbe l'immagine del processo. Comunque, grazie, e continuerò a cercare! – gone