Wertvolle Tips rund um das Programmieren und Vertiefungsthemen

 

Wenn Sie vielleicht schon seit einiger Zeit programmieren, dann kennen Sie bereits die meisten Kniffe Ihrer Sprache. An dieser Stelle sind Sie wahrlich kein Einsteiger des Programmierens mehr. Herzlichen Glückwunsch! Sie haben schon viel erreicht!

Sie werden sich dann vielleicht fragen: war’s das schon? Die meisten Elemente Ihrer Sprache sind Ihnen bekannt oder können jederzeit in der Hilfe nachgeschlagen werden (niemand erwartet ernsthaft, alles auswendig zu wissen!). Mit diesem Wissen ausgestattet sind Sie ohne weiteres in der Lage, leistungsstarke Astronomieprogramme zu erstellen. Dennoch bietet die Welt des Programmierens sehr viel Interessantes, was über die Details der Programmiersyntax hinausgeht und die Dinge von einer anderen Ebene, der Designebene, betrachtet.

Unser Ziel ist es, Ihnen einen Leitfaden in die Hand zu geben, in welche Richtung man weiter recherchieren könnte und auf welche Punkte es sich besonders zu achten lohnt. Mit Hilfe dieser Tips können Sie Ihre eigenen Programme fehlerfreier und robuster machen, sie mit ungeahnten Funktionen ausstatten oder sich sogar eine ganze Menge Arbeit ersparen!

Wie vermeide ich ganz allgemein Programmierfehler?

 

Access Violations und ähnliche Fehlermeldungen sind unschön, besonders dann, wenn sie in den eigenen Programmen auftreten. Ebenso kann man sich das Erweitern seines Programms unnötig selbst verbauen. Dabei gibt es einiges an Handwerkszeug, das von findigen Programmieren zusammengestellt wurde, die einem das Leben leichter machen können. Es ist möglich, solche Fehler zu 80 bis 90% (!) allein durch die Aneignung bestimmter Programmiertechniken von vornherein zu vermeiden! [mehr…]

 

Warum das Rad neu erfinden?

 

Häufig hat man es mit Aufgabenstellungen zu tun, die anderen Programmierern seit Jahren ebenfalls begegnet sind. Weshalb sollte man das Rad neu erfinden, wenn andere Entwickler so freundlich waren, ihre Lösungen in Form von Programmcode ins Netz zu stellen?

Ganz gleich, ob man Bilder exportieren, Office-Dokumente erstellen oder leistungsfähige Grafikroutinen nutzen möchte – für viele wiederkehrende Aufgaben finden sich hervorragende Codebibliotheken, die einem erhebliche Arbeit abnehmen können. Auf der anderen Seite kann man mit den Codebibliotheken eigene Programme mit professioneller Funktionalität ausstatten und so mehr Attraktivität verleihen. [mehr…]

Archiv des Zirkulars


Im Rahmen der Mailingliste der Fachgruppe werden in unregelmäßigen Abständen Zirkulare verschickt. Diese enthalten zahlreiche nützliche Tips und Infos zur Programmierung und Algorithmen. Sämtliche bislang erschienenen Ausgaben wurden an dieser Stelle archiviert. [mehr…]

 

Goldene Regeln für die Programmierung astronomischer Problemstellungen

 

Eine häufige Fehlerquelle beim Erstellen astronomischer Software ist z.B. die uneinheitliche Verwendung von Maßeinheiten. Dies ist sicherlich nur ein herausgegriffenes Beispiel, aber beim Betreiben einer Fehleranalyse wird man feststellen, daß man stets mit dieselben Fehlertypen konfrontiert wird. Aus diesem Grund sind hier ein paar Goldene Regeln für die Programmierung zusammengestellt. Sie sollen es dem Programmierer ermöglichen, Code zu schreiben, der weniger fehleranfällig, leichter zu warten und erweiterbar ist. Wir beschränken uns auf Hinweise mit ausdrücklichem Bezug auf die Programmierung astronomischer Problemstellungen. [mehr…]

 

Softwaredesign


