Was ist COBOL? COBOL-Programmierung erklärt

Einige Technologien sterben nie - sie verschwinden einfach in der Holzarbeit. 

Fragen Sie den durchschnittlichen Softwareentwickler nach COBOL (Common Business Oriented Language) und er wird Sie so ansehen, als hätten Sie Kohlepapier, verbleites Benzin oder den Rekord von 78 U / min erwähnt. Im Vergleich zu modernen Sprachen wie Go oder Python - oder sogar Pascal oder C! - wirkt COBOL wortreich, klobig und passé.

Aber COBOL hat durchgehalten. COBOL ist keine veraltete Technologie, von der wir uns glücklich getrennt haben, sondern eine Institution. Auf der ganzen Welt werden immer noch massive COBOL-Codebasen verwendet, von denen viele fast genau so laufen, wie sie beim ersten Erstellen waren. Im Hollywood-Sprachgebrauch hat die COBOL-Sprache „Beine“.

Also, ja, COBOL ist immer noch relevant und aktuell - in der Tat schmerzhaft. In den letzten Monaten ist COBOL wieder in das öffentliche Bewusstsein getreten, da Staaten wie New Jersey Programmierer aufgefordert haben, ihre COBOL-Anwendungen in das 21. Jahrhundert zu verlagern.

In diesem Beitrag werden wir uns mit den Ursprüngen von COBOL befassen, wie sich das Design der Programmiersprache bis heute auszeichnet und was COBOL so dauerhaft und unlösbar macht.

COBOL Geschichte

COBOL entstand in den späten 1950er und frühen 1960er Jahren. Die Entwicklung der Sprache war ein Projekt, das vom US-Verteidigungsministerium (DoD) gesponsert wurde und an dem ein Konsortium von Computerunternehmen wie IBM, Honeywell, Sperry Rand und Burroughs teilnahm. Ziel war es, eine Programmiersprache mit folgenden Attributen zu erstellen:

  • Portabilität zwischen Computersystemen, wodurch die Migration von Software sowohl über Hardwaregenerationen als auch zwischen Hardwareherstellern erleichtert wird.
  • Mehr englischsprachige Syntax als in anderen Sprachen der Zeit (z. B. FORTRAN), um die Programmierung durch ein breiteres Publikum zu fördern, auch wenn dies auf Kosten einer gewissen Betriebsgeschwindigkeit geht.
  • Die Fähigkeit, zukünftige Änderungen an der Sprache zu berücksichtigen.

Die ersten offiziellen COBOL-Spezifikationen wurden 1960 veröffentlicht. Im Laufe des nächsten Jahrzehnts und zur Bestürzung seiner Kritiker wurde COBOL zur Standardauswahl für das Schreiben von Geschäftsanwendungen. Ein Grund für die schnelle Verbreitung waren Netzwerkeffekte: IBM, einer der ursprünglichen Mitarbeiter der Sprache, wurde zu einem aggressiven Early Adopter, und die dominierende Präsenz von IBM in der Computerwelt trug zur Einführung von COBOL bei.

Aufgrund seiner Designvorteile und der Unterstützung durch die Schwergewichtsindustrie hat sich COBOL durchgesetzt und die ursprünglichen Systeme, für die es entwickelt wurde, mit großem Abstand überlebt. Nach verschiedenen Schätzungen war COBOL 1970 die am weitesten verbreitete Programmiersprache der Welt. Bis 1997 lief COBOL vermutlich rund 80 Prozent der Geschäftsanwendungen.

COBOL Sprache

Die Designer von COBOL brachen damals mit der knappen Syntax anderer Programmiersprachen (wieder wie FORTRAN). Die Idee war, eine Programmiersprache zu schaffen, die von Nicht-Programmierern gelesen und verstanden werden kann, insbesondere von Buchhaltungs-, Finanz-, Versicherungs- und anderen Geschäftsfachleuten.

Stellen Sie sich ein „Hallo Welt“ -Programm vor, das in einem frühen COBOL-Dialekt geschrieben wurde:

IDENTIFIKATIONSABTEILUNG.

PROGRAMM-ID. HALLO WELT.

VERFAHRENSABTEILUNG.

ANZEIGE 'Hallo Welt!'.

END-DISPLAY.

STOP RUN.

