Physics 科学环境中的编程实践? 背景
去年,我在一所大学的一个物理研究小组实习。在这个小组中,我们主要用来编写程序来控制我们的设置、进行数据采集和分析数据。对于前两个目的来说,这很好,但对于数据分析来说,这是一个真正的难题。最重要的是,每个人都是自学成才的,所以编写的代码通常相当混乱(难怪每个博士都很快决定从头重写所有东西)。由于IT部门严格的软件和网络法规,版本控制未知,无法设置 现在,事情进展得出奇地顺利,但是自然科学界的人是如何进行软件开发的呢 问题 一些具体问题:Physics 科学环境中的编程实践? 背景,physics,scientific-computing,collaboration,Physics,Scientific Computing,Collaboration,去年,我在一所大学的一个物理研究小组实习。在这个小组中,我们主要用来编写程序来控制我们的设置、进行数据采集和分析数据。对于前两个目的来说,这很好,但对于数据分析来说,这是一个真正的难题。最重要的是,每个人都是自学成才的,所以编写的代码通常相当混乱(难怪每个博士都很快决定从头重写所有东西)。由于IT部门严格的软件和网络法规,版本控制未知,无法设置 现在,事情进展得出奇地顺利,但是自然科学界的人是如何进行软件开发的呢 问题 一些具体问题: 您使用了哪些语言/环境来开发科学软件,尤其是数据分析?什么
- 您使用了哪些语言/环境来开发科学软件,尤其是数据分析?什么图书馆?(例如,绘制时使用什么?)
- 有没有为没有任何编程背景的人提供过培训
- 你有版本控制和bug跟踪吗
- 你将如何努力创造一个体面的编程环境,而不会对科学家个人造成太多阻碍(尤其是物理学家是固执的人!)
- 使用最广泛的语言/软件包:
- LabVIEW
-
- 使用、等(下载和链接请参见Brandon的回复)
- 信用证++
- 几乎所有受访者都使用版本控制;bug跟踪和其他过程不太常见
- 软件木工课程是向科学家教授编程和开发技术的好方法
- 如何改进?
- 不要强迫人们遵守严格的协议
- 自己建立一个环境,并向他人展示其好处。帮助他们自己开始使用版本控制、bug跟踪等
- 查看其他人的代码可能会有所帮助,但请注意,并非每个人都会欣赏这一点
至于鼓励其他人使用版本控制之类的,这确实是我现在面临的问题。我计划强迫我的研究生在他们为我做的研究项目中使用它,并鼓励他们在自己的研究中使用它。如果我教一门涉及编程的课程,我可能会强迫学生在那里也使用版本控制(根据存储库中的内容给他们评分)。就我的同事和他们的研究生而言,我真正能做的就是提供一台服务器,依靠温和的劝说和树立良好的榜样。坦率地说,在这一点上,我认为让他们进行定期备份比让他们进行源代码管理更重要(有些人在USB闪存驱动器上携带他们研究数据的唯一副本)。这可能有点无关紧要,但希望相关 我曾在国家仪器研发部工作,在那里我为NI RF和通信工具包编写了软件。我们经常使用LabVIEW,下面是我们遵循的实践:
我不是这方面的专家,但我一直都明白这就是我的初衷。这里也有核/粒子物理学
-
主要的编程工作过去主要是在使用(PW,MuuIt,…),最近,它主要是在C++中使用的。还有许多其他的库和工具在专门使用,并且在这里和那里看到了一些用途
- 在我这一行,数据采集通常意味着相当低水平的工作。通常在C语言中,有时甚至在汇编语言中,但随着硬件性能的提高,这种情况正在消失。另一方面,许多板子现在都是用需要旋转的门来建造的
- 一次性、图形界面等。几乎可以使用任何东西(以前很大,最近我看到了更多的Perl/Tk和Python/Tk),包括