Der Einstieg in die astronomische Programmierung

 

Software selbst zu programmieren ist einfacher als man es sich für gewöhnlich vorstellt. Die Schwierigkeit besteht vielmehr darin, die Fülle an Information, die im Netz vorhanden ist, zu sichten und zu bewerten – insbesondere, wenn man keine Programmiererfahrung besitzt.

Diese Seite ist ein Angebot der VdS-Fachgruppe Computer-Astronomie und richtet sich an all jene Sternfreunde, die gerne das Entwickeln von Astrosoftware erlernen möchten. Die Seite versucht nicht, einen kompletten Programmierkurs anzubieten – dies kann zum einen von uns einfach nicht geleistet werden und zum anderen ist dies auch nicht erforderlich, da bereits eine Vielzahl an hervorragenden Lehrmitteln, nicht nur im Netz, vorhanden sind. Zielsetzung ist vielmehr, einen Leitfaden zur Orientierung zu geben, anhand dessen Astroamateure zielgerichtet nach weiterführende Information suchen können und ihre Projekte planen können.

 

Weshalb eigentlich programmieren?

 

Obwohl im Internet eine breite Palette astronomischer Software verfügbar ist, gibt es eine Vielzahl von Gründen, sich näher mit dem Programmieren näher zu beschäftigen:

•    Der Wunsch zum Selbermachen: bei vorhandener Software fehlen Funktionen oder die Benutzeroberfläche soll nach eigenen Vorstellungen gestaltet werden.

•    Künstliche Welten schaffen: Simulationen sind etwas völlig Eigenständiges. Sie erschließen diejenigen Teilgebiete der Astronomie, die weder durch direkte Beobachtung noch durch Theorien beschrieben werden können. Mit einer Simulation schafft sich der Programmierer eine eigene künstliche Welt, mit der er spielen kann und aus der sich Erkenntnisse durch Vergleich mit der Realität gewinnen lassen. Darüber hinaus lassen sich Sachverhalte betrachten, die in der Natur so nicht vorkommen.

•    [mehr…]

Die Möglichkeiten, die man heutzutage für die astronomische Programmierung antrifft, können besser kaum sein. Die Hardware birgt, was Speicher und Rechenleistung betrifft, keine nennenswerten Einschränkungen mehr; für die Entwicklung stehen zahlreiche, oft kostenlose und leistungsfähige Tools bereit und für Benutzeroberflächen bzw. Grafik sind fertige und äußerst leistungsfähige Codebibliotheken verfügbar. Der Entwicklung eigener Software steht von technischer Seite somit nichts im Wege.

 

Abbildung: Das einfache Programm "Hallo Welt", in diesem Beispiel in der Programmiersprache C# gehalten, erzeugt eine Meldung mit einer gleichlautenden Textausgabe.

Was benötige ich für das Programmieren?

 

Für das Entwickeln von Software ist ein gewisses Maß an logischem Denken, etwas Abstraktionsvermögen und Kreativität sowie eine Prise Engagement in der Sache ganz hilfreich. Die Anforderungen lesen sich zunächst schwieriger als es hinterher in der Praxis wirklich ist.

Auf dem PC benötigt man bestimmte Software. Häufig werden Programmiersprachen in Form von sogenannten integrierten Entwicklungsumgebungen ausgeliefert. Diese enthalten i.d.R. einen komfortablen Editor zum Eingeben seines Programmcodes, einen Compiler zum Übersetzen des Programmcodes in ausführbare Programme, einen Debugger für die Fehlersuche und weitere hilfreiche Tools.

 

Wie geht man an das Programmieren heran?

 

Es gibt zahlreiche Bücher sowie Tutorials im Netz, die mit vielen Beispielen ausgestattet sind. Am besten, man nimmt sich solch ein Buch oder Tutorial Stück für Stück vor und verändert oder erweitert die Beispiele nach eigenen Wünschen.

Zur Auswahl von Büchern findet sich unten weitere Info.

 

Was sollte ich als erstes programmieren?

 

Im Mittelpunkt steht die Idee des Programms: was soll eigentlich programmiert werden? Die konkrete Idee ist wesentlich wichtiger als die Frage nach der „besten“ Programmiersprache oder dem „richtigen“ Betriebssystem.

Womit soll man beginnen? Möchte man mit dem Erstlingswerk den professionellen Computersimulationen nacheifern? Oder sollte man nicht doch besser die Welt der Planetariumsprogramme revolutionieren? Gemach, gemach! Wenn man sich gleich zu Anfang eine zu schwierige Aufgabe wählt, sind Mißerfolge und Frustrationen unvermeidlich. Eine Software wie das beliebte Kartendruckprogramm Cartes du Ciel wurde zwar auch von einem einzigen Entwickler erstellt, jedoch setzt dies eine langjährige Praxis voraus. Ein realistisches Ziel muß also her.

Für sein erstes Projekt sollte daher unbedingt ein weniger komplexes Thema gewählt werden. Dies kann z.B. ein Be- und Umrechnungsprogramm mit Benutzeroberfläche sein. Auch Konverter zum Austausch von Daten zwischen verschiedenen Applikationen mit zueinander inkompatiblen Datenformaten sind ein dankbares Gebiet. Dies sind alles Aufgaben, an denen die Astronomie geradezu reichhaltig ist und die einem schon bald Erfolgserlebnisse bescheren.

 

