CAL (Programmiersprache) – Wikipedia

before-content-x4

CAL, kurz für Konversationsalgebraische Sprachewar eine Programmiersprache und ein System, die 1967 von Butler Lampson in Berkeley für den SDS 940-Großrechner entworfen und entwickelt wurden. CAL ist eine Version der wegweisenden JOSS-Sprache mit einer Reihe von Bereinigungen und neuen Funktionen, um die Vorteile der SDS-Plattform zu nutzen.

Das Berkeley SDS wurde für die Entwicklung der kommerziellen Time-Sharing-Plattform Tymshare verwendet, und 1969 wurde seinen Kunden eine verbesserte Version von CAL als Programmierumgebung angeboten. Obwohl CAL “fast keinen Nutzen” sah, wirkte es sich durch Beeinflussung nachhaltig aus das Design von Tymshare SUPER BASIC, das eine Reihe seiner Funktionen kopierte. Einige dieser Funktionen wurden wiederum in BASIC-PLUS auf dem PDP-11 angezeigt, dem direkten Vorfahren von Microsoft BASIC.[1]

Beschreibung[edit]

Grundlegendes Konzept[edit]

JOSS wurde entwickelt, um von Nicht-Programmierern der US Air Force und der Rand Corporation verwendet zu werden. Um dies zu unterstützen, entwarf Rand benutzerdefinierte Computerterminals, die einfacher einzurichten und zu verwenden waren. Diese Terminals, die auf der IBM Selectric-Schreibmaschine basieren, enthielten auch einen benutzerdefinierten Zeichensatz, der gängige mathematische Symbole wie z und .

CAL war zu einem großen Teil eine Version von JOSS, die diese Art von Anpassungen durch häufigere Lösungen wie z >= und # so konnten sie auf gemeinsamen Terminals laufen. Die anderen auffälligen Unterschiede bestanden darin, dass CAL im Gegensatz zur Satzschrift in JOSS nur in Großbuchstaben geschrieben war und kein Punkt am Ende der Zeile erforderlich war. Die Befehle waren ansonsten fast identisch und die Gesamtstruktur und Syntax gleich.

Wie bei JOSS verfügte CAL über eine interaktive Benutzeroberfläche, über die der Benutzer Anweisungen im “direkten Modus” eingeben oder Programme im “indirekten Modus” ausführen konnte. In BASIC wird Ersteres häufiger als “Sofortmodus” bezeichnet. Sowohl CAL als auch JOSS verwendeten eine zweiteilige Zeilennummer, die als Teil und Schritt bezeichnet wird und beispielsweise durch einen Punkt getrennt ist. 1.100 für Teil 1 Schritt 100. Teile wurden im Allgemeinen verwendet, um verwandte Anweisungen in Unterroutinen zu gruppieren. In CAL kann die Teilenummer zwischen 0 und 999999 und der Schritt zwischen 0 und 99999 liegen.

Es gab zwei Hauptversionen von CAL, die 1967 und 1969 veröffentlicht wurden. Die folgende Beschreibung basiert hauptsächlich auf der früheren Version, sofern nicht anders angegeben.

Sprünge und Unterprogramme[edit]

Wie in JOSS unterstützte CAL das TO Befehl zum Verzweigen zu einem bereitgestellten Teil oder Schritt, wie in TO PART 3 oder TO STEP 4.5, und DO für Unterprogrammaufrufe wie in DO PART 9 den gesamten Teil ausführen, oder DO STEP 5.1 um diesen einzelnen Schritt auszuführen und dann zurückzukehren. Die spätere Syntax war nützlich, wenn es viele kleine Unterprogramme gab, da sie in einer einzelnen Zeile ohne zugehörige implementiert werden konnten RETURN oder ähnliches Konzept.

Bedingte Verzweigung und Zuordnung[edit]

Eines der bemerkenswertesten syntaktischen Merkmale von JOSS war das Konzept der “Anweisungsmodifikatoren”, die den Betrieb anderer Anweisungen kontrollierten. JOSS verwendete dies für die bedingte Verzweigung.

In den meisten Sprachen würde man etwas schreiben, das den Effekt hat: “Wenn dieser Ausdruck wahr ist, dann mach das …”. In JOSS wurde diese Reihenfolge umgekehrt, und solche Aussagen hatten beispielsweise die Form “Tu dies, wenn dies wahr ist”. Type "HELLO" if X=5.. CAL fügte diesem Grundkonzept durch Hinzufügen des neuen Modifikators etwas syntaktischen Zucker hinzu UNLESS, was je nach Kontext zu offensichtlicherem Code führte; TYPE "IT IS NOT EQUAL TO FIVE" UNLESS X=5.

Wenn Sie also einer Variablen A den Wert 5 zuweisen, wenn der Wert von B größer als 10 und andernfalls 0 ist, lautet der Code:

Set A=5 if B>10.
Set A=0 if B<=10.

CAL unterstützte auch bedingte Ausdrücke:

A=IF B>10 THEN 5 ELSE 0

Eine ähnliche Modifikation war die WHERE Anweisung, die zum Festlegen von Variablen als Teil eines if oder for verwendet wird. Das Konzept ähnelte der if / then / else-Struktur, konnte jedoch eine beliebige Anzahl von Elementen enthalten. Zum Beispiel,=A*B WHERE A=B UNTIL A>20, WHERE A=1 UNTIL A>100.

