首先,我是新来的,我希望这是适合我提问的地方。关于推荐的项目架构,我有一个问题。
想法:自动化一些有关空气动力学的计算。我有一些输入数据,我需要在几个子计算中处理这些数据。你可以在某种程度上看到这样的计算就像一个黑匣子:
输入=>计算=>结果
这些计算中有一些已经可以作为开源程序使用,还有一些是我需要自己编写的。这不应该是个问题。但我想用一种灵活的方式把这些计算联系起来。例如:
输入=>计算1 =>计算2 =>计算3 =>结果
计算的次数和顺序应该是可变的。我是否应该将每个计算看作是独立的程序,并将它们连接到一种框架中,以便指定程序调用的顺序和参数?或者还有其他技术来解决这样的问题呢?
非常感谢你的每一个建议和建议。
塞巴斯蒂安
发布于 2013-03-31 16:54:35
您正在考虑的是Unix哲学的原则之一:您构建了许多小型工具,并将它们连接到输油管道中以生成更大的工具。
与您的问题类似的一个现实世界的例子是一组名为NetPBM的程序。NetPBM由200多个过滤器组成,这些过滤器可以流水线方式读取图像的任何一长串格式,操纵图像--通常不止一次--并以任何受支持的格式写入结果。使这些工具工作的关键是对数据使用一组固定的标准格式,每个筛选器都可以读取和/或写入数据,或者使用转换筛选器导出数据。
在您的情况下,只要任何计算的输出格式可以被任何其他人读取,您就可以按您喜欢的任何顺序混合和匹配它们。例如,如果所有东西都是10x10矩阵,那么以下任何一个矩阵都可以正常工作(“AC.26”符号的意思是“管道”,或者“将程序左侧的输出指向右侧的程序输入”):
Get Input | Calculation 1 | Calculation 2 | Calculation 3 | Write Output
Get Input | Calculation 3 | Calculation 2 | Calculation 1 | Write Output
Get Input | Calculation 1 | Write Output
Get Input | Calculation 1 | Calculation 3 | Write Output正如您在注释中提到的,您可能需要编写过滤器才能进行转换,这很好,因为它们符合这样的想法,即拥有一个充满小型、有用工具的工具箱:
Get Input | Calculation 1 | Convert 1 out to 2 in | Calculation 2 | Write Output尽管如此,我还是建议您探索一个像MATLAB或八度这样的数值分析工具。两者都是专门为这类事情而设计的。一旦你超越了学习曲线,你就会花更多的时间做数学,少花很多时间编程。
https://softwareengineering.stackexchange.com/questions/193469
复制相似问题