COBOL war eine der ersten Sprachen, die ich gelernt habe. Wenn Sie unzählige Versionen von Basic, drei oder vier Assemblersprachen und eine Variante von Forth ignorieren, war es eine meiner ersten fünf Sprachen und wurde gleichzeitig mit Pascal gelernt. IOW, ich antworte aus persönlicher Erfahrung mit der Sprache.
EDIT Ich sollte alte Erfahrung sagen . Ich habe die Sprache nach Ende der 80er Jahre nie mehr benutzt, obwohl ich ein neues Buch gekauft habe (als Ersatz für das alte, das ich angeworfen habe), damit ich mich auf etwas beziehen kann, damit meine Horrorgeschichten nicht zu verzerrt werden. Aber ich habe keine Ahnung, wie sich die Sprache in den letzten 20 Jahren entwickelt hat.
Offensichtlich ist für viele Menschen, es ist nur , dass sehen „alt schlecht ist“ , dass jonsca bereits beschrieben hat - und auch viel mehr ein dritte Hand Pass-me-down Haltung Sache. Aber es gibt echte Probleme, die dem zugrunde liegen.
Zu wortreich zu sein ist ein echtes Problem - es gibt zu viel Unordnung im Verständnis des Codes. Dies ist bei weitem das größte Problem. Personen , die sich dem Blick MOVE
, ADD
und MULTIPLY
usw. Aussagen entsetzt haben eine etwas übertriebene Sichts dieser Tatsache wahr - die COMPUTE
Erklärung zu den Aufgaben in anderen Sprachen näher ist. Aber in all diesen Abteilungen und Abteilungen herrscht immer noch viel Durcheinander. Eines der ersten Dinge, die ich in COBOL gelernt habe, war, immer eine A4-Standardseite mit SKELETON.COB zu kopieren.
COBOL hat einige interessante Funktionen, aber diese Funktionen (z. B. das PIC
Ding) sind in der Regel eher Teil des DBMS als der Programmiersprache, und dies scheint mir normalerweise ein besserer Weg zu sein, diese Verantwortlichkeiten zu trennen. Außerdem verwenden einige Bibliotheken in anderen Sprachen etwas Vergleichbares PIC
(z. B. printf und scanf in der C-Standardbibliothek). Wahrscheinlich wurde das Beste behalten, aber das Schlimmste ist gefallen.
Außerdem gab es für jedes nette Feature mindestens ein unerträgliches. Egal wie trivial eine Schleife ist, Sie müssen zum Beispiel den Körper in eine separate Prozedur verschieben. Die PERFORM ... UNTIL ...
und ähnliche Anweisungen sind einzelne Anweisungen - keine Blockstrukturen. In gewisser Weise war COBOL ein Vorgeschmack auf strukturierte Programmierung, bevor die strukturierte Programmierung erfunden wurde - es gab eine GO TO
, aber von deren Verwendung wurde abgeraten (zumindest, als ich COBOL verwendet habe), aber insbesondere das Schleifen wurde nicht so gut gehandhabt.
Tatsächlich war die Sprache, die ich nach COBOL am meisten erinnerte, ... dBase. Wie in Ashton-Tate dBase III +. Heutzutage erinnern sich die Leute eher an all die jetzt toten oder sterbenden Klone (Clipper, FoxPro usw.), die zu dem generischen Namen xBase geführt haben - und es gibt immer noch einen lebenden Nachkommen in xHarbour. Der Punkt ist, dass dies Datenbanksprachen waren, aber nichts wie SQL.
Selbst dann, wenn jedes COBOL-Programm, das mit einer bestimmten Datenbank arbeitet, eine Kopie der Spezifikation dieser Datenbank enthalten muss (und die Kopien möglicherweise inkonsistent sind), ist dies in xBase nicht wirklich der Fall, wenn die Datenbank ihre eigene Struktur kennt.
Unter Berücksichtigung dessen ist COBOL also nicht so schrecklich, wenn Sie es als das akzeptieren, was es ist. Was es aber nicht ist, ist eine Sprache zum Schreiben von Datenstrukturen. Das mag der Grund sein, warum COBOL in der Zeit der heiligen Kriege zwischen C und Pascal viel gelitten hat - beide Seiten waren sich einig, dass COBOL nicht gut war, um den Binärbaum noch einmal neu zu erfinden.
Oh - und eine Sache, die ich nie vergessen werde, ist, wie mein erstes COBOL-Lehrbuch den SORT
Befehl nicht beschrieb und sagte, dass er außerhalb des Geltungsbereichs des Buches lag - anscheinend konnte entweder der Autor die Idee des Sortierens nicht bewältigen oder hielt es für mehr, als die kleinen Köpfe der COBOL-Studenten verkraften konnten [siehe Bearbeiten am Ende]. So etwas machte es sehr schwer, COBOL ernst zu nehmen.
Ein merkwürdiger Aspekt dabei war Jackson Structured Programming, das ich ungefähr zur gleichen Zeit lernen musste, und zwar speziell für die Verwendung mit COBOL. Ein Teil davon war das Zeichnen eines Strukturdiagramms für die Eingabe, dann eines Strukturdiagramms für die Ausgabe und dann des dazwischen liegenden Strukturdiagramms für den Code. Die Sortierung sollte eindeutig ein bereits gelöstes Problem sein - Sie konnten auf diese Weise keinen Sortieralgorithmus ableiten. So war es seltsam, von dem empfohlenen Lehrbuch erzählt zu werden, dass das gesamte Konzept des Sortierens über meinen kleinen Verstand hinausging und gleichzeitig so etwas wie ein Dutzend verschiedener Sortieralgorithmen und deren Implementierung in Pascal unterrichtet wurde.
Die Probleme, mit denen JSP umgehen kann, sind wahrscheinlich ein guter Leitfaden für die Aufgaben, die COBOL relativ gut ausführen kann. Aber selbst dann bedeutet das nicht unbedingt, dass JSP oder COBOL eine gute Möglichkeit sind, diese Probleme zu lösen.
BEARBEITEN am 30. Juli 2014
Ich habe gerade einen Reputationsschub bekommen, der mich daran erinnert, dass es hier ist. Wie es passiert, kann ich jetzt aufgrund von nostalgischem Buchsammeln einen Punkt für den SORT
Befehl korrigieren .
Das Buch, das ich ursprünglich als empfohlenen Text beim Lernen von COBOL verwendet habe, war "Methodical Programming in COBOL" von Ray Welland. Dies gilt nicht für COBOL 85 (obwohl es eine spätere Ausgabe "Methodical Programming in COBOL-85" gab, die ich noch nie gesehen habe).
Kommentar darunter: "Sie sollten die Eingabedateien sortieren, bevor Sie sie lesen, oder die Ausgabedatei nach dem Generieren sortieren, indem Sie das mit dem Betriebssystem gelieferte Dienstprogramm sort verwenden." In meiner Antwort darauf habe ich den Punkt "Mit dem Betriebssystem gekommen" verpasst. Kindall schlug etwas vor, das der Unix-Philosophie AFAICT ähnelte, wobei COBOL für die Bits verwendet wurde, für die es gut ist, OS-Dienstprogramme, wie ein Sortierdienstprogramm, das für einige andere Dinge verwendet wird, und vermutlich eine Stapel- / Skript- / Shell-Sprache, um die Bits zusammenzukleben. Dies ist in einer antiken Welt, in der interaktive Software selten oder gar nicht vorhanden war, viel sinnvoller, sodass Sie ohnehin Stapel von Arbeiten einreichen würden (daher "Stapelsprache").
Folgendes wird ab Seite 165-166 von "Methodische Programmierung in COBOL" zitiert ...
Die Verwendung von geordneten seriellen Dateien setzt voraus, dass die Datensätze in einer Datei in einer bestimmten Reihenfolge nach Schlüssel sortiert werden können. Die meisten größeren Computersysteme verfügen über ein Sortierdienstprogramm, das eine Datei anhand der Position, des Typs und der Größe der einzelnen Datenelemente sortiert, die den Schlüssel bilden.
Es gibt auch eine Möglichkeit, Datensätze innerhalb eines COBOL-Programms zu sortieren. Dies würde jedoch aus zwei Gründen den Rahmen dieses Buches sprengen:
(a) Die Schnittstelle zum Betriebssystem ist häufig recht komplex und variiert von System zu System.
(b) Das Sortiermodul ist ein optionaler Bestandteil von ANS '74 COBOL und kann möglicherweise nicht in COBOL-Systemen für kleinere Computer implementiert werden.
Daher wird davon ausgegangen, dass Einrichtungen zum Sortieren von Dateien in einer bestimmten Reihenfolge vorhanden sind, und das Problem des Aktualisierens solcher Dateien wird in Betracht gezogen.
Kurz gesagt, irgendwie ist es richtig - die Annahme war, dass das Sortieren normalerweise außerhalb von COBOL erfolgen würde. Es mag sogar eine echte Rechtfertigung dafür gegeben haben, um 1974 das Sortieren von kleinen Computern aus einer Programmiersprache auszuschließen.
Was ich oben gesagt habe, ist im Grunde das, was man nach ungefähr 20 Jahren bekommt, wenn man Fakten nicht überprüfen kann, weil man das Buch weggeworfen hat.
Ich möchte jedoch noch darauf hinweisen, dass ich COBOL formell anhand dieses empfohlenen Buches studiert habe, das die Norm von 1974 (nicht die Norm von 1985) in den Jahren 1988 und 1989 abdeckte. Die dritte Ausgabe von "COBOL for Students" (Parkin, Yorke, Barnes) - Die erste Ausgabe von COBOL 85 - wurde erst 1990 veröffentlicht. Ich bin nicht sicher, aber ich denke, die COBOL 85-Ausgabe von "Methodical Programming" wurde erst 1994 veröffentlicht.
Aber das muss nicht unbedingt bedeuten, dass die COBOL-Welt auf den Beinen ist - na ja, sowieso nicht so sehr. Die Übernahme neuer Standards braucht Zeit für jede Sprache, auch jetzt noch.