Für moderne Softwareentwickler, die auf der Knappheit von Sprachen wie Python basieren, ist dieser Code ausführlich. Die Ausführlichkeit von COBOL (wenn nicht seine Ausführung) beruht jedoch auf derselben Einbildung, die moderne Sprachen wie Python informiert - dieser Code wird viel öfter gelesen als geschrieben, daher sollte er so geschrieben werden, dass er lesbar ist.

Ein ähnliches Programm in einer moderneren Version von COBOL könnte ungefähr so ​​aussehen:

Programm-ID. Hallo.

Verfahrensabteilung.

Anzeige "Hallo Welt!".

Stop Run.

Während dieses Beispiel prägnanter ist, gelten dieselben Grundprinzipien: Der Code ist bestrebt, explizit anzugeben, was bei jedem Schritt vor sich geht.

COBOL hat strenge Regeln bezüglich der Syntax und der internen Organisation von Programmen. Ein COBOL-Programm ist explizit in Abschnitte oder Abteilungen unterteilt , die das Auffinden und Verstehen seiner Komponenten auf einen Blick erleichtern:

  • Identifikationsabteilung: Im Wesentlichen ein Metadatenabschnitt, der Details zum Programm, seinem Autor usw. enthält.
  • Umgebungsabteilung: Enthält Details zur Laufzeitumgebung, z. B. Aliase für externe Geräte, die möglicherweise bearbeitet werden müssen, wenn das Programm auf einer anderen Hardware ausgeführt wird. Dies unterstützte die Portabilität eines Programms zwischen Systemen, bei denen beispielsweise E / A möglicherweise völlig anders gehandhabt werden.
  • Datenteilung: Containing  Datei und Arbeitsspeicherabschnitte, beschreibt die Datenteilung , die Dateien und Variablen (jeweils) im Programm verwendet.
  • Prozeduraufteilung: Hier befindet sich der eigentliche Programmcode, der in logische Einheiten unterteilt ist, die als Abschnitte, Absätze, Sätze und Anweisungen bezeichnet werden . Es ist verlockend, diese Strukturen mit Modulen oder Funktionen zu vergleichen, da sie ungefähr dieselben Funktionen erfüllen (Code in Blöcke mit eingeschränkten Ein- und Ausgängen unterteilen), aber weitaus weniger flexibel sind.

COBOL hat auch extrem strenge Formatierungsregeln für den Code, bis auf die Anzahl der Leerzeichen vor einem Befehl. (Python-Benutzer werden dies als vertraut empfinden!) Einige dieser Einschränkungen sind ein Nebenprodukt des COBOL-Erwachsenwerdens in der Mainframe-Ära der 1960er Jahre, als Programme auf Lochkarten codiert wurden und die genaue Formatierung von Zeilen mit 80 Spalten von Bedeutung war . Andere Formatierungsbeschränkungen erzwingen jedoch die Lesbarkeit.

Die Idee hinter der strengen Reglementierung von COBOL-Programmen ist es, sie so selbstdokumentierend wie möglich zu gestalten. Schließlich blieben die COBOL-Programme in der Regel jahrelang oder jahrzehntelang bestehen. Die Absicht (wenn nicht immer das Endergebnis) war es, jedes COBOL-Programm zu einem Artefakt zu machen, das jeder COBOL-Programmierer auch Jahre später ohne die Hilfe des Programmierers, der es erstellt hat, verstehen konnte. 

COBOL Herausforderungen

Ein Großteil der anhaltenden Verbreitung - und Trägheit - von COBOL beruht auf der Tatsache, dass COBOL-Anwendungen, sobald sie geschrieben wurden, mit nur geringfügigen Änderungen auf unbestimmte Zeit bestehen blieben. Je größer und unternehmenskritischer die App ist, desto weniger wahrscheinlich ist es, dass sie gestört wird. Mainframes spielten wie die Angebote von IBM eine Schlüsselrolle: Sie wurden so konzipiert, dass sie in hohem Maße abwärtskompatibel sind und Legacy-Software - wie COBOL-Apps - über Generationen von Hardware mit minimalen Änderungen ausführen können. Das Ergebnis: Milliarden von Zeilen COBOL-Code, die jahrzehntelang im Wesentlichen unverändert bleiben.

