题
我所在的团队负责大量的研究开发和完整的运输代码。
我有一半时间开发在实时系统上运行的流程(介于软实时和硬实时之间,中等实时?)
另一半我为我们的研究人员编写或优化流程,他们根本不需要关心代码。
目前我正在开发一个流程,我必须将其分成两个不同的分支。
有一个针对一组的研究版本,以及一个生产版本,偶尔需要与研究代码合并才能将最新最好的代码投入生产。
要测试这些流程,您需要设置一个半复杂的测试环境,它将在正确的时间(实时系统)将我们分析的数据发送到流程。
我正在考虑如何制作:
- 主意
- 实施
- 测试
- 转到 #1
让我的同事们尽可能轻松、快速、无痛地骑自行车。
我的一个想法是在这些长时间运行的进程中嵌入一种脚本语言。因此,当流程运行时,他们可以调整实际的算法及其参数。
我立即查看了嵌入:
这些看起来都是可行的,并且实际上可能完全解决给定的问题。
还有其他好主意吗?
更改 1-2 行后重新编译、重新部署到测试环境并重新启动简直太糟糕了。
这个系统相当复杂,希望我能很好地解释它。
解决方案
如果您可以通过脚本更改足够多的程序以使其有用,而无需完全重新编译,也许您应该考虑将系统分成更小的部分。您可以有一个处理数据加载等的“服务器”,然后是执行实际处理的客户端代码。每次系统加载新数据时,它都会检查客户端代码是否已重新编译,如果是则使用它。
我认为这里有几个优点,其中最大的优点是整个系统的复杂性要低得多。现在您使用一种语言而不是两种语言工作。当人们从 python 或 lua 模式转向 C++ 模式时,把事情搞砸的可能性较小。通过在系统中嵌入一些其他语言,您还面临着依赖它的风险。如果您使用 python 或 lua 来调整程序,那么这些语言要么在部署时成为依赖项,要么您需要将内容退回到 C++。如果您选择将内容移植到 C++,那么在切换过程中还有可能出现错误。
其他提示
嵌入Lua比嵌入Python容易得多。
Lua 从一开始就被设计为嵌入式;Python 的可嵌入性是事后嫁接的。
Lua 比 Python 小约 20 倍,也更简单。
您没有过多介绍您的构建过程,但是通过使用真正强大的 make 版本可以显着简化构建和测试。我用安德鲁·休谟的 MK, ,但如果您投入时间来掌握 Glenn Fowler 的方法,您可能会更好 nmake, ,它可以动态添加依赖项并消除单独配置步骤的需要。我通常不推荐 nmake,因为它有点复杂,但很明显,Fowler 和他的团队已经将 nmake 解决方案内置于 地段 规模和可移植性问题。对于您的特定情况,可能值得付出努力来掌握它。
不确定我理解你的系统,但如果构建和部署太复杂,也许你可以自动化它?如果部署完全自动化,就能解决问题吗?
我不明白脚本语言如何解决这个问题?如果你改变你的算法,你仍然需要从头开始计算,不是吗?
听起来你需要的是 巡航控制 或类似的东西;每次您触及基线代码时,它都会重建并重新运行测试。