Programmieren für Naturwissenschaftler?
Ich würde Euch bitten die folgenden Fragen so vollständig es geht zu beantworten.
Diese kleine Befragung ist vor allem an Naturwissenschaftler, bzw. Informatiker gerichtet, die in solchen Bereichen (quantitative Biologie/Bioinformatik, Biophysik, Biochemie, etc.) arbeiten.
1) In welchem Arbeits- bzw. Forschungsfeld programmiert ihr?
2) Welche Software nutzt ihr dafür? Nutzt ihr mehrere?
3) Wertet ihr oft statistische Daten aus und stellt Sie mit derselben Software dar?
4) Wie lange dauert es (grobe Schätzung) sich in diese Programmiersprache einzuarbeiten um eigenständig wissenschaftliche Analysen/Auswertungen durchzuführen?
5) Mit welchen Materialien würdet ihr anfangen (Bücher, Videos, YouTube, Seminare/Kurse an der Uni, etc. pp.)
3 Antworten
Ich beantworte die Fragen mal für mehr oder weniger mein bisheriges Arbeitsleben:
1) Vorwiegend Software für den Einsatz im automobilen Umfeld (wie Fahrzeugkonfiguration, Berechnung von fahrzeugnahen Dienstleistungen - insbesondere Finanzierung, Leasing, Versicherungen)
2) Microsoft Visual Studio - mehrere Versionen - (da Desktop-Anwendungen), ein proprietäres Datenbanksystem (aus den 1990er Jahren), Oracle-Datenbank mit SQL Developer, Makros für Microsoft Excel, u. v. a. m.
3) Was heißt oft? Für Versicherungen regelmäßig, wenn auch in sehr kleinem Bereich (den größten Teil haben die Mathematiker der Versicherungsgesellschaft geleistet); Auswertung eigener Daten geschieht einmal pro Monat, das wurde einmal geschrieben, ein paarmal angepasst und funktioniert seither)
4) Mit umfangreicher Vorerfahrung im Programmieren / Softwaredesign allgemein: drei Wochen für die Grundkenntnisse, ein halbes Jahr für Profi-Niveau, danach lebenslanges Lernen der weiteren Bestandteile (kein Mensch kann z. B. alle der Hunderttausende Klassen des Microsoft-.NET-Frameworks und ihre jeweils wichtigsten 30 Methoden kennen) - für Auswertungen reichen die Grundkenntnisse, das Ergebnis weist allerdings "hohes Optimierungspotenzial" auf
5) Mit dem Programmieren als solchem: Wahlpflichtfach an der Schule mit motiviertem und einschlägig ausgebildetem Lehrer - da lernt man wirklich was; in VHS-Kursen sind erfahrungsgemäß zu viele Leute dabei, die zu viel anderes zu tun haben, um so schnell mitzukommen, dass jemand wie ich noch Spaß haben könnte, bei Maßnahmen vom Arbeitsamt sind 3/4 hochgradig demotiviert und demotivierend, an der Uni ist es mühsam, einen Dozenten zu finden, der begreift, dass es tatsächlich noch Leute gibt, die keine 10 Jahre Programmiererfahrung haben, usw.
Ansonsten ein kleiner Kurs, der dann ruhig richtig was kosten darf (ein paar Hunderte Euros) - da kann man sicher sein, dass die anderen auch richtig motiviert sind, und der Preis ist auch ein guter Anreiz, bis zum Ende dabeizubleiben
Für neue Programmiersprachen / Umgebungen: Detailliertes Online-Tutorial für Installation der Entwicklungsumgebung bis zum "Hello-World"-Programm; danach einfache Beispielprogramme analysieren und Lehrbücher lesen - die Übungen sind am Anfang zu primitiv, um durch Selbstschreiben mehr zu lernen als durch lesen/nachvollziehen; später sich selbst einfache Probleme stellen und mit den neuen Mitteln lösen (welche das sind, da lasse ich mich ziemlich unterbewusst von meinen bisherigen Erfahrungen leiten); nach ca. drei Wochen intensiveren Einarbeitens gehe ich dann die ersten "Real-World"-Probleme an (wissend, dass ich hier ziemlich uneleganten Code erstelle, der später stark vereinfacht werden kann, aber nichtsdestotrotz kann man mit den Mitteln, die man bis dahin kennt, sauberen Code erstellen)
Ich bevorzuge zum Lernen Web-Tutorials und v. a. Web-Nachschlagewerke - die finde ich meistens übersichtlicher und handlicher als 1000-seitige gedruckte Bücher, aber gedruckte Bücher tun's auch; mit Videos kann ich persönlich nicht viel anfangen - ich brauche entweder eine Person, die auf Rückfragen direkt eingehen kann, oder mein eigenes Tempo; Seminare / Kurse an der Uni würde ich heute nur noch nehmen, um entweder eine exotische Sprache zu lernen, die für eigene Geräte schwer zu kriegen ist, oder wenn ich einen Schein brauche
(1) Ich programmiere vorwiegend im technischen Bereich, ich bin freischaffender Erfinder und programmiere Meßauswertungstools, Laborautomation, Microcontroller / Embedded, ...
(2) C++ / C / Assembler / Qt / Arduino / GCC / MicrosoftVisualStudio / OpenWatCom / Delphi / VisualBasic / JScript / ...
(3) Statistik - kommt vor, normalerweise ist dies eine Trivialität am Rande und die Gerätesteuerung steht im Vordergrund.
(4) C++ damit kannst Du schon in einer Woche einfache Auswertungen schreiben - als Konsolenanwendung unter MicrosoftVisualStudio, in der man die Meßdaten eigeben muß. Realitätsnaher ist jedoch das Einlesen aus Meßdateien und die (auch) graphische Darstellung der Ergebnisse - da kommen schon mehrere Monate zusammen, bis man die notwendigen Tools ausreichend beherrscht - wenn man sich ersthaft damit auseinandersetzt.
(5) Am einfachsten nimmst Du MicrosoftVisualStudio mit C++ und versuchst Dich an einfachen Konsolenanwendungen - oder Du nimmst (mit der selben Umgebung...) VisualBasic und programmierst einfache GUI-Anwendungen. Bedenke: wo willst Du hin? VB ist im Vergleich zu C++ "schnarchlangsam" und unflexibel, aber einfachen Kram bekommt man schnell zusammmen. C++ erfordert mehr "Hirnschmalz", aber wenn man das beherrscht, kann man damit fast alles programmieren (wenn man noch Inline-Assembler mit hinzunimmt tatsächlich ALLES). Ich habe jede ProgrammierSprache, die ich verwende / verwendet habe, als Autodidakt gelernt, wobei ich dabei noch BorlandC++3.1 (für DOS + DMI) hervorheben möchte, damit habe ich wohl mit am meisten in Bezug auf "älteres C++" gelernt - Anfang der ´90´er eine der wichtigsten Entwicklungsumgebungen mit einem extrem kurzen Entwicklungszyklus (Codeänderung -> Testlauf in unter 10 Sekunden bei kleineren Projekten). Wichtig ist, daß man das Wissen für sich selbst adaptiert und verinnerlicht. Dann kann man damit auch flexibel / virtuos umgehen, was in der beruflichen Praxis am meisten zählt.
Bedenke: nicht alles was man machen kann ist auch sinnvoll, das gilt für alle Sprachen. Wartbarkeit in neuem Code kann Dir später sehr viel Zeit sparen, deshalb solltest Du mit konsistenten Code-Konventionen arbeiten, das macht einem das Leben einfacher - aber das wirst Du nach einigen Monaten selber merken.
Selbst programmiert habe ich noch nicht. Zur statistischen Auswertung nutze ich meist R, das basiert auf der Programmiersprache S.
3) Wertet ihr oft statistische Daten aus und stellt Sie mit derselben Software dar?
Zum Auswerten und Darstellen statistischer Daten nutze ich R (R Core Team, Wien: https://www.r-project.org/). Damit lässt es sich relativ leicht arbeiten, wenn man sich einmal eingefuchst hat. Die Skripte kann und sollte man in einem Texteditor vorschreiben. Empfehlenswert ist es, man nutzt RStudio, dabei ist ein Texteditor bereits integriert, man muss dann nicht erst umständlich von einem Fenster zum anderen und wieder zurück springen, sondern hat "alles unter einem Dach". Die Software kann, je nach Bedarf, um beliebige Packages erweitert werden oder man schreibt sich "einfach" selber ein Skript.
4) Wie lange dauert es (grobe Schätzung) sich in diese Programmiersprache einzuarbeiten um eigenständig wissenschaftliche Analysen/Auswertungen durchzuführen?
Nach einer Einarbeitung von zwei, drei Tagen dürfte man die grundlegenden Dinge schon verstanden haben. Bis man alles verstanden hat, dauert es sicher eine ganze Weile, etwa ein halbes Jahr lang. Es ist aber eine umfangreiche Hilfe integriert, die man jederzeit aufrufen kann. Ich selbst arbeite nicht regelmäßig mit R, es braucht daher immer ein bisschen, bis ich mich wieder hineingefunden habe. Aber ich würde schätzen, nach ein oder zwei Tagen ist man wieder eingearbeitet.
5) Mit welchen Materialien würdet ihr anfangen (Bücher, Videos, YouTube, Seminare/Kurse an der Uni, etc. pp.)
Empfehlenswert ist auf jeden Fall das Belegen eines Kurses an einer Universität. Außerdem sollte man, wenn man ein neues Package nutzt, auf jeden Fall das Manual durchlesen. Hilfe findet man immer auch im Internet mit den gängigen Suchmaschinen.