Hintergrund
Letztes Jahr habe ich ein Praktikum in einer Physikforschungsgruppe an einer Universität gemacht. In dieser Gruppe haben wir hauptsächlich LabVIEW verwendet , um Programme zur Steuerung unserer Setups, zur Datenerfassung und zur Analyse unserer Daten zu schreiben. Für die ersten beiden Zwecke funktioniert das ganz in Ordnung, aber für die Datenanalyse ist es ein echtes Problem. Darüber hinaus waren alle größtenteils Autodidakten, so dass der geschriebene Code im Allgemeinen ein ziemliches Durcheinander war (kein Wunder, dass jeder Doktor schnell beschloss, alles von Grund auf neu zu schreiben). Die Versionskontrolle war unbekannt und aufgrund strenger Software- und Netzwerkvorschriften der IT-Abteilung nicht einzurichten.
Nun, die Dinge haben tatsächlich überraschend gut geklappt, aber wie machen Naturwissenschaftler ihre Softwareentwicklung?
Fragen
Einige konkrete Fragen:
- Welche Sprachen / Umgebungen haben Sie für die Entwicklung wissenschaftlicher Software verwendet, insbesondere für die Datenanalyse? Welche Bibliotheken? (Was verwenden Sie zum Beispiel zum Plotten?)
- Gab es Schulungen für Personen ohne wesentlichen Programmierhintergrund?
- Hatten Sie so etwas wie Versionskontrolle und Fehlerverfolgung?
- Wie würden Sie versuchen, ein anständiges Programmierumfeld zu schaffen, ohne den einzelnen Wissenschaftlern zu viel im Weg zu stehen (insbesondere Physiker sind hartnäckige Menschen!)?
Zusammenfassung der bisherigen Antworten
Die bisherigen Antworten (oder meine Interpretation davon): (2008-10-11)
- Sprachen / Pakete, die am häufigsten verwendet werden:
- Die Versionskontrolle wird von fast allen Befragten verwendet. Fehlerverfolgung und andere Prozesse sind viel seltener.
- Der Software Carpentry-Kurs ist eine gute Möglichkeit, Wissenschaftlern Programmier- und Entwicklungstechniken beizubringen.
- Wie kann man Dinge verbessern?
- Zwingen Sie die Menschen nicht, strenge Protokolle zu befolgen.
- Richten Sie selbst eine Umgebung ein und zeigen Sie anderen die Vorteile. Helfen Sie ihnen, selbst mit der Versionskontrolle, der Fehlerverfolgung usw. zu arbeiten.
- Das Überprüfen des Codes anderer Personen kann hilfreich sein, aber beachten Sie, dass dies möglicherweise nicht jeder zu schätzen weiß.