为特定学科的科学家设计软件库有哪些好的原则?我的意思是化学,物理学,材料科学,显微镜,生物测定,天文学等领域。我排除了SciPy,R,Matlab,JAMA等通用库,它涵盖了一系列学科,或者特别是数学或数据分析。 (目前我们中的许多人都参与构建化学中的开源库,了解其他领域的经验将是有价值的)。
我理解这是一项雄心勃勃的任务,获得资助并不容易,但对于可重复和可验证的科学来说,它变得越来越重要。
答案 0 :(得分:4)
它应该允许其用户 - 科学家 - 在该域中进行 science 而不是编程。较少的牵引力具有纯粹的编程概念,如“处理程序”,“控制器”,“指针”,“内存泄漏”等,它越适合您的最终用户;
它应该允许那些发现你的lib有趣的人在你放弃它之后维护它。更短,它不应该被开发为“一次性代码”,或者它应该在“好”的扫描仪中完成。有关此事,请参阅your own question。
要设计API,应该参与使用此库的专家。他应该知道,你正在编写的库中通常解决问题的程序需要什么,并定义你要实现的主要概念。在专家说出之后设计你的API,而不是你看到它的方式。如果你也是专家,那么无论如何,邀请另一个人不参与开发。原因是开发人员倾向于以他们看待自然的方式设计API,这是实现的自然方式。然而,它涉及的问题应该是自然的。
答案 1 :(得分:2)
“为特定学科的科学家设计软件库有哪些好的原则?” - 首先是IMO的领域专家。在这些领域通常成功的包装类型由化学家,物理学家,生物学家等撰写。
你必须问问自己,其中一个领域的科学家是否更容易学习编程或程序员学习科学学科。
根据我在21天内学习语言X所看到的书籍数量与那些声称在同一时间段内授予化学,生物学或物理学知识的学生相比,我猜想科学家更有可能自己编程解决方案。
答案 2 :(得分:1)
很好地考虑良好的通用API设计,无论它是如何特定于域,因此请查看this google tech talk。 (约书亚座)
答案 3 :(得分:0)
我的建议是:衡量你想要达到的科学界的常见编程技巧(最有可能是你的!)并开发他们可以使用的东西(或者只需要一些学习,但不要太多)。保持简单,或隐藏内部深处的复杂性。科学家不是专业程序员。