Programmier-Projekte

P

Programmieren ist eine erstaunliche Tätigkeit, wie ich finde, besonders Objektorientierte Programmierung (OOP). Wer nicht programmiert, mag denken, dass man hierbei so lange irgendwelche Sachen bastelt oder ausprobiert, bis der Computer endlich verstanden hat, was man will, aber das Interessante am Programmieren ist die erforderliche Vorausplanung und Zielstrebigkeit (Algorithmendenken) sowie bei OOP (im Gegensatz zu prozeduraler Programmierung) die Abbildung der wirklichen Welt auf ein Programm.
Ich persönlich entwickle Anwendungen in erster Linie, um mir Arbeiten oder Verwaltungsaufwand zu ersparen. Aber ich denke auch, dass Programme fast so etwas sind wie eine Form, sich auszudrücken, als wenn man eine Hochzeit plant oder ein Kind erzieht. Programmieren ist eine Welt, in die man eintauchen kann. Dieselben Ergebnisse können mit ganz unterschiedlichem Code erzeugt werden, so dass tatsächlich Spielraum bleibt, kreativ zu sein.

Programmieren an sich

Als ich angefangen habe, mit einer ernstzunehmenden Sprache (damals C++) zu programmieren, habe ich in irgendeinem Forum gelesen, dass das Erlernen einer Programmiersprache (die Syntax, also die einzelnen Befehle und ihre Anordnung) gar nicht so entscheidend sei, vielmehr müsste man das Konzept des Programmierens verstehen. Ich konnte zu dem Zeitpunkt mit dieser Aussage gar nichts anfangen, schließlich gibt es tausende von Befehlen, die man erstmal lernen muss, und das ist ein unheimlicher Aufwand. Das ist so, als wenn einem jemand sagt, dass es gar nicht so wichtig ist, beim Chinesisch-Lernen die ganzen Wörter und Zeichen zu erlernen, vielmehr ginge es darum, was Sprache überhaupt ist und inwiefern Chinesisch eine spezielle Manifestation der Entität "Sprache" ist.
Später habe ich verstanden, was damit gemeint war - wer OOP lernt, kann eigentlich gar nicht anders. Ob ich nun angefangen hätte, Java oder C oder Delphi zu programmieren, die alle natürlich andere "Wörter", also eine andere Syntax haben - ich hätte letztlich in gewisser Weise einen Haufen Dinge gelernt, die bei allen Sprachen gleich oder ähnlich sind. Ein Java-Objekt ist dasselbe wie ein C#-Objekt, zumindest für den Programmierer. Eine Funktion ist eine Funktion, und welchen genauen Befehl und Datentyp ich verwenden muss, um einen Timer zu starten, ist letztlich nachrangig. Lernen muss ich es natürlich trotzdem.

Objektorientierte Programmierung

OOP ist eine faszinierende Weise, die wirkliche Welt in Programmen abzubilden, also ein Modell der Welt zu erschaffen. Wenn ich z.B. einen Hund simulieren möchte, werde ich ein Objekt "Hund" erstellen. Objekte verfügen über Methoden (Fähigkeiten) und Attribute (Daten). Ein Hund hat zum Beispiel eine Fellfarbe (Attribut) und kann bellen (Methode). Objekte bestehen aus Dingen, die eine Entität hat (Attribute) und die eine Entität macht (Methoden).
Soll mein Hund mit dem Schwanz wedeln können, braucht das Objekt dafür eine Methode. Ist sein Alter irgendwann relevant, werde ich ein Attribut "Alter" anlegen. Wenn man darüber nachdenkt, ist ein Hund eigentlich nicht viel mehr als ein Ding, das über bestimmte Eigenschaften (Attribute) und Fähigkeiten (Methoden) verfügt.
Das unglaublich praktische an Objekten ist, dass ich aus einem Objekt (Hund) nun beliebig viele Instanzen (z.B. Waldi und Wuffi) erzeugen kann. Waldi ist zwei Jahre älter als Wuffi, dafür kann Wuffi lauter bellen und wedelt schneller mit dem Schwanz. Wer sich genau überlegt, welche Objekte er für sein Programm braucht und wie sie aussehen sollen, kann mit OOP sehr schnell sehr viel schaffen.

Abbilden der Wirklichkeit

Bei jeder komplexeren Anwendung, die ich schreibe, sehe ich es als Herausforderung an, sowohl im Code selbst (z.B. Klassen und Funktionen) als auch gegebenenfalls bei der Konzeptionierung von Datenbanken die Wirklichkeit so gut wie möglich in der Anwendung abzubilden, wobei ich gleichzeitig darauf Wert lege, die Anwendung so wandlungsfähig und einfach zu halten, wie es eben geht. Speziell beim Datenbankdesign muss man in dieser Hinsicht sehr sorgfältig sein, und diese Sorgfalt, diese Beobachtung der Realität, diese Analyse und Kategorisierung der Welt gefällt mir. Nicht weil ich die Wirklichkeit so unter meine Kontrolle bringe, sondern weil ich mehr über sie erfahre. Weil ich herausfinde, welche Dinge zusammengehören und zwischen welchen man unterscheiden muss, welche Informationen eindeutig zuzuordnen sind und welche komplexere Beziehungen beinhalten.

Sprachen, die ich verwende

Bisher habe ich die folgenden Sprachen verwendet:

BASIC-Derivate
C++
C#
CSS
HTML
Javascript
PHP+MySQL

Außerdem habe ich natürlich in diverse Scriptsprachen wie Flash-Actionscript, TYPO-Script oder CS-Adminmod hineingeschnuppert.
Zur Zeit lerne ich gerade Python und bin bislang einigermaßen angetan.

Pandorama