Sono in una situazione in cui ho già un programma C ++ funzionante e ad alte prestazioni con GTK e OpenGL che rende i dati come un grafico in tempo reale. I dati vengono salvati come report in un database che può essere consultato in un secondo momento da un browser. Ora ho bisogno di visualizzare quegli stessi grafici dai rapporti basati sul web (questo non era nei requisiti originali).
Ho provato a generare i grafici da PHP, ma disegnare il tutto con GD richiede più di 20 secondi. Sono in procinto di riscrivere questo in Javascript utilizzando canvas, che sembra essere a posto, anche se ora devo trasferire tutti i dati al browser e analizzarlo, il che è ancora problematico.
Ma il vero problema per me è che sto scrivendo lo stesso programma due volte: in C ++ con OpenGL e in Javascript con canvas.
Sto cercando un consiglio generale su come riutilizzare il codice tra piattaforme diverse che supportano linguaggi diversi, ad esempio tra un ambiente desktop e una pagina web. Ci sono strumenti che possono aiutare? C'è un modo per evitare di mantenere due codebase diversi che fanno la stessa cosa?
Le mie idee finora, nessuna delle quali è particolarmente interessante:
-
Riusa il codice . Trova un modo per in realtà condividere il codice, come usare un programma C ++ come CGI. Questo non funzionerà se la lingua non è supportata dalla piattaforma (come in un browser).
-
Riutilizza l'output : scrivi il programma una volta, genera l'output (ad esempio un'immagine) e rendi gli altri programmi "visualizzatori". Questo non funzionerà se l'output è troppo grande per passare.
-
Traduci il codice : utilizza alcuni strumenti automatici per tradurre da una lingua (o una meta-lingua) a un'altra. Se esiste uno strumento del genere, potrei utilizzare le raccomandazioni.
-
Riusa il bytecode : utilizza un linguaggio che compila in bytecode che può essere eseguito su varie piattaforme. A parte le applet Java (che la maggior parte delle persone ha disabilitato al giorno d'oggi), non conosco nient'altro che funzioni nei browser.
-
Sviluppa il mio linguaggio universale : nessuno ha tempo per farlo.