Institut für Informatik an der Universität Hamburg:

Der Arbeitsmarkt bestimmt die Programmiersprache

25.11.1977

HAMBURG (de) - Die derzeit angebotenen Programmiersprachen sind zu wenig dem zu bearbeitenden Problembereich angepaßt, schwer erlernbar und führen zu wenig überschaubaren Programmen, behauptet ketzerisch das Autorenteam Hans W. Heibey, Bernd Lutterbeck und Michael Töpel vom Institut für Informatik der Universität Hamburg in seinem Forschungsbericht "Auswirkungen der elektronischen Datenverarbeitung in Organisationen". Auf rund 330 Seiten setzt sich die vom Bundesminister für Forschung und Technologie geförderte Arbeit mit "negativen Folgen des Computereinsatzes" auseinander. Ein Gliederungspunkt behandelt "Probleme der Programmierung":

In der Praxis benutzt ein Anwender in der Regel nur eine Programmiersprache. Mit den bei einem Anwender gerade verfügbaren Programmiersprachen können bestimmte Probleme gar nicht oder nur mit unverhältnismäßig hohem Aufwand programmiert werden, da sie für solche Probleme nicht konzipiert sind. So ist es beispielsweise nur mit großem Aufwand möglich, mathematisch-technische Programme in Cobol oder kaufmännische Programme in Fortran zu kodieren. Demgegenüber spielen aus verschiedenen Gründen

- als "restringierte" (gestraffte) Sprache RPG (Äußerungen von Praktikern: "geringer Aufwand, übersichtlich"),

- als maschinenorientierte Sprache Assembler ("besserer Durchsatz, speicherplatzsparend") oder

- als komplexere, universelle Sprache PL/1 ("vielseitig, modern")

eine Rolle. Weiterhin spielt natürlich Cobol für kaufmännische Programmierung eine dominierende Rolle. Da eine spätere Umstellung von einer Programmiersprache auf eine andere aus finanziellen Gründen kaum möglich ist, finden sich die Rechenzentrumsleiter mit dem ab, was sie erhalten können und versuchen, eventuell durch eigene Erweiterungen oder Einschränkungen ein Gleichgewicht zwischen Problembezug und Komplexität wiederherzustellen. Kriterien für die Auswahl der Programmiersprachen sind häufig keineswegs die genannten Qualitätsmerkmale als vielmehr die Orientierung auf einen Hersteller oder die "Verfügbarkeit von Programmierern auf dem Arbeitsmarkt". Die Tendenz scheint dahin zu gehen, die komplexere Sprache PL/1 zu wählen, da man sich die Möglichkeit nicht nehmen will, später auftretende Problembereiche zu programmieren. Dafür nimmt man hohen Ausbildungsaufwand in Kauf.

Skepsis der Praktiker

In der Praktikerbefragung wurden als wichtigste "Tugenden" einer Programmiersprache die leichte Strukturierbarkeit, die Übersichtlichkeit und problemlose Änderbarkeit der Programme (Wartbarkeit) genannt, andererseits wird aber beklagt, daß diese Qualitäten meist nicht geboten werden. Diese mangelnde Übereinstimmung zwischen Wunsch und Wirklichkeit führt meist dazu, daß die Anwender zu verstärkter Eigenarbeit auch bei der Gestaltung ihrer Systeme übergehen, um ihre Vorstellungen bei der Programmgestaltung zu verwirklichen.

Die Beurteilung von angewendeten Programmierkonzepten reicht von "sehr gut!" bis "äußerste Skepsis" für den Einsatz des Normierten Programmierens. Die "strukturierte Programmierung" gewinnt an Bedeutung, ebenso werden "GOTO-freies Programmieren" oder "Top-Down-Programmierung" als wünschenswert erachtet.

Programmiersprachen sind wegen der Endlichkeit und der Universalität des Computers stets erforderlich - die "Programmierung" in formal nicht eingeschränkter natürlicher Sprache ist nicht möglich. Qualitätsmerkmale einer Programmiersprache sind

