Dato che hai citato Matlab (e IDL) rispetto a C ++, risolvo la mia risposta a tale scenario.
Un breve riassunto degli indicatori quando si passa da una prototipazione a un linguaggio di produzione è necessario:
-
Quando si programmano strutture dati, algoritmi o architetture di elaborazione distribuite non ben supportate da
il linguaggio di prototipazione, o meglio supportato dal linguaggio di produzione, diventa necessario.
-
Quando le prestazioni del linguaggio di programmazione diventano inferiori
del linguaggio di produzione a causa di dati o considerazioni algoritmiche.
-
Quando il supporto del linguaggio di prototipazione per il riutilizzo del codice,
la modularizzazione e la creazione di librerie è inferiore a quella
linguaggio di produzione e questo causa la velocità di sviluppo e la collaborazione del team a soffrire.
Parlerò un po 'di più su alcuni di questi aspetti.
Un chiaro indicatore che è tempo di migrare è spesso scala. In questo modo, quando la complessità del problema o la complessità del processo di sviluppo del software diventano abbastanza grandi in scala che qualcosa come Matlab non può gestirlo bene, diventa il momento di passare a un linguaggio più orientato alla produzione.
La scala della complessità del problema può includere quando la quantità di dati da elaborare arriva al punto in cui il calcolo con una lingua interpretata non è sufficiente per un throughput adeguato.
La scelta tra Matlab e un linguaggio di produzione è diventata meno chiara con le recenti versioni di Matlab. Matlab ora offre supporto per multicore, GPU e calcolo distribuito. È discutibile quanto sia adeguato il supporto, sia nello sviluppo espressivo che nelle prestazioni, rispetto alle implementazioni native. Ma rende il punto di inflessione meno netto rispetto a quando questo supporto non era disponibile.
Quindi è necessario fare un'attenta valutazione per stabilire se lo sviluppo del codice in un linguaggio di produzione offra vantaggi netti in termini di prestazioni, o idoneità a un'architettura di calcolo parallela o distribuita, rispetto al linguaggio di prototipazione. Un linguaggio di produzione, specialmente uno che può essere compilato in modo nativo, in modo indiscutibile può trarre maggiore vantaggio dalle ottimizzazioni specifiche del compilatore e del processore persino di un linguaggio interpretato compilato con JIT.
Un altro aspetto della scala a cui hai alluso nella tua domanda è nel processo di sviluppo del software. Un linguaggio di produzione offre notevoli vantaggi rispetto a Matlab nella capacità di sviluppare software su larga scala. Il supporto di Matlab per la programmazione orientata agli oggetti, l'elaborazione delle stringhe, le strutture di dati diverse dalle matrici, è generalmente considerato più debole di quello trovato nei linguaggi di produzione o persino in Python.
Ma è nella capacità di partizionare e riutilizzare il codice sviluppando librerie e moduli in cui un linguaggio di prototipazione come Matlab non è all'altezza dei linguaggi di produzione. Diventa il momento di cambiare quando la base di codice diventa abbastanza grande da causare carenze in termini di tempi di sviluppo e collaborazione del team.