科学程序员的阅读列表

50

我正在努力成为一名科学程序员。我的数学和统计背景足够,但在编程方面缺乏经验。我发现很难学习如何使用语言进行科学编程,因为大多数SP的参考资料都是琐碎的。

我的工作涉及统计/金融建模,没有涉及物理模型。目前,我广泛使用Python与numpy和scipy。我也熟悉R/Mathematica,具备阅读C/C++代码的能力,但没有Fortran的经验。

我不知道这是否是一位科学程序员所需的好编程语言列表。如果是,那么有哪些适用于科学领域的语言语法和设计模式的阅读清单呢?


你将使用哪些编程语言? - James Black
@ James。在原型设计中,我需要能够快速或高效地完成工作的任何东西。我没有受到几乎任何限制,但必须是其他人可以阅读的内容。 - leon
“这是问题的设计模式在科学环境中的语言。即使那些声称涵盖此类内容的书籍通常都是胡说八道。学习C++,让经验(和数值计算)教你,或者坚持使用R或Numpy(两者都很棒)。" - Alexandre C.
17个回答

3

对于科学环境中的通用C ++,Andrei Alexandrescu的现代C++设计可能是关于常见设计模式的标准书籍。


1
MC++D是一本绝妙的书,但对于像OP这样的C++初学者来说并不适合,它也不比GoF的原始《设计模式》更适用于具体的科学应用。例如,如果您不知道如何编写自己的模板类和函数以及部分特化它们,那么在阅读本书之前,您需要更扎实的语言基础。 - metal
我不了解OP的具体需求,但对于“某些科学环境中的设计模式”,我认为这是一个有价值的基础。这里的一些实验室团队将其视为最初必读的内容,这就是为什么我提出它的原因。 - Georg Fritzsche
这本书包含一些神秘的C++构造; 最适合使用C++模板进行库设计。由于现代特性如完美转发和可变参数模板,它有点过时了。它不包含有关数值方法、建模和软件架构的信息。 - gast128

2

阅读源代码也是很有帮助的。在这方面,Python非常出色。通过挖掘科学Python工具的源代码,我学到了大量的信息。除此之外,关注你最喜爱的工具的邮件列表和论坛还可以进一步提高你的技能。


2
一旦您开始运行,我强烈建议阅读这篇博客。它描述了如何使用C++模板提供类型安全的单位。例如,如果您将速度乘以时间,则会得到距离等。

你可能也会对微软新的F#编程语言中的“度量单位”感兴趣。 - J D

0

0

1
许可证...和糟糕的代码以及建议。 - J D

0

-1

对于Java,我建议看一下Unit-API
实现可以使用Eclipse UOMo(http://www.eclipse.org/uomo)或JScience.org(正在进行Unit-API的工作,JSR-275的早期实现也存在)


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