创建领域特定科学库的设计原则

4
设计软件库以供特定学科的科学家使用时,有哪些好的原则?这里指的是化学、物理、材料科学、显微镜技术、生物测定、天文学等领域。排除涵盖多个领域或专门用于数学或数据分析的通用库,如SciPy、R、Matlab、JAMA等。(目前我们中的一些人正在建立开源的化学库,了解其他领域的经验将非常有价值。)
我知道这是一个宏伟的任务,而且很难获得资金,但对于可重复和可验证的科学越来越重要。
4个回答

4
  1. 它应该允许其用户——科学家——在该领域内进行科学研究,而不是编程。纯编程概念如“处理程序”,“控制器”,“指针”,“内存泄漏”等的影响越小,它就越适合你的最终用户;

  2. 它应该允许那些发现你的库有趣的人在你放弃之后维护它。简短地说,它不应该被开发为“一次性代码”,或者应该以“良好”的方式完成。请参见你自己的问题

  3. 要设计一个API,需要涉及到将使用这个库的专家。他应该知道通常的问题解决程序从你编写的库中需要什么,并定义你要实现的主要概念。根据专家的建议设计你的API,而不是按照你自己的想法。如果你也是专家,那么无论如何,请邀请另一个与开发无关的人。原因是开发人员往往倾向于以他们认为自然的方式来设计API,即对于实现而言自然的方式。而它应该对它所涉及的问题自然。


2
"如何为特定学科的科学家设计软件库?" - 首先是成为领域专家,我认为这是最重要的。在这些领域中通常成功的软件包是由化学家、物理学家、生物学家等编写的。
您需要问自己,对于这些领域的科学家来说,学习编程容易还是让程序员学习科学学科容易。
根据我看到的学习语言X 21天的书籍数量与那些声称在同一时间框架内授予化学、生物或物理学精通的书籍数量相比,我猜测科学家更有可能编写自己的解决方案。"

制作优秀的软件需要一些你在“21天学会Intercal”中找不到的技能。显然,你需要一个领域专家,并最好能够接触到几个。然而,物理学家编写的软件看起来就像是由物理学家编写的软件,很可能比由熟练的软件专业人员编写的软件不可靠。 - David Thornley
我认为,对于一名物理学家来说,学习如何编写专业软件要比一名软件专业人员学习物理容易得多。许多软件开发人员来自其他领域,如物理学,这表明物理学家或工程师编写出非常好的代码的可能性更大。但是,有时候你的“物理学家编写的软件”会偏离预期。 - duffymo

1

无论领域有多专业,考虑良好的通用API设计都是很重要的,因此请查看这个Google技术讲座。(Joshua Block)


0
我的建议是:评估你想要接触的科学界(很可能是你自己)的常见编程技能,并开发一些他们可以使用的东西(或者需要一点学习,但不要太多)。保持简单,或将复杂性隐藏在深层内部。科学家不是专业程序员。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接