我所在的团队负责大量的研究开发和完整的运输代码。

我有一半时间开发在实时系统上运行的流程(介于软实时和硬实时之间,中等实时?)

另一半我为我们的研究人员编写或优化流程,他们根本不需要关心代码。

目前我正在开发一个流程,我必须将其分成两个不同的分支。

有一个针对一组的研究版本,以及一个生产版本,偶尔需要与研究代码合并才能将最新最好的代码投入生产。

要测试这些流程,您需要设置一个半复杂的测试环境,它将在正确的时间(实时系统)将我们分析的数据发送到流程。

我正在考虑如何制作:

  1. 主意
  2. 实施
  3. 测试
  4. 转到 #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 解决方案内置于 地段 规模和可移植性问题。对于您的特定情况,可能值得付出努力来掌握它。

不确定我理解你的系统,但如果构建和部署太复杂,也许你可以自动化它?如果部署完全自动化,就能解决问题吗?

我不明白脚本语言如何解决这个问题?如果你改变你的算法,你仍然需要从头开始计算,不是吗?

听起来你需要的是 巡航控制 或类似的东西;每次您触及基线代码时,它都会重建并重新运行测试。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top