Der ewige Kampf gegen Redundanzen

Array-Initialisierung

Selbst wenn es für Array-Dimensionierung ab Pascal eine flexible Lösung gab, blieb redundanzfreie Initialisierung noch ein Problem. Als Beispiel wollen wir einen Array in Pascal deklarieren, der Codes für zulässige Aktionen enthält. Selbst in modernem GNU-Pascal muss die Array-Größe angegeben werden: VAR actions: ARRAY[1..3] OF char = (‚G‘,’P‘,’D‘); Die Größe ist aber redundant gegenüber der Anzahl der Initialisierungselemente. Je mehr actions man benötigt, desto schwieriger wird das manuelle Abzählen. C führte es ein, Array-Größen aus der Länge der Initialisierungsliste abzuleiten: static const char actions[] = {‚G‘,’P‘,’D‘};. Java übernahm diese praktische Eigenschaft.

Zusammenfassung und Ausblick

Die frühen höheren Programmiersprachen führten die Möglichkeit der Redundanzvermeidung durch Auslagerung, Parametrierung und Benennung eines wiederkehrenden Codeteils ein. Solche Codeteile konnten sein: Adressen, Werte, Größenangaben und Anweisungsfolgen. Manche Codemuster wurden durch syntaktische Einheiten der Programmiersprache aufgerufen (z. B. Schleifen). Im besseren Fall konnte der Programmierer ein Codemuster mit einem frei wählbaren Namen versehen. Wenn eine Programmiersprache Redundanzen besser als eine Konkurrenzsprache beseitigen konnte, war das ein wesentlicher Pluspunkt im Kampf um Verbreitung. Im zweiten Teil dieser Serie werden wir uns mit den moderneren Techniken Information Hiding, Generizität, Ausnahmebehandlung, objektorientierter, aspektorientierter und funktionaler Programmierung sowie relationalen Datenbanken und wie diese zur Redundanzvermeidung beitragen befassen.

Christoph Knabe lernte als Schüler auf einer ausrangierten Zuse 22 das Programmieren, studierte ab 1972 Informatik, arbeitete ab 1981 als Softwareentwickler bei PSI und seit 1990 als Professor für Softwaretechnik an der Beuth-Hochschule Berlin, vormals TFH. Scala ist seine 14. Sprache, in der er viel programmiert hat.
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.