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