我在一个研究开发和完整运输代码的大型团队中工作。
我开发在我们的实时系统上运行的流程的一半时间(介于软实时和硬实时,中等实时?)
另一半我为研究人员编写或优化过程,他们根本不关心代码。
目前我正在研究一个我必须分成两个不同分支的过程。
有一个研究版本,一个生产版本需要偶尔与研究代码合并,以获得最新和最好的生产。
要测试这些过程,您需要设置一个半复杂的测试环境,将我们分析的数据在正确的时间(实时系统)发送到流程。
我在考虑如何制作:
答案 0 :(得分:2)
如果您可以通过脚本更改足够的程序以实现有用,而无需完全重新编译,那么您应该考虑将系统分解为更小的部分。你可以有一个处理数据加载等的“服务器”,然后是执行实际处理的客户端代码。每次系统加载新数据时,它都可以检查并查看客户端代码是否已经重新编译,然后在这种情况下使用它。
我认为这里会有一些优点,其中最大的优点是整个系统的复杂程度要低得多。现在你用一种语言而不是两种语言工作。当人们从头脑中从python或lua模式转换到c ++模式时,人们可能会把事情搞得一团糟。通过在系统中嵌入其他语言,您也有可能变得依赖它。如果你使用python或lua来调试程序,那么这些语言要么在部署时成为依赖项,要么需要将内容反馈给C ++。如果你选择将东西移植到C ++,那么在切换过程中会出现错误的另一个机会。
答案 1 :(得分:1)
嵌入Lua比嵌入Python容易得多。
Lua从一开始就被设计为嵌入式; Python的嵌入性是在事后嫁接的。
Lua比Python小20倍,简单。
您对构建过程没有太多说明,但使用非常强大的make版本可以大大简化构建和测试。我使用Andrew Hume的mk,但你可能会更好地投入时间来掌握Glenn Fowler的nmake,它可以动态添加依赖项,并且无需单独的配置步骤。我通常不推荐使用nmake,因为它有点复杂,但很明显Fowler和他的团队已经为批量扩展和可移植性问题构建了nmake解决方案。对于您的特殊情况,掌握它可能是值得的。
答案 2 :(得分:0)
不确定我是否了解您的系统,但如果构建和部署过于复杂,您可以将其自动化吗?如果部署是完全自动的,那会解决问题吗?
我不明白脚本语言如何解决问题?如果更改算法,仍然需要从头开始重新计算,不是吗?
答案 3 :(得分:0)
听起来你需要的是CruiseControl或类似的东西;每当hyou触摸基线代码时,它都会重建并重新运行测试。