创建特定领域科学图书馆的设计原则

时间:2009-09-05 14:02:53

标签: scientific-computing

为特定学科的科学家设计软件库有哪些好的原则?我的意思是化学,物理学,材料科学,显微镜,生物测定,天文学等领域。我排除了SciPy,R,Matlab,JAMA等通用库,它涵盖了一系列学科,或者特别是数学或数据分析。 (目前我们中的许多人都参与构建化学中的开源库,了解其他领域的经验将是有价值的)。

我理解这是一项雄心勃勃的任务,获得资助并不容易,但对于可重复和可验证的科学来说,它变得越来越重要。

4 个答案:

答案 0 :(得分:4)

  1. 它应该允许其用户 - 科学家 - 在该域中进行 science 而不是编程。较少的牵引力具有纯粹的编程概念,如“处理程序”,“控制器”,“指针”,“内存泄漏”等,它越适合您的最终用户;

  2. 它应该允许那些发现你的lib有趣的人在你放弃它之后维护它。更短,它不应该被开发为“一次性代码”,或者它应该在“好”的扫描仪中完成。有关此事,请参阅your own question

  3. 要设计API,应该参与使用此库的专家。他应该知道,你正在编写的库中通常解决问题的程序需要什么,并定义你要实现的主要概念。在专家说出之后设计你的API,而不是你看到它的方式。如果你也是专家,那么无论如何,邀请另一个人参与开发。原因是开发人员倾向于以他们看待自然的方式设计API,这是实现的自然方式。然而,它涉及的问题应该是自然的。

答案 1 :(得分:2)

“为特定学科的科学家设计软件库有哪些好的原则?” - 首先是IMO的领域专家。在这些领域通常成功的包装类型由化学家,物理学家,生物学家等撰写。

你必须问问自己,其中一个领域的科学家是否更容易学习编程或程序员学习科学学科。

根据我在21天内学习语言X所看到的书籍数量与那些声称在同一时间段内授予化学,生物学或物理学知识的学生相比,我猜想科学家更有可能自己编程解决方案。

答案 2 :(得分:1)

很好地考虑良好的通用API设计,无论它是如何特定于域,因此请查看this google tech talk。 (约书亚座)

答案 3 :(得分:0)

我的建议是:衡量你想要达到的科学界的常见编程技巧(最有可能是你的!)并开发他们可以使用的东西(或者只需要一些学习,但不要太多)。保持简单,或隐藏内部深处的复杂性。科学家不是专业程序员。