【发布时间】:2019-03-10 11:44:50
【问题描述】:
我对高性能计算还很陌生,并且我继承了一些用于我正在处理的任务的现有代码。就目前而言,我有一个基于 Linux 的 HPC,它使用 MPI 和 PBS 来排队和运行作业。我继承的是 python 脚本,它动态构建并提交一个 PBS 脚本到队列,但是在单个作业的过程中,.sh、.csh 和 .ksh 脚本在不同的点被调用,并且大多数 shell 脚本都是非常简单,通常不到 10 行。在一个工作中使用多种不同的 shell 风格有什么好处吗?有什么明显的理由我不应该将它们全部转换为单一风味吗?
【问题讨论】:
-
这个问题很难回答。一般来说,如果脚本很简单,我认为值得将它们全部转换为一种语言。没有看到脚本很难肯定地说,这就是为什么我投票以“主要基于意见”来结束这个问题。
-
除非你能告诉我们这可能属于Software Engineering的代码。为任何任务使用多种语言的主要(唯一?)原因是它们各自擅长解决该任务的不同部分。这在 shell 脚本的情况下似乎不太可能,而且这种情况很可能是一个历史事故。
-
@l0b0 公平点。代码既庞大又混乱。在这里分享一些可以理解的东西是不可行的,但我怀疑你是对的。我的感觉是,这是经过多次迭代和开发人员拼凑而成的。我去那边提问题,看看有没有什么想法。
-
根据我的经验,使用不同的 shell 没有好的技术原因,但通常有非技术原因。一个是“黑盒”综合症,如果一个程序做你想做的事,为什么要重写它?不同的人对不同的贝壳有一种迷恋。我是在 csh 上长大的,纯粹是因为它是 Sun 的默认设置(编写 csh 的人创立了 Sun),幸运的是我很久以前就痊愈了。 ksh 要好得多,但直到(我认为)2000 年才开源,因此在 Linux 上使用了 bash。所以不同语言的原因可能是历史原因。
-
如果您决定转换它们,我建议您首先以独立于语言的方式记录它们的一般操作。然后使用文档编写新代码,逐行转换很少是一个好主意。还要考虑一个使用更强大的语言(如 python)的脚本更少的系统。然而,请永远记住这句格言如果它没有坏,就不要修复它。