科学计算是算法密集型的,也可能是数据密集型的.它通常需要使用大量内存来运行分析并在继续下一个之前释放它.有时它还使用内存池为每次分析回收内存.托管语言在这里很有趣,因为它可以让开发人员专注于应用程序逻辑.由于它可能需要处理庞大的数据集,因此性能也很重要.但是我们如何使用托管语言控制内存和性能呢?
Python最近在科学计算方面变得非常重要.它是一种托管语言,因此您不必记住释放您的记忆.同时,它具有科学和数值计算软件包(NumPy,SciPy),它为您提供与编译语言类似的性能.此外,Python可以很容易地与C代码集成.
Python是一种非常富有表现力的语言,比许多传统语言更容易编写和阅读.它在某些方面也类似于MATLAB,使得科学家比C++或Fortran更容易使用.
在奥斯陆大学最近已经开始教学Python作为信息学(谁仍在学习Java)的部门之外的所有的理科学生的默认语言.
模拟研究实验室,主要用于科学计算,偏微分方程等,广泛使用python.
你问的是一个根本上有缺陷的问题.托管语言的全部意义在于您不处理内存.这是由垃圾收集器处理的,虽然您可以采取某些措施以更好地使其以有效的方式完成工作,但是您的工作不是您的工作.
在性能不受您控制的世界中,您可以采取的措施可以提高性能.确保不要持有您不需要的参考文献.如果您需要对情况进行更多控制,请使用基于堆栈的变量.
F#似乎有点针对这些观众.科学家实际上有一本名为F#的书.
这个问题也在Lambda the Ultimate上被问到了.
您可能会对使用Matlab的人数感到惊讶,因为它可以被认为是一种编程语言并且当然管理自己的内存(支持大量数据集等),所以它应该被认为是一个解决方案.
此外,它会生成程序代码(可能需要一个单独的插件?),所以一旦你得到一个你想要打包的算法,你可以让它生成C代码来执行你最初在M脚本或simulink模型中的工作.
-亚当