Softwaredesign ist die Kunst, den Quelltext einer Anwendung geschickt zu strukturieren. Ziel der Strukturierung ist es, die Erstellung, Pflege und Erweiterbarkeit von Software zu verbessern. Bei 500 Zeilen Quelltext ist gutes Softwaredesign sicherlich nicht wichtig, aber für größere Projekte werden hier einige der wichtigsten Elemente kurz vorgestellt. [mehr…]

 

Wann kann ich endlich mit dem Programmieren beginnen?


Der günstigste Zeitpunkt, mit dem Programmieren zu starten, ist, wenn sich das Softwaremodell kaum noch ändert, also wenn es einen gewissen Reifegrad erlangt hat. Das heißt allerdings nicht, dass das Modell schon in Stein gemeißelt ist – es kann sich immer noch ändern.

Für weitere Information sei an die Literatur verwiesen.

Entwurfsmuster


Entwurfsmuster (oder auch Design Patterns) sind praxisbewährte Standardlösungen für wiederkehrende Aufgabenstellungen der Softwareentwicklung. Sie beinhalten meist textuelle Anweisungen zur Implementierung eines Teilproblems, für welches man ein Entwurfsmuster als passend identifiziert hat. Der Vorteil der Anwendung eines Entwurfsmusters ist, daß man von der Erfahrung anderer Programmierer profitieren kann, da Entwurfsmuster robust sind, d.h. oftmals schon Lösungen mitbringen für Effekte oder Unwägbarkeiten, an die der anwendende Programmierer vielleicht noch gar nicht gedacht hatte, als er auf das Problem stieß.

Teile und herrsche

 

ist ein gängiges Prinzip, bei dem ein zu schwierig erscheinendes Problem solange in mehrere kleinere Probleme zerteilt wird, bis die Teilprobleme leichter zu lösen sind. Dieses Prinzip ist auf beinahe alle Problemfälle anwendbar.

Falls Sie ein größeres Softwareprojekt in Angriff nehmen und darin Neuland betreten, so hoffen wir, mit obenstehenden Punkten einige wichtige Hinweise gegeben zu haben und dass Sie mit dem notwendigen Handwerkszeug ausgestattet sind. Falls sich bzgl. dieser Tipps oder auch in anderer Hinsicht Fragen ergeben, so zögern Sie nicht, sich mit uns in Verbindung zu setzen.

Abbildung: Mit dem Prinzip des "Teile und Herrsche" läßt sich ein komplexes Problem in mehrere kleinere, aber dafür einfachere Probleme zerlegen. Häufig ist dies eine außerordentlich erfolgreiche Vorgehensweise zum Bewältigen einer Aufgabe.

Literatur und Linklisten

 

Wie vermeide ich ganz allgemein Programmierfehler:

 

•  Clean Code Developer - Praktischer Leitfaden für robusten und wartungsfähigen Code

•  Kernighan/Pike: Programmierpraxis (Addison-Wesley, 2000) -
Gibt sehr viele Hinweise zur Vermeidung logischer Programmierfehler und zum "guten Stil".

•  Scott Myers: Effective C++ und More Effective C++ - Für C++ wärmstens zu empfehlen.

•  C++ portability guide - Eine Zusammenstellung von Richtlinien für C++ mit der Intention der Portierung auf möglichst viele Maschinen

•  C++ language coding guidelines - Richtlinien für C++ mit Schwerpunkt auf Lesbarkeit

•  Tips for maintainable Java code - Richtlinien für Java unter Design-Gesichtspunkten mit einigen hintergründigen Kommentaren

•  Code conventions for the Java programming language - Enthält allgemeine Codierkonventionen für Java

 

Entwurfsmuster:


Thinking in patterns

Gamma et al: Entwurfsmuster

Freeman et al: Entwurfsmuster von Kopf bis Fuß



Software zuerst modellieren, dann implementieren:


Oestereich, Analyse und Design in UML 2



Model-View-Controller


http://de.wikipedia.org/wiki/MVC

http://www.dpunkt.de/java/Programmieren_mit_Java/Oberflaechenprogrammierung/40.html



Schichtenmodell:


http://de.wikipedia.org/wiki/Schichtenmodell