我对计算科学的概念完全陌生,并且正在寻找一个良好的起点。
我知道没有客观上最好的语言,但是我想学习一门在计算科学方面毫无疑问地强大和突出的语言-一种被认为具有卓越能力和效率的语言。
首先,我倾向于与原子键合和相互作用有关的建模,需要图形表示/模拟。
在某些领域,某些语言是否倾向于比其他领域更好(即物理与纯数学)?还是基于其他因素选择语言?
我听说过很多名叫Fortran的名字。
有什么建议吗?
我对计算科学的概念完全陌生,并且正在寻找一个良好的起点。
我知道没有客观上最好的语言,但是我想学习一门在计算科学方面毫无疑问地强大和突出的语言-一种被认为具有卓越能力和效率的语言。
首先,我倾向于与原子键合和相互作用有关的建模,需要图形表示/模拟。
在某些领域,某些语言是否倾向于比其他领域更好(即物理与纯数学)?还是基于其他因素选择语言?
我听说过很多名叫Fortran的名字。
有什么建议吗?
Answers:
通常,它取决于您可以使用的数字库,这将有助于完成您的任务。C / C ++具有为它们实现的大量数字库,但是作为低级语言并不是最好快速原型化的东西。
我认为要快速寻求解决方案,建议使用Matlab或Mathematica之类的方法。它们具有大型工具集,并且非常高级。最有可能的是,您的实现无法扩展到生产用途,但这可能是尝试不同方法的理想场所。一旦知道要走的路,就总是可以更有效地在C / C ++中实现某些东西。
蟒蛇!
我认为这是解决科学计算问题的最佳方法。首先通过小脚本中的玩具示例来解决问题。变得更加系统化,并建立了一套代码。然后使您的代码正常工作!!!最后,如有必要,请进行代码优化。不要重新发明轮子,也不要做过早的优化。
(其他优点:Python是免费提供的-没有许可证问题,大型社区,例如在stackoverflow上,用于单元测试或日志记录的良好编程的模块...)
尝试使用Python,如《计算科学的Python脚本》一书中所述。
Python可能是一个很好的起点。跟随资源是一个很好的起点。
Fortran:Matlab一样,易于学习和使用,并且可以快速产生成果,但仅适用于数值计算
C ++:难以掌握(将花费您数年),但在数值计算(工作安全性)之外使用了很多知识
Python:这些天推荐很多,但是对于非琐碎的工作来说太慢了。您将用C编写所有潜在的计算上的基础内核,然后从Python调用它们,这意味着您必须学习(至少)两种语言
简短的答案
通过python了解面向对象代码的基础知识,并通过C了解计算机科学的基础知识。当您至少对这两种其他语言都还不错时,可以学习C ++,因为您几乎可以在C ++中做任何事情并使其快速运行(尽管要花很多时间才能编写)。
更长的答案
因此,这就是问题:对于第一个项目,您将在别人的实验室中研究别人的代码。在这种情况下,它们将成为选择编程语言的人。我个人认为这很棒!
我的意思是,作为一个初学者,您一段时间不会真正从肘部了解您的屁股,尤其是当您不知道自己在做什么时,学习编程会很无聊。因此,拥有来自他人代码的结构和限制是一件好事,而只有来自于实际项目的工作才具有动力和兴奋是一件好事。
尽管如此,无论您的实验室使用什么语言(尤其是Matlab),您都应该学习python,C和C ++。特别是,如果您不是来自计算机科学背景,则必须阅读Kernighan和Ritchie的“ The C Programming Language”。它已经35岁了,给人的独特印象是它的作者正在用打孔卡编程,但这是最稀有的鸟类:一本永恒的计算机科学书籍。这将使很多事情变得更加清晰。