Qual è una buona metrica per guidare un passaggio da un linguaggio di prototipazione a un linguaggio di produzione? [duplicare]

1

Con "linguaggio di prototipazione", intendo quello che è stato scelto in virtù della relativa facilità di realizzare rapidamente il tipo di modifiche progettuali comuni alla prototipazione in un particolare contesto. (come la visualizzazione dei dati, per esempio)

Per "linguaggio di produzione", intendo uno che, con un design più solido, è suscettibile di produrre un prodotto più soddisfacente, ottimizzato e mantenibile. Si potrebbe, ad esempio, prototipare una visualizzazione dei dati in MatLAB o IDL, ma passare a C ++.

Un decisore davvero semplicistico potrebbe essere il giudizio soggettivo che "Ho finito la prototipazione ora", ma la prototipazione spesso si "assottiglia" piuttosto che terminare bruscamente, e spesso ci si rende conto che si dovrebbe probabilmente scambiare con il linguaggio di produzione di scelta ad un certo punto nel passato. Forse una buona metrica comporta la cattura di alcune informazioni di "velocità" (stile agile) e la ricerca di un punto di flesso quando la velocità cambia?

FYI, " Perché dinamico ... " e " ... scala del progetto e rigore ... ", mentre correlate, non sono duplicate dalla domanda corrente.

    
posta David 10.07.2015 - 04:26
fonte

1 risposta

4

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.

    
risposta data 10.07.2015 - 05:02
fonte