Schleifen[edit]

Das Schleifen in JOSS wurde auch von einem Modifikator gesteuert, dem For. Dies verwendete eine etwas obskure Syntax; Type i for i=1(2)10. führt eine Schleife von 1 bis 10 schrittweise um 2 aus, sodass 1,3,5,7,9 gedruckt wird. Man könnte auch explizite Werte liefern, Type i for i=1,5,6,7,10.oder mischen Sie die beiden, Type i for i=1,5(1)7,10.

CAL verbesserte die Syntax von JOSS durch die Einführung von BY und TO Schlüsselwörter, also wäre der entsprechende Code in CAL TYPE I FOR I=1 BY 2 TO 10. In JOSS war die Klammer um den Schrittwert das Trennzeichen für die beiden Grenzwerte, sodass sie nicht optional gemacht werden konnte. Durch Abtrennen TO Die Grenzen wurden explizit und die BY wurde optional gemacht, als angenommen 1; TYPE I FOR I=1 TO 10. Wie bei JOSS können explizite Werte und Bereiche verwendet werden. TYPE I FOR I=1,5 TO7, 10. CAL hat die for-Schleife durch Hinzufügen von bedingten Exits unter Verwendung von weiter modifiziert WHILE und UNTIL. Zum Beispiel, TYPE A FOR A=1 BY 1 WHILE A<=50 oder TYPE B FOR B=1 UNTIL A=50.

Benutzerdefinierte Funktionen[edit]

Mit JOSS konnte der Benutzer Funktionen mit dem definieren Let Erklärung. Die Syntax ermöglichte die Benennung lokaler Variablen in der Funktionssignatur. Let F(X,Y)=X+Y. Programme könnten diese Funktionen dann so aufrufen, als wären sie eingebaut. Set A=F(1,5).

CAL geändert Let zu DEFINEDies ist viel offensichtlicher und hat eine geringfügigere Änderung vorgenommen. Die Parameter wurden in geschweiften Klammern anstelle von Klammern übergeben, sodass die äquivalente Definition lautet DEFINE F[X,Y]=X+Y und auf die gleiche Weise genannt, SET A=F[1,5].

Eine wichtigere Änderung an den Funktionen von CAL war die Möglichkeit, Unterprogramme aus den Definitionen mit aufzurufen TO, wie in DEFINE F(X,Y) : TO PART 5.[a] Dies führte zu dem Problem, den resultierenden berechneten Wert wieder der Funktion zuzuweisen, die mit der Einführung des RETURN Z Anweisung am Ende des Teils, wobei Z der endgültige Wert ist, der zurückgegeben werden soll.

Andere Änderungen[edit]

CAL enthielt die mathematischen Funktionen von JOSS, fügte jedoch eine Reihe neuer hinzu, darunter ABS, TAN, ATAN, und LOG10. Es wurde auch ein neuer Operator hinzugefügt: MOD, der den Rest einer Teilung seiner beiden Operanden zurückgab.

Direktmodus[edit]

CAL fügte eine kleine Anzahl von Direktmodusbefehlen und zugehörigen Anweisungen hinzu.

PAUSEWenn Sie in einem Programm angetroffen werden, drucken Sie die Meldung "PAUSED AT STEP 1.1" und kehren Sie dann in den Direktmodus zurück. Dies war ähnlich wie beim STOP Befehl in BASIC. Dies ermöglichte es dem Benutzer, Werte einzugeben und die Ausführung mit fortzusetzen GO. Im direkten Modus könnte der Benutzer STEP jeweils um eine Zeile, um die Ausführung des Programms zu verfolgen.

CAL hat JOSS 'geändert Let benutzerdefinierte Funktion zum etwas offensichtlicheren DEFINE, während auch die zu verwendende Parameterliste geändert wird [] Anstatt von (). In JOSS wurden diese normalerweise im Direktmodus gefunden, während sie in CAL nur im Direktmodus zulässig waren. Zum Beispiel könnte man DEFINE F[N]=PROD(I FOR I=1 TO N). Dieses Beispiel zeigt auch die Fähigkeit von JOSS, einen Schleifenbereich als Eingabe für eine Funktion zu verwenden. Im Gegensatz zu JOSS erlaubte CAL mehrstufige Funktionen, indem zusätzliche Anweisungen hinzugefügt wurden, die durch einen Doppelpunkt getrennt sind, z. DEFINE X[A,B,C] : DO PART 5. Beachten Sie, dass dieses Beispiel keinen Körper hat, sondern einfach c aufruft

Verbesserungen in CAL 1969[edit]

Eine geringfügige Änderung in der Version von 1969 war die Beseitigung der SET Befehl zur Variablenzuweisung. Dies war im Direktmodus in JOSS optional gewesen, war jedoch in Programmanweisungen erforderlich, und die CAL-Version von 1967 hatte diese Regel befolgt. Die Version von 1969 machte es in beiden Fällen optional.

  1. ^ Da DO normalerweise zum Aufrufen von Unterprogrammen verwendet wird, ist es nicht offensichtlich, warum sie in diesem Fall TO gewählt haben.

Verweise[edit]

Zitate[edit]

Literaturverzeichnis[edit]

after-content-x4