- optimale Speicherausnutzung der Programme

- geringe Laufzeit der Programme

- Problembezogenheit

- leichte Erlernbarkeit

- geringe Fehleranfälligkeit

- Wartbarkeit der Programme (Strukturierbarkeit, Kommentierbarkeit, Modularisierbarkeit).

Keine der angebotenen Sprachen genügt allen Kriterien, da diese sich zum Teil gegenseitig einschränken. Ein optimaler Kompromiß scheint noch nicht gefunden zu sein. Die beiden ersten Kriterien verlieren mit zunehmender Verbesserung des Preis-Leistungs-Verhältnisses für Hardware an Bedeutung.

Programmiersprachen und Programmierkonzepte, die in Zukunft wirtschaftlich eingesetzt werden sollen, haben folgende Kriterien zu erfüllen:

- Problembezogenheit

- leichte Erlernbarkeit

- geringe Fehleranfälligkeit

- leichte Wartbarkeit.

Die Berücksichtigung von Hardware-Restriktionen verliert an Bedeutung.

Das Kriterium "Wartbarkeit" wird heute von vielen Programmiersprachen, vor allem von den Algol-ähnlichen Sprachen (Algol 60/68, Pascal, PL/1), weitgehend erfüllt. Modernere Programmiersprachen sind bereits nach diesem Kriterium konzipiert. Die Realisierung dieser Forderung hängt aber auch vom Programmierer ab. Problembezogenheit und leichte Erlernbarkeit sind zusammen zu betrachten. Es zeichnen sich drei Möglichkeiten ab:

- Entwicklung von universellen Programmiersprachen für viele Problemkreise, die sich aber dem Sprachschatz und den Sprachgewohnheiten und den Problemstellungen des Programmierers stärker anpassen und so, trotz aller bei Universalsprachen unvermeidbarer Komplexität, relativ leichte Erlernbarkeit gewährleisten (Nachteil: hoher Implementationsaufwand, den sich erst durch die Entdeckung neuer Algorithmen reduzieren läßt).

- Parallel dazu könnte die Entwicklung kleiner, sehr einfacher, stark problemorientierter Programmiersprachen, die leicht erlernbar sind, bedeutsam werden (Nachteil: Organisationen benötigen eine Vielzahl solcher Sprachen).

- In Zukunft wären Systeme denkbar, die jedem Anwender ohne großen Aufwand die Entwicklung eigener problembezogener, "maßgeschneiderter" Programmiersprachen ermöglicht (erste Ansätze gibt es mit der Erforschung von Compiler-Compilern).

- Weitere Systeme, die Programme von einer Programmiersprache in eine andere übersetzen (Programmübersetzer), könnten Anwendern die Umstellung auf modernere, für ihre Anwendung günstigere Sprachen erleichtern.

Je weniger fehleranfällig die Programmierung in einer Programmiersprache ist, desto mehr reduzieren sich die Kosten für Software in dieser Sprache. Leichte Erlernbarkeit und gute Überschaubarkeit der Programmiersprache sind sicher Kriterien deren Erfüllung auch die Fehlerhäufigkeit einer Programmiersprache verringern kann. Ein anderer Grund für das Auftreten von zu vielen syntaktischen Programmierfehlern ist das Vorhandensein von Sprachelementen, die besonders leicht fehlerhaft gehandhabt werden. Da diese Sprachkonstrukte oft überflüssig oder nur von geringer Bedeutung sind, ist zu erwägen, sie aus der syntaktischen Definition zu entfernen. Existierende und zu entwickelnde Programmiersprachen sollten durch empirische Überprüfungen auf solche unnötigen Fehlerquellen hin untersucht werden und entsprechend abgeändert werden.

Quelle: BMFT-Forschungsbericht DV 77-01 "Auswirkungen der elektronischen Datenverarbeitung in Organisationen" von Hans W. Heibey, Bernd Lutterbeck, Michael Töpel; Institut für Informatik der Universität Hamburg.