Pergunta

Eu trabalho em um grupo que faz uma grande mistura de pesquisa e desenvolvimento de código envio da encomenda.

Metade do tempo eu desenvolver processos que correm em nosso sistema em tempo real (em algum lugar entre suave em tempo real e em tempo real duro, médio em tempo real?)

Os outros processos metade eu escrevo ou otimizar para nossos pesquisadores que não necessariamente se preocupam com o código de todo.

Atualmente estou trabalhando em um processo que eu tenho que garfo em dois ramos diferentes.

Existe uma versão de pesquisa para um grupo, e uma versão de produção que terá de ocasionalmente ser mesclado com o código de pesquisa para obter o mais recente e maior em produção.

Para testar estes processos você precisa configurar um ambiente de teste complicado semi que irá enviar os dados analisamos ao processo no momento correto (sistema em tempo real).

Eu estava pensando em como eu poderia fazer o:

  1. Idea
  2. Implementar
  3. Test
  4. GOTO # 1

Ciclo tão fácil, rápido e sem dor quanto possível para os meus colegas.

Uma idéia que eu tive foi a de incorporar uma linguagem de script dentro desses processos de execução longa. Assim como o processo de execução é que eles poderiam ajustar o algoritmo real e os seus parâmetros.

Fora do bastão Olhei para embutir:

Estes dois parece factível e pode realmente resolver totalmente o problema dado.

Qualquer outra brilhante idéia está lá fora?

A recompilação após uma mudança 1-2 linha, reimplantar no ambiente de teste e reiniciar apenas suga.

O sistema é bastante complicado e espero que eu expliquei metade decentemente.

Foi útil?

Solução

Se você pode mudar o suficiente do programa através de um script para ser útil, sem uma recompilação completa, talvez você deve pensar em quebrar o sistema em partes menores. Você poderia ter um "servidor" que o carregamento de dados alças etc e, em seguida, o código do cliente que faz o processamento real. Cada vez que o sistema carrega novos dados, pode verificar e ver se o código do cliente tem sido compilado-re e, em seguida, usá-lo, se for o caso.

Eu acho que haveria um par de vantagens aqui, a maior das quais seria que todo o sistema seria muito menos complexa. Agora você está trabalhando em um idioma em vez de dois. Há menos de uma chance de que as pessoas podem baralhar as coisas quando se deslocam de modo python ou lua para o modo de c ++ em suas cabeças. Ao incorporar algum outro idioma no sistema você também corre o risco de se tornar dependente dele. Se você usar python ou lua para tweek do programa, essas línguas, quer se tornar uma dependência quando se torna tempo para implantar, ou que você precisa para fazer as coisas para C ++. Se você optar por coisas de porta para C ++ há outra chance para erros a surgir durante o switch.

Outras dicas

Embedding Lua é muito mais fácil de incorporar Python.

  • Lua foi projetado desde o início para ser incorporado; embeddability do Python foi enxertado em após o fato.

  • Lua é cerca de 20x menor e mais simples do que Python.

Você não diz muito sobre o seu processo de construção, mas construção e teste pode ser simplificada significativamente usando uma versão realmente poderoso do make. Eu uso de Andrew Hume mk , mas você provavelmente seria ainda melhor investir o tempo para dominar Glenn Fowler de nmake , que pode adicionar dependências na mosca e eliminar a necessidade para uma etapa de configuração separada. Eu normalmente não recomendo nmake porque ele é um pouco complicado, mas é muito claro que Fowler e seu grupo têm construído em soluções nmake para muitos problemas escala e portabilidade. Para a sua situação particular, pode valer a pena o esforço para dominá-lo.

Não tenho certeza eu entendo o seu sistema, mas se a construção e implantação é muito complicado, talvez você poderia automatizar isso? Se implantação é completamente automático, teria que resolver o problema?

Eu não entendo como uma linguagem de script resolveria o problema? Se você mudar o seu algoritmo, você ainda precisa reiniciar o cálculo desde o início, não é?

É o tipo de sons como o que você precisa é CruiseControl ou algo semelhante; cada vez hyou tocar o código de linha de base, que reconstrói e testes reprises.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top