Come utilizzare più linguaggi di programmazione nello stesso programma? [chiuso]

4

Una domanda così semplice, ma non ho trovato una risposta ragionevole a questo.

Attualmente programma in Python, un linguaggio interpretato. Ho sempre sentito parlare di persone che usano più lingue nello stesso programma? Poi li sento usando linguaggi di scripting; Qualcuno qui può, per favore, in inglese, spiegarmi la differenza tra ciò che conosco come linguaggio di programmazione e script, e come sulla Terra le persone usano più lingue insieme. Questo non ha alcun senso.

Come può qualcuno usare Javascript, PHP e ASP insieme. Oppure programmare un gioco in C / C ++ e usare python come script? Non ha senso per me, sono lingue diverse per una ragione, presumo, quindi come giocano un ruolo l'uno con l'altro?

    
posta user3712563 23.12.2014 - 03:29
fonte

3 risposte

5

In molti casi, quando vedi più lingue usate insieme, scoprirai che una è una lingua compilata e l'altra è un linguaggio di scripting.

Il linguaggio compilato è tipicamente C / C ++, ma può essere molti altri linguaggi (Haskell, Erlang, Java, ecc.). Il linguaggio compilato fornisce l'applicazione di base. La base fornisce un'interfaccia al sistema operativo sottostante e la base per il lavoro che deve essere svolto dall'applicazione. L'applicazione fornirà spesso funzionalità di livello inferiore che semplificano lo sviluppo utilizzando l'interfaccia di scripting.

Il linguaggio di scripting viene spesso utilizzato per fornire personalizzazioni per l'applicazione. La personalizzazione può essere parte dell'applicazione fornita dal venditore per la propria convenienza o l'interfaccia di scripting può fornire la personalizzazione per l'utente finale.

Molte volte, l'interfaccia di script fornisce quasi un linguaggio specifico di dominio fornendo funzioni utili e un'interfaccia di alto livello specifica per l'applicazione, rendendola più facilmente personalizzabile.

Un paio di esempi ben noti. Emacs è scritto in C e personalizzato con Emacs Lisp. TextMate è un'applicazione compilata personalizzata con Ruby. Atom è un nuovo editor di testo scritto in JavaScript per essere eseguito su Node. L'atomo è più indiretto. L'applicazione è (quasi?) Tutto JavaScript mentre Node.js utilizza V8 che è scritto in C ++. World of Warcraft ha un'interfaccia di scripting che usa Lua.

Come esempio personale, ho lavorato su un programma di installazione brand-in cui il codice di base era Objective-C / C ++ per accedere agli elementi dell'interfaccia utente su MacOS con personalizzazione utilizzando AppleScript. L'interfaccia AppleScript è stata utilizzata solo da noi per contrassegnare l'applicazione per ciascun cliente.

Come altri hanno già detto, usa la lingua giusta per l'applicazione giusta.

    
risposta data 23.12.2014 - 05:15
fonte
2

Bill Door ha fornito alcuni buoni esempi in cui il "programma principale" è scritto in C o C ++ e un linguaggio di scripting è incluso per la personalizzazione, ma c'è anche uno scenario comune, ma differente, in cui il "programma principale", scritto in alcuni "linguaggi di scripting" (qualunque cosa le persone abbiano in mente quando usano quella parola) è esteso da moduli scritti in C o C ++. Ad esempio, in Python, un tipico caso d'uso sarebbe implementare un'estensione o un modulo in C , a causa del prestazioni migliori si può in genere ottenere in questo modo. Ecco perché le parti principali dei moduli Python come NumPy o SciPy sono per lo più scritte in C, o PyGame o Python Imaging Library (PIL).

    
risposta data 23.12.2014 - 22:27
fonte
1

L'interoperabilità viene in genere ottenuta trasferendo i dati

In generale, puoi pensare che ogni lingua sia il proprio programma separato. Questo non è sempre il caso però ...

Alcuni esempi:

  1. Invio di query SQL a un database
  2. utilizzando json_encode () in php per codificare una struttura dati nella sua rappresentazione di stringa, che poi può essere decodificata dallo script java.
  3. Esposizione di una API che può essere chiamata da un interprete incorporato. Questa api può essere esposta da indirizzi di memoria (si pensi che lua sia collegata con c ++). Un altro esempio è Jython, python che può essere eseguito sulla JVM.

Alcuni motivi per cui vuoi farlo:

  1. Alcuni problemi sono più facili da risolvere in altre lingue
  2. Puoi estendere un programma binario senza doverlo ricompilare
  3. Unire le soluzioni esistenti in modo da non dover scrivere cose da zero.
risposta data 23.12.2014 - 23:41
fonte

Leggi altre domande sui tag