Im Laufe der Jahre hat sich COBOL , wenn auch langsam, weiterentwickelt. Es gibt sogar jetzt eine objektorientierte Variante, OO-COBOL, die moderne Funktionen wie Unicode, Gebietsschemas und erweiterte Datentypen über Zeichenfolgen und Ganzzahlen hinaus unterstützt. COBOL behält jedoch aggressiv die Abwärtskompatibilität bei, sodass auch diese Verbesserungen und Erweiterungen dem Mandat entsprechen, dass vorhandene COBOL-Anwendungen weiterhin ausgeführt werden müssen.

Nicht alle Sprachdesignoptionen von COBOL waren bei COBOL-Programmierern beliebt. Einige haben zu übermäßig komplexen Programmen geführt, die sich als schwer zu verstehen oder zu debuggen erwiesen haben und von Umschreibungen oder Verbesserungen abraten. Der GO TOBefehl von COBOL ermöglichte es Programmierern, wie sein Gegenstück in C, frei um ein Programm herumzuspringen und so leistungsfähigere Anwendungen zu schreiben. Eine undisziplinierte Verwendung von GO TOkönnte jedoch ein COBOL-Programm in ein Rattennest schwer nachvollziehbarer Querverweise verwandeln.

COBOL-Programmierung heute

COBOL überlebt heute in wenigen Inkarnationen. IBM verwaltet aktiv seine eigenen COBOL-Implementierungen und unterstützt viele vorhandene COBOL-Anwendungen, in denen sie ausgeführt werden. Micro Focus COBOL ist eine kommerzielle COBOL-Edition, die unter Microsoft Windows ausgeführt wird, COBOL-Anwendungen in Java und .NET kompiliert und sogar in Cloud-Umgebungen wie Azure bereitgestellt wird. Sie finden auch Open-Source-Implementierungen von COBOL wie GnuCOBOL, die frei verfügbar sind und zu nativem Maschinencode kompiliert werden. Möglicherweise fehlen ihnen jedoch einige der erweiterten Bereitstellungs- oder Debugging-Funktionen der kommerziellen COBOLs.

Während COBOL weiterhin weit verbreitet ist, wird es mit jedem Jahr schwieriger, tiefes COBOL-Know-how zu erlangen. Infolgedessen müssen viele ehemalige COBOL-Programmierer aus dem Ruhestand herausgeholt werden, um ältere Anwendungen ins 21. Jahrhundert zu führen. Oft sind nicht die Programmierkenntnisse von COBOL am wichtigsten, sondern das genaue Verständnis der Mainframe-Umgebungen, in denen COBOL ausgeführt wird. Viele COBOL-Anwendungen arbeiten Hand in Hand mit älteren Technologien wie IBMs IMS- und CICS-Transaktionsmanagement- und Datenbanksystemen, für die immer selteneres Fachwissen erforderlich ist.

So altmodisch COBOL auch sein mag, der Bedarf an COBOL-Fachkenntnissen in Bezug auf Sprache und Entwicklungsumgebung ist mit jedem Jahr gestiegen. Stellenangebote für COBOL und verwandte Fachkenntnisse gibt es zuhauf. Im März 2020 rief New Jersey die COBOL-Programmierer zu einem Notruf auf, um nach der COVID-19-Krise die staatlichen Systeme für Arbeitslosenunterstützung zu verbessern.

Lerne COBOL

Die Lernressourcen für COBOL nehmen angesichts der wachsenden Nachfrage nach der Sprache wieder zu. Moderne Entwickler, die sich mit dieser beständigsten Sprache vertraut machen möchten, haben einige Möglichkeiten:

  • Die Universität von Limerick in Irland bietet online einen vollständigen COBOL-Programmierkurs an, der vom Institut für Informatik und Informationssysteme zur Verfügung gestellt wird. Es ist nicht so aktuell wie einige andere Ressourcen, aber angesichts der geringen Änderungen von COBOL im Laufe der Zeit ist dies nicht unbedingt ein Defekt.
  • Das Open Mainframe-Projekt (Teil der Linux Foundation) bietet auch COBOL-Ressourcen. Einer ist ein vollständiger Kurs in COBOL-Programmierung, der von IBM mitgesponsert wird. Es ist moderner als der Kurs der University of Limerick und auf die zOS-Implementierung von COBOL von IBM zugeschnitten, einer weit verbreiteten Version der Sprache.

COBOL ist seit Jahrzehnten ein fester Bestandteil des Business Computing, und die Nachfrage nach COBOL-Programmiertalenten wächst weiter. Wenn Sie an der Pflege oder Modernisierung von COBOL-Programmen interessiert sind, scheint die Zeit reifer als je zuvor.