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