Domanda

Io lavoro in un gruppo che fa un grande mix di sviluppo della ricerca e il codice di spedizione completo.

La metà del tempo ho sviluppato processi che vengono eseguiti sul nostro sistema in tempo reale (da qualche parte tra soft real-time e hard real-time, media in tempo reale?)

L'altra metà ho scrivere o ottimizzare i processi per i nostri ricercatori che non necessariamente si preoccupano il codice a tutti.

Attualmente sto lavorando su un processo che devo forchetta in due rami differenti.

C'è una versione di ricerca per un gruppo, e una versione di produzione che dovrà essere di tanto in tanto si è fusa con il codice di ricerca per ottenere l'ultima e più grande in produzione.

Per testare questi processi è necessario configurare un ambiente di test complicato semi che invierà i dati che analizziamo il processo al momento giusto (sistema in tempo reale).

Stavo pensando a come avrei potuto fare la:

  1. Idea
  2. Implementazione
  3. Prova
  4. GOTO # 1

Ciclo più semplice, veloce e indolore possibile per i miei colleghi.

Un'idea che avevo era quella di incorporare un linguaggio di scripting all'interno di questi processi in esecuzione lungo. Così come il processo di esecuzione di essi potrebbero modificare l'algoritmo attuale e suoi parametri.

Al largo della bat ho guardato embedding:

Queste entrambi sembrano fattibile e potrebbe effettivamente risolvere completamente il problema dato.

Qualsiasi altra idea brillante è là fuori?

La riconversione dopo un cambio di linea di 1-2, ridistribuzione per l'ambiente di test e riavviando semplicemente schifo.

Il sistema è abbastanza complicata e spero spiegato metà decentemente.

È stato utile?

Soluzione

Se si può cambiare abbastanza del programma attraverso uno script per essere utile, senza una ricompilazione completa, forse si dovrebbe pensare di rompere il sistema in parti più piccole. Si potrebbe avere un "server" che gestisce il caricamento dei dati, ecc e poi il codice client che fa il trattamento effettivo. Ogni volta che il sistema carica nuovi dati, potrebbe controllare e vedere se il codice del client è stato ri-compilato e quindi utilizzarlo, se questo è il caso.

Credo che ci sarebbe stato un paio di vantaggi qui, la più grande delle quali sarebbe che l'intero sistema sarebbe molto meno complessa. Ora si sta lavorando in una lingua invece di due. C'è meno di una probabilità che le persone possono complicare le cose quando si passa da modalità di pitone o lua alla modalità C ++ nelle loro teste. Incorporando un'altra lingua nel sistema si corre anche il rischio di diventare dipendente da esso. Se si utilizza pitone o lua per tweek il programma, sia quelle lingue diventano una dipendenza quando diventa il momento di distribuire, o è necessario eseguire le cose per C ++. Se si sceglie di cose porta a C ++ ce n'è un'altra possibilità per i bug a sorgere durante il passaggio.

Altri suggerimenti

Embedding Lua è molto più facile di incorporare Python.

  • Lua è stato progettato fin dall'inizio per essere incorporato; embeddability di Python è stato innestato sulla dopo il fatto.

  • Lua è di circa 20x più piccolo e più semplice di Python.

Non dire molto sul processo di compilazione, ma costruzione e collaudo può essere semplificato in modo significativo utilizzando una versione davvero potente di marca. Io uso mk , ma si sarebbe probabilmente ancora meglio investire il tempo per padroneggiare Glenn Fowler nmake , che può aggiungere le dipendenze al volo ed eliminare la necessità una fase di configurazione separato. Non consiglio normalmente nmake perché è un po 'complicato, ma è chiaro che Fowler e il suo gruppo hanno costruito in soluzioni NMAKE per un sacco di ridimensionamento e problemi di portabilità. Per la vostra situazione particolare, può valere la pena lo sforzo di dominarlo.

Non sono sicuro ho capito il sistema, ma se la generazione e la distribuzione è troppo complicato, forse si potrebbe automatizzare? Se la distribuzione è completamente automatico, sarebbe in grado di risolvere il problema?

Non capisco come un linguaggio di scripting risolverebbe il problema? Se si cambia l'algoritmo, è ancora necessario per riavviare il calcolo dall'inizio, non è vero?

E 'sorta di suona come quello che vi serve è CruiseControl o qualcosa di simile; ogni volta hyou toccare il codice di base, ricostruisce e prove di repliche.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top