写一篇论文需要写多少行代码?

计算科学 出版物
2021-12-03 16:12:43

这个问题让我感兴趣了一段时间。

在一个极端,我发现论文和一些论文是 CFD 代码中单个参数变化的结果,例如“大气边界层”湍流模型,它是由常数模型cμkϵ

在另一端有论文,是在编写了十万或更多行代码的整个库之后编写的,例如像 deal-II 这样的大型库。

我发现这对于理解写一篇 sci comp 论文所投入的实际努力以及理解这项努力的组成部分很重要。

作为寻找答案的一种方法,我正在考虑向多篇论文的作者发送问题,并可能绘制出编写的代码行的近似数量与论文的引用之间的相关性。这个结果可以在 figshare 上发布给好奇的人。

我想听听一些想法。

2个回答

您正在查看错误的指标。在大多数科学领域,人们根本不编写代码,但仍然可以发表论文。对于数值分析中的更多理论论文也是如此,例如证明特定方案的收敛性。

另一方面,有些论文讨论了特定的库或实现。这些通常需要编写数万行代码。我有其中的几个(关于交易的那个。II 讨论了当时可能的 ~300k 代码行,关于 hp 方法的一个 ~20k,关于并行分布式计算的一个和一个关于地幔对流的每个都需要 10-15k )。

在这两者之间,还有更多关于算法开发的论文。再一次,我有几个我们只用几百到 2-3000 行代码就可以逃脱的地方。

所以我觉得你的问题不是很好。并不是因为你写了这么多行代码,你就发表了一篇论文。相反,是您在理论开发方面所做的工作以及您可以在代码中展示的内容决定了论文是否会发表。

正如沃尔夫冈所说,您的指标是错误的。仅仅编写代码根本不足以发表论文。一篇有意义的论文;显然很多垃圾被发布了。我可以想到计算科学出版物的 3 个主要领域:

  • 数值:您开发了一种新的数值方法,或以其他方式增强/修改了现有方法。结果表明,这种方法在某些方面比现有方法更好(更快,更准确,无论如何)。这可能像您在湍流模型中更改闭包常数的示例一样简单,也可能像不连续 galerkin 方法的发明一样复杂。

  • 物理学:您使用现有的数值方法来解决新的/未探索的物理现象。在 CFD 中,这类似于使用风洞来探索流动问题。

  • 软件:您开发了一个全新的软件框架。没有新的数值方法,但这是一项巨大的努力,有助于其他工作的发展。这类似于 Wolfgang 的 deal.ii 框架、PETSc、Trilinos 或各种 MATLAB 出版物。它们没有任何新的数值方法,但它们具有明显的实用性。

这些都不比其他任何一个都好,但第三个例子无疑是最不常见的。没有多少代码本身可以证明出版是正当的,坦率地说,计算物理学中的大多数老兵根本不关心代码——它只是一种必要的邪恶。可能有很多代码但 IMO 不值得发布的示例:

  • 你写了 500k 行代码,基本上复制了 Fluent 理论指南的内容。您可以解决所有相同的问题,但没有新的数字或应用程序。我的前任顾问将其称为“学术练习”。

  • 你用你最喜欢的 CFD 教科书或一堆论文编写了每一个例子。您编码的行数根本无关紧要,因为它根本不会对该领域的讨论做出任何贡献。