科学程序员的阅读清单

leo*_*on 45 c c++ fortran scientific-computing

我正努力成为一名科学程序员.我有足够的数学和统计学背景,但缺乏编程背景.我发现学习如何使用语言进行科学编程非常困难,因为SP的大部分参考都是微不足道的.

我的工作涉及统计/财务建模,没有物理模型.目前,我广泛使用Python与numpy和scipy.完成R/Mathematica.我知道足够的C/C++来读取代码.没有Fortran的经验.

我不知道这对于科学程序员来说是否是一个很好的语言列表.如果是这样,那么在科学环境中学习这些语言的语法设计模式的阅读清单是什么.

Tim*_*Tim 36

在某些阶段,您将需要浮点运算.做得好,难以胜任,并且很容易做得很差.本文是必读的:

每个计算机科学家应该知道的浮点运算

  • +1,这可能是科学计算中最基本的东西之一 (9认同)

Hig*_*ark 25

我彻底推荐

科学与工程C++:Barton和Nackman的高级技术与实例介绍

不要被它的年龄推迟,这是非常好的.使用您喜欢的语言(只要它是C,C++或Fortran)的数字食谱是简洁的,非常适合学习,并不总是每个问题的最佳算法.

我也喜欢

C++和MPI中的并行科学计算:Karniadakis的并行算法及其实现的无缝方法

越早开始并行计算越好.

  • 哎太晚了,差不多25年了.哦,多么浪费生命.我坚持认为NR是学习科学编程的优秀文本,它不仅仅是编程语言. (7认同)
  • 在任何情况下,都不要使用Numerical Recipes来尝试学习编程语言. (4认同)
  • 数字食谱25年前还可以,但今天这是一个笑话. (3认同)

Sha*_*ane 12

我的第一个建议是,你看看你所在领域的前五所大学,看看他们正在教什么以及教授们用于研究的内容.这就是你如何发现相关的语言/方法.

还要看看这个stackoverflow问题("在科学环境中编程实践").

你在做统计/财务建模吗? 我自己在该领域使用R,并且它很快成为统计分析的标准,特别是在社会科学中,但在金融领域也是如此(例如,参见http://rinfinance.com).Matlab可能仍然在工业中得到更广泛的应用,但我感觉这可能正在发生变化.如果性能是一个主要因素,我只会回到C++作为最后的手段.

查看这些相关问题,以帮助查找与R相关的阅读材料:

在有关统计和财务的书籍推荐方面,我仍然认为最好的一般选项是David Ruppert的"统计和财务"(你可以在这里找到大部分的R代码,作者的网站上有matlab代码).

最后,如果你的科学计算不统计,那么我实际上认为Mathematica是最好的工具.程序员似乎很少提及,但在我看来,它是纯科学研究的最佳工具.它对matlab的积分和偏微分方程等事物提供了更好的支持.他们在wolfram网站上很好的书籍清单.


Art*_*ius 10

在语言方面,我认为你的报道很好.Python非常适合实验和原型设计,Mathematica有助于理论上的东西,如果你需要进行严格的数字运算,C/C++就可以了.

我可能还建议你开发一种汇编语言和一种函数式语言(如Haskell),不是真正使用它,而是因为它们对你的编程技巧和风格的影响,以及它们带回家的概念给你.他们有一天也可能会派上用场.

我还认为了解并行编程(并发/分布式)至关重要,因为这是获取科学问题有时必需的计算能力的唯一方法.无论你是否真的使用函数式语言来解决问题,接触函数式编程在这方面都会非常有用.

不幸的是,我没有太多建议阅读,但你可能会发现科学家和工程师的数字信号处理指南很有帮助.


tor*_*dal 7

我是一名科学程序员,在过去两年刚刚进入该领域.我正在进行更多的生物学和物理学建模,但我打赌你所寻找的是非常相似的.当我申请工作和实习时,我认为有两件事情并不重要,但却让我错过了机会.一个是MATLAB,已经提到了.另一个是数据库设计 - 无论你在SP的哪个区域,都可能会有很多数据必须以某种方式进行管理.

迈克尔·赫尔南德斯(Michael Hernandez)的" 数据库设计数据库设计"(Michael Design for Mere Mortals)被推荐给我,作为一个良好的开端并在我的准备中帮助了我很多.如果你还没有,我还要确保你至少了解一些基本的SQL.


Jam*_*ack 6

我会建议任何数字食谱书(选择一种语言)都有用.

根据您使用的语言或您将进行可视化,可以有其他建议.

另一本我非常喜欢的书是Didier Besset 的面向对象的数值方法实现.他展示了如何在Java和smalltalk中完成许多方程式,但更重要的是,他在帮助展示如何优化计算机上使用的公式以及如何处理由于计算机限制的错误方面做得非常出色.