您使用什么语言/环境来开发科学软件,尤其是。数据分析?有哪些图书馆?(例如,你用什么来绘图?)
我用于数字和与科学相关的东西的语言:
- C(开发慢,调试太多,几乎不可能写出可重用的代码)
- C++(我学会了讨厌它——开发不像 C 那样慢,但可能会很痛苦。模板和类最初很酷,但过了一段时间我意识到我一直在与它们作斗争并寻找解决方法语言设计问题
- Common Lisp,还可以,但没有广泛用于 Sci 计算。不容易与 C 集成(如果与其他语言相比),但可以
- 方案。这一个成了我个人的选择。
我的编辑器是 Emacs,尽管我确实使用 vim 来快速完成编辑配置文件之类的工作。
对于绘图,我通常会生成一个文本文件并将其输入 gnuplot。
对于数据分析,我通常会生成一个文本文件并使用 GNU R。
我看到这里有很多人使用 FORTRAN(大部分是 77,但也有一些 90),还有很多 Java 和一些 Python。我不喜欢这些,所以我不使用它们。
是否有针对没有任何重要编程背景的人的培训?
我认为这不适用于我,因为我毕业于 CS——但我工作的地方没有正式培训,但人们(工程师、物理学家、数学家)确实互相帮助。
你有版本控制、错误跟踪之类的东西吗?
版本控制绝对重要!我将我的代码和数据保存在三台不同的机器中,在世界的两个不同方面——在 Git 存储库中。我一直在同步它们(所以我有版本控制和备份!)我不做错误控制,尽管我可能会开始这样做。但我的同事根本不做 BTS 或 VCS。
您将如何尝试为编程创造一个体面的环境,而又不妨碍个别科学家(尤其是物理学家是固执的人!)
首先,我会给他们尽可能多的自由。(在我工作的大学里,我可以选择让别人安装 Ubuntu 或 Windows,或者安装我自己的操作系统——我选择安装我自己的。我没有得到他们的支持,我对发生的任何事情负责我的机器,包括安全问题,但我对机器做任何我想做的事)。
其次,我会看看他们习惯了什么,并让它工作(需要 FORTRAN?我们会设置它。需要 C++?没问题。Mathematica?好的,我们将购买许可证)。然后看看他们中有多少人想学习“额外的工具”来帮助他们提高工作效率(不要说“不同的”工具。说“额外的”,这样就不会有人会“失去”或“让去”或其他什么)。从编辑开始,看看是否有小组想使用 VCS 来同步他们的工作(嘿,你可以呆在家里通过 SVN 或 GIT 发送你的代码——这不是很好吗?)等等。不要强加——展示这些工具有多酷的例子。使用 R 进行数据分析,并向他们展示它是多么容易。展示漂亮的图形,并解释你是如何创建它们的(但从简单的例子开始,