Melden Sie sich hier an, um auf Kommentare und die Whitepaper-Datenbank zugreifen zu können.

Kein Log-In? Dann jetzt kostenlos registrieren.

Falls Sie Ihr Passwort vergessen haben, können Sie es hier per E-Mail anfordern.

Der Zugang zur Reseller Only!-Community ist registrierten Fachhändlern, Systemhäusern und Dienstleistern vorbehalten.

Registrieren Sie sich hier, um Zugang zu diesem Bereich zu beantragen. Die Freigabe Ihres Zugangs erfolgt nach Prüfung Ihrer Anmeldung durch die Redaktion.

12.04.1991

Schnelle Programme sind nicht die Folge kurzer C-Statements

Betrifft den Leserbrief von Frank Berger in CW Nr. 10 vom 1. März 1991, Seite 11: "C-Anwender: Viele Argumente zugunsten von Cobol ziehen nicht", zu dem Schwerpunktbeitrag von Hagen Cyrus in CW Nr. 1 vom 4. Januar 1991, Seite 22: "Ein Sprachvergleich: Cobol oder C - das ist die Frage"

Eine Erwiderung von Hagen Cyrus*

In dem Artikel von Herrn Berger fühle ich mich direkt angesprochen. Ich habe allen Interessierten eine Diskette mit Quellcode und ausführbarem Code zur Verfügung gestellt. Herr Berger hat davon keinen Gebrauch gemacht. Statt dessen stellt er unsachliche Behauptungen, eingeleitet mit "möglicherweise" oder "vielleicht", in den Raum.

Es ist eine grundlose Unterstellung, daß die Benchmark-Programme, die die Laufzeit von Kontrollogik oder Arithmetik messen, irgendwelche BIOS-Routinen oder direkte Schreiboperationen in den Bildschirmspeicher enthalten. Qualitätsmerkmale wie Laufzeit, Speicherbedarf, Entwicklungszeit etc. lassen sich messen. Natürlich sind die Benchmark-Programme klein und spezifisch, sie haben deshalb auch keine repräsentative Aussagekraft. Sie sind aber in angemessener Zeit im Quellcode erstellbar und nachvollziehbar. Man kann jedoch auch bei sehr komplexen Funktionen die Sprachen Cobol und C miteinander vergleichen.

Komplex sind zweifellos die Compiler selbst. Realia Cobol ist in Realia Cobol und Microsoft-C ist in Microsoft-C geschrieben. Für Compile und Link der Benchmark-Programme benötigt Cobol 16 Sekunden und C 110 Sekunden. Die erzeugten Exe-Dateien sind bei Cobol 63 KB und bei C 80 KB groß. Der Quellcode umfaßt bei Cobol 1950, und in C 750 Zeilen. Mit anderen Worten: Obwohl der Cobol-Compiler einen mehr als doppelt so langen Quellcode verarbeiten muß, ist er wesentlich früher mit seiner Arbeit fertig. Außerdem ist der ausführbare Code kürzer als bei C und kann schneller abgearbeitet werden.

Da der Cobol-Compiler in Cobol geschrieben wurde, ist hiermit auch der Beweis erbracht, daß komplexe Probleme mit sehr hoher Effizienz in Cobol gelöst werden können. Der Programmierer muß allerdings sehr viel mehr schreiben. Die besonders kurzen Statements von C verleiten zu der Annahme, die Sprache sei besonders schnell.

Wenn für C Toolboxes herangezogen werden, sollte man fairerweise auch sprachliche Erweiterungen für Cobol nennen. Die dynamische Zuweisung von Speicher kann zum Beispiel im Cobol-Programm mit EXEC CICS GETMAIN ausgedruckt werden. Die bei C hervorgehobenen Zeiger sind bei IBM VS Cobol II und Realia Cobol mit USAGE POINTER und ADDRESS OF implementiert. Die Rekursivität ist sogar im allgemeinen ANSI-85-Standard vorgegeben: PROGRAM-ID.prog RECURSIVE.

Die Programmiersprachen sind unschuldig. Sie können nichts dafür, wenn sie als Compiler, Precompiler oder Interpreter mehr oder weniger gut beziehungsweise schlecht implementiert werden. Die Programmierer kritisieren oder loben die ihnen bekannten Implementationen, nicht die (abstrakte) Sprache selbst. Der Cobol-Kritiker mag zwar (bei seiner oberflächlichen Betrachtung) keine sprachliche Verwandtschaft zu C erkennen, doch eine tiefergehende Betrachtung bestätigt die Verwandtschaft, zum Beispiel die syntaktischen Eigentümlichkeiten wie ";;" als Vergleichsoperator, DEFINE etc.

Der Versuch, dem Cobol-Befürworter die fachliche Kompetenz abzusprechen, erweist sich als Eigentor. "Miterfinder" des von dem Autoren angeführten Ratfor ist nämlich der C-Spezialist Kernighan.

Nochmals: Zur Versachlichung und Objektivierung biete ich jedem Interessenten die Benchmark-Programme an und bitte um einen frankierten Rückumschlag.