Welche Tools brauche ich?

Die ersten Schritte – Sprache und Programmiertools

Es wurde oben bereits erwähnt, daß die Wahl der Entwicklungsumgebung bzw. der Programmiersprache weniger wichtig zu nehmen ist als das Ziel, das man vor Augen hat, nämlich das fertige Programm. Dennoch kommt man schon bald an diesen Punkt: nach welchen Kriterien sollte die Programmiersprache bzw. die Entwicklungsumgebung ausgewählt werden? [mehr…]

Die beste Programmiersprache, die schier alles kann, gibt es nicht. Stattdessen gibt es ein ganzes Bündel verschiedener Sprachen mit teils unterschiedlichen Ansätzen. Diese Sprachen haben durchaus ihre Berechtigung und zudem eine überzeugte Anhängerschaft. Eine kleine Übersicht soll hier gegeben werden. [mehr...]

 

Abbildung: Heutige Programmierwerkzeuge (Beispiel: MS Visual Studio) kommen meist als geschlossene Entwicklungsumgebung daher, die alle notwendigen Funktionen bereitstellt.

Wo bekomme ich Infos und Hilfe?

Das Programmieren ist weniger schwierig als es den Anschein hat. Die Gilde der Autoren von Programmierbüchern hat den Elfenbeinturm längst verlassen und ein breitgefächertes Literaturangebot hervorgebracht, welches alle Niveaus bedient und den Einstieg erheblich erleichtert. Man steht niemals allein da: im Netz kann auf jede Menge Ressourcen wie z.B. Online-Artikel oder Newsgroups zurückgegriffen werden. Es läßt sich nahezu jede Information bekommen, die man braucht. [mehr…]

 

Muß ich etwa erst viele Handbücher lesen?

Das A und O sind gute Bücher. Für den Beginn reicht eines vollkommen. Mit der Zeit entwickelt sich auch ein Gefühl dafür, welche Bücher einen weiterbringen. Wir empfehlen dringend, vor dem Kauf in Büchern zu stöbern. Auch sollte der Preis nicht die Hauptrolle spielen. Das teuerste Buch ist immer noch dasjenige, das seinen Zweck nicht erfüllt.

Speziell zu astronomischen Berechnungen gibt es einige hervorragende Werke, von denen hier nur eine Auswahl genannt wird [2-4].

 

Tips zum Programmieren

 

Es gibt ein paar Dinge, mit denen man sich beim Programmieren das Leben um einiges erleichtern kann. Die aufgeführten Punkte sind zum großen Teil Erfahrungswerte, die aus diversen Softwareprojekten hervorgegangen sind. [mehr…]

 

Auf welchen Gebieten der Astronomie kann man eigentlich programmieren?

 

Eigentlich in allen Bereichen der Astronomie:

  • Himmelsmechanik
  • Ephemeridenrechung
  • Astrooptik
  • Beobachtungsplanung
  • Bildbearbeitung
  • Fernrohrsteuerung
  • Meßwertaufnahme und –analyse.
  • u.v.m.

 

Objektorientierte Programmierung

Die objektorientierte Programmierung (OOP) hat sich in der heutigen Zeit zu einer bedeutsamen Technik des Programmierens entwickelt. Der Grundgedanke der OOP ist, die Dinge der realen Welt samt ihren Beziehungen zueinander in den Datenstrukturen eines Programm nachzubilden – die traditionelle prozedurale Programmierung leistet dies nicht. Der Vorteil der OOP ist, daß die Programme klarer strukturiert sind und leichter weiterentwickelt werden können.

Die OOP hat sich als sehr leistungsfähig erwiesen, vor allem bei Benutzeroberflächen. Viele Codebibliotheken sind objektorientiert gehalten.

 

Kleiner Tipp

Nutzen Sie die Möglichkeiten der Online-Hilfen, der Community und vor allem das Internet. Viele Dinge findet man durch bloßen Benutzen von Suchmaschinen heraus.

 

Ausblick

 

Mit den Fortschritten, die sich einstellen, tritt die Auseinandersetzung mit dem richtigen Gebrauch und Schreibweisen der Kommandos einer Programmiersprache zunehmend in den Hintergrund und man beginnt, sich mehr Gedanken über die Struktur seiner Programme, guten Stil, Effizienz, besondere Vorgehensweisen und Tools zu machen. Man bekommt außerdem ganz andere Perspektiven auf Projektorganisation und technische Zusammenhänge; eine ungemein wertvolle Erfahrung, die man ab einem gewissen Zeitpunkt auf keinen Fall mehr missen möchte. [mehr...]

 

Literatur

 

[1] Schäpers/Huttary, Entwicklungshilfe - Programmieren mit dem Visual Studio Express, c't 04-11/2006, online zu beziehen unter www.heise.de/kiosk/archiv/ct

[2] Meeus, Astronomical Algorithms, Atlantic Books, 2005

[3] Montenbruck, Pfleger, Astronomie mit dem Personal Computer, Springer, 2004

[4] Danby et al., Astrophysics Simulations, John Wiley Inc., 1995