die programmiersprache chill. gliederung entstehung und anwendungsgebiete elementare...

41
Die Programmierspra che CHILL

Upload: inglebert-schiermeyer

Post on 05-Apr-2015

105 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Die Programmiersprache CHILL. Gliederung Entstehung und Anwendungsgebiete Elementare Programmstrukturen Typkonzepte Globale Programmstrukturen Prozedurkonzepte

Die Programmiersprache CHILL

Page 2: Die Programmiersprache CHILL. Gliederung Entstehung und Anwendungsgebiete Elementare Programmstrukturen Typkonzepte Globale Programmstrukturen Prozedurkonzepte

Gliederung

Entstehung und Anwendungsgebiete Elementare Programmstrukturen Typkonzepte Globale Programmstrukturen Prozedurkonzepte Ausnahmebehandlung Nebenläufigkeit Beispiel Mergesort Literaturverzeichnis

Page 3: Die Programmiersprache CHILL. Gliederung Entstehung und Anwendungsgebiete Elementare Programmstrukturen Typkonzepte Globale Programmstrukturen Prozedurkonzepte

Entstehung

CHILL – CCITT High Level Language

CCITT Standardisierungskomitee von ITU(Internationaler Fernmeldeunion)

Page 4: Die Programmiersprache CHILL. Gliederung Entstehung und Anwendungsgebiete Elementare Programmstrukturen Typkonzepte Globale Programmstrukturen Prozedurkonzepte

Anwendungsgebiete

hauptsächlich in der Kommunikationstechnik angewandt (z.B. rechnergesteuerte Vermittlungssysteme)

1987 viele der größten Softwaresysteme im Bereich der Telekommunikation mit CHILL implementiert

keine kommerzielle Verbreitung (geringer Bekanntheitsgrad)

Page 5: Die Programmiersprache CHILL. Gliederung Entstehung und Anwendungsgebiete Elementare Programmstrukturen Typkonzepte Globale Programmstrukturen Prozedurkonzepte

Elementare Programmstrukturen

algol-60-ähnliche Sprache blockorientiert, streng typisiert große Sprache (bietet Konstrukte zur

Erstellung großer Softwaresysteme) Programme in Module und Blöcke

gegliedert

Page 6: Die Programmiersprache CHILL. Gliederung Entstehung und Anwendungsgebiete Elementare Programmstrukturen Typkonzepte Globale Programmstrukturen Prozedurkonzepte

BeispielBeispiel_1: MODULE DCL x,y INT, z ARRAY (1:10) INT; x:= 0; DO FOR i:= 1 TO 10; x:= x + i; inner: BEGIN DCL k INT := x + 2 * i; z(i) := k + x; END inner; OD; y:= x;

END Beispiel_1;

Page 7: Die Programmiersprache CHILL. Gliederung Entstehung und Anwendungsgebiete Elementare Programmstrukturen Typkonzepte Globale Programmstrukturen Prozedurkonzepte

Elementare Programmstrukturen

Sprung/Exitanweisung GOTO marke; Exit marke;

Bedingte Anweisungen IF condition THEN action1;...;FI; CASE ... OF(condition1) : action1;

(condition2) : action2;

ELSE : action3;

ESAC;

Page 8: Die Programmiersprache CHILL. Gliederung Entstehung und Anwendungsgebiete Elementare Programmstrukturen Typkonzepte Globale Programmstrukturen Prozedurkonzepte

Beispiele

DCL i,j INT := -5;

CASE i+12 OF

(1:25): j:= 0;i := 12;

(26): j:= 1;

ELSE j:=2; i+:=1;

ESAC;

DCL i,j INT:= -5;

CASE i,j OF (1:25), (5:17): j:= 0;i:= 12;

(ELSE), (9): j:= 1;(26), (*): j:=

2;i+:=12;(*), (ELSE):

ESAC;

Page 9: Die Programmiersprache CHILL. Gliederung Entstehung und Anwendungsgebiete Elementare Programmstrukturen Typkonzepte Globale Programmstrukturen Prozedurkonzepte

Elementare ProgrammstrukturenDCL

i,j INT,

a ARRAY (1:10) INT;

i := 1;

i,j := 2 * i + 1;

i +:= 1; entspricht i:=i + 1

i *:= j + i; entspricht i:=i * (j + i)

a := [1,2,3,4,5,6,7,8,9,0];

Page 10: Die Programmiersprache CHILL. Gliederung Entstehung und Anwendungsgebiete Elementare Programmstrukturen Typkonzepte Globale Programmstrukturen Prozedurkonzepte

Elementare Programmstrukturen

DO-Anweisung mit leerem Kontrollteilsimple_do: DO

i := i + 1;OD simple_do;

DO-Anweisung mit FOR-Kontrolle WHILE-Kontrolle WITH-Kontrolle

Page 11: Die Programmiersprache CHILL. Gliederung Entstehung und Anwendungsgebiete Elementare Programmstrukturen Typkonzepte Globale Programmstrukturen Prozedurkonzepte

Elementare Programmstrukturen

DO FOR i:= 100 BY 5 DOWN TO 25; ........ OD;

DO FOR EVER; ........ Kann nur durch Sprung oder Ausnahme- OD; Erzeugung verlassen werden

DCL a ARRAY (1:100) INT;

DO FOR x IN a; x:= 1; OD;

Page 12: Die Programmiersprache CHILL. Gliederung Entstehung und Anwendungsgebiete Elementare Programmstrukturen Typkonzepte Globale Programmstrukturen Prozedurkonzepte

Elementare Programmstrukturen

DCL rec STRUCT (x, y INT);

DO WITH rec;x :=1;y :=1;

OD;

Page 13: Die Programmiersprache CHILL. Gliederung Entstehung und Anwendungsgebiete Elementare Programmstrukturen Typkonzepte Globale Programmstrukturen Prozedurkonzepte

Typkonzepte

INT, CHAR, BOOL vordefiniert

Möglichkeit mit Konstruktor neue Modes (Datentypen) zu bilden

Page 14: Die Programmiersprache CHILL. Gliederung Entstehung und Anwendungsgebiete Elementare Programmstrukturen Typkonzepte Globale Programmstrukturen Prozedurkonzepte

Arten von Modes diskrete Modes Powerset-Modes zusammengesetzte Modes Referenzmodes Prozedurmodes Synchronisations- und Instanzmodes Ein-/Ausgabe-Modes

Page 15: Die Programmiersprache CHILL. Gliederung Entstehung und Anwendungsgebiete Elementare Programmstrukturen Typkonzepte Globale Programmstrukturen Prozedurkonzepte

Modedefinition

2 Arten : SYNMODE

NEWMODE

SYNMODE: - Die Namen der mit SYNMODE definierten MODES sind synonyme Benennungen des gleichen MODES. =>sind einander zuweisbar

NEWMODE:- NEWMODE definiert unterschiedliche MODES deren Werte nicht einander zuweisbar sind.

Page 16: Die Programmiersprache CHILL. Gliederung Entstehung und Anwendungsgebiete Elementare Programmstrukturen Typkonzepte Globale Programmstrukturen Prozedurkonzepte

BeispielTyp_Beispiel: MODULE

NEWMODE

X = CHAR,

Y = CHAR (10),

Z = ARRAY (1:10) BOOL;

U = STRUCT (s1 INT, s2 CHAR);

DCL

x X, y Y, z Z, u U;

x :='c';

y := 'skugkhegbp';

y(2) := 'a';

z(5:7) := [FALSE, TRUE, TRUE];

u.s1 := 4;

END Typ_Beispiel;

Page 17: Die Programmiersprache CHILL. Gliederung Entstehung und Anwendungsgebiete Elementare Programmstrukturen Typkonzepte Globale Programmstrukturen Prozedurkonzepte

Beispiel

NEWMODE

Dollar, Euro = INT;

DCL

a Dollar,

b Euro;

a := b; // nicht möglich

SYNMODE

Dollar, Euro = INT;

DCL

a Dollar,

b Euro;

a := b; // erlaubt

Page 18: Die Programmiersprache CHILL. Gliederung Entstehung und Anwendungsgebiete Elementare Programmstrukturen Typkonzepte Globale Programmstrukturen Prozedurkonzepte

Programmstruktur

Block Lebensdauer von einem im

Block definierten Element entspricht der Ausführzeit von diesem

im Block definierten Objekte sind außerhalb nicht sichtbar

wenn Objektnamen von außerhalb nicht überschrieben sind sie im Block sichtbar

Modulion ineinander schachtelbare

Einheiten haben keinen Einfluss auf die

Lebensdauer der in ihnen definierten Objekte

dienen zur Kontrolle von Sichtbarkeit von Objekten

globales Objekt nur sichtbar durch Anweisung

lokale Objekte nur nach außen durch Anweisung sichtbar

Page 19: Die Programmiersprache CHILL. Gliederung Entstehung und Anwendungsgebiete Elementare Programmstrukturen Typkonzepte Globale Programmstrukturen Prozedurkonzepte

Lebensdauer von Objekten Ein CHILL-Programm besteht aus mindestens einem Prozess, dem

IOP (imaginary outermost process).

Der IOP lebt so lange, bis das entsprechende CHILL-Programm abgearbeitet ist und alle benutzerdefinierten Prozesse beendet sind.

Die Lebensdauer der anderen Prozesse ist durch Ausführung der letzten oder der STOP-Anweisung begrenzt .

Jeder Prozess umfasst Anzahl von eine Blöcken. Betritt die Kontrolle eine Blockstruktur, so werden die darin deklarierten Speicherplätze von außen nach innen angelegt und ebenso wieder vernichtet.

Page 20: Die Programmiersprache CHILL. Gliederung Entstehung und Anwendungsgebiete Elementare Programmstrukturen Typkonzepte Globale Programmstrukturen Prozedurkonzepte

Lebensdauer von Objekten

Variablen mit STATIC-Attribut besitzen die Lebensdauer des IOP. Ihre Sichtbarkeit ergibt sich aus der Definitionsstelle.

Mittels INIT ist eine Lebenszeit-Initialisierung eines Speicherplatzes möglich. Er wird zu Beginn seiner Existenz mit einem konstanten Wert belegt.

Page 21: Die Programmiersprache CHILL. Gliederung Entstehung und Anwendungsgebiete Elementare Programmstrukturen Typkonzepte Globale Programmstrukturen Prozedurkonzepte

Beispiel

Zaehler: PROC (); DCL zaehler INT STATIC INIT := 0; zaehler +:= 1; IF zaehler = 10

THEN zaehler := 0; fertig := TRUE; FI;END Zaehler;

Zaehler: PROC(); DCL zaehler INT STATIC := 0; zaehler +:= 1; IF zaehler = 10 THEN

zaehler:= 0; fertig:= TRUE; FI;END Zaehler;

Page 22: Die Programmiersprache CHILL. Gliederung Entstehung und Anwendungsgebiete Elementare Programmstrukturen Typkonzepte Globale Programmstrukturen Prozedurkonzepte

Import Export bei Modulions Die Grenzen von Modulions können wie im folgendem Beispiel durch

GRANT (Export) und SIZE (Import) überwunden werden.

Trade: BEGIN DCL embargo INT; export: MODULE GRANT T_hide FORBID (s1); NEWMODE T_hide = STRUCT (s1, s2 : INT); DCL l_inside T_hide; l_inside := [1,2]; ......... END export; ......... import: MODULE SEIZE export ALL; END import; END Trade;

Page 23: Die Programmiersprache CHILL. Gliederung Entstehung und Anwendungsgebiete Elementare Programmstrukturen Typkonzepte Globale Programmstrukturen Prozedurkonzepte

Ausnahmebehandlung

CHILL bietet die Möglichkeit, den Eintritt einer unerwarteten Situation durch Auslösen einer benannten Ausnahme (Exception) zu signalisieren.

Das Ausnahmekonzept von CHILL sieht keine Rückkehr an die Stelle des Auftretens der Ausnahme vor.

Schlüsselwörter: p_name : PROC (...) EXCEPTIONS (ex1,..,exn); IF..THEN CAUSE ex1 ;FI; ON

(ex1,....,ex6): Aktion1; (ex7,....,exn): Aktion2; END ;

Page 24: Die Programmiersprache CHILL. Gliederung Entstehung und Anwendungsgebiete Elementare Programmstrukturen Typkonzepte Globale Programmstrukturen Prozedurkonzepte

Sprachdefinierte Ausnahmen

Verschiedene Aktionen können auch implizit Ausnahmen signalisieren.

Die durch CHILL definierten Ausnahmen werden durch die Verletzung einer dynamischen Bedingung erzeugt.

Vordefinierte Ausnahmen sind z.B.: OVERFLOW RANGEFAIL RECURSEFAIL

Page 25: Die Programmiersprache CHILL. Gliederung Entstehung und Anwendungsgebiete Elementare Programmstrukturen Typkonzepte Globale Programmstrukturen Prozedurkonzepte

Ausnahmebehandlung Beispiel

Sqrt: PROC (i INT) RETURNS (INT) EXCEPTIONS (bad_argument); IF i<0 THEN CAUSE bad_argument; FI; ........ END sqrt; ........ DCL y INT := -5; y := sqrt(y) ON( bad_argument) : y:=0; END;

Page 26: Die Programmiersprache CHILL. Gliederung Entstehung und Anwendungsgebiete Elementare Programmstrukturen Typkonzepte Globale Programmstrukturen Prozedurkonzepte

Prozedurkonzepte

IN CHILL wird im Allgemeinen zwischen Funktionsprozeduren (mit Rückgabewert)

und Prozeduren (ohne Rückgabewert) unterschieden.

Page 27: Die Programmiersprache CHILL. Gliederung Entstehung und Anwendungsgebiete Elementare Programmstrukturen Typkonzepte Globale Programmstrukturen Prozedurkonzepte

Resultat von Funktionsprozeduren

Die Resultatspezifikation wird im Prozedurkopf mittels RETURNS (MODE)vereinbart.

Der Wert der Funktionprozedur ergibt sich aus dem Ausdruck in der RETURN-Anweisung.Will man ein Ergebnis zwischenspeichern so kann dies mit RESULT geschehen.

Page 28: Die Programmiersprache CHILL. Gliederung Entstehung und Anwendungsgebiete Elementare Programmstrukturen Typkonzepte Globale Programmstrukturen Prozedurkonzepte

Parameterübergabe

• Werteübergabe

– IN-Parameter– INOUT-Parameter– OUT-Parameter

• Speicherplatzübergabe

Page 29: Die Programmiersprache CHILL. Gliederung Entstehung und Anwendungsgebiete Elementare Programmstrukturen Typkonzepte Globale Programmstrukturen Prozedurkonzepte

Beispiel

DCL a, b, c, d INT;

test: PROC (p1 INT IN, p2 INT OUT, p3 INT INOUT, p4 INT LOC);

p1 := p1 + 2;

p2 := 5;

p3 := p2 + 4;

p4 := p4 + p4;

END test;

a := 6; b := 77; c := 8; d := 4;

CALL test (a, b, c, d);

Speicherplatzbelegung nach Prozeduraufruf : a = 6, b = 5, c = 9, d = 8

Page 30: Die Programmiersprache CHILL. Gliederung Entstehung und Anwendungsgebiete Elementare Programmstrukturen Typkonzepte Globale Programmstrukturen Prozedurkonzepte

Prozedurattribute

• Generalität– SIMPLE

• rekursiv aufrufbar• nicht Prozedurmode

tauglich– GENERAL

• rekursiv aufrufbar• Prozedurmode tauglich

– INLINE• nicht rekursiv aufrufbar• nicht Prozedurmode

tauglich

• Rekursivität– RECURSIVE

Page 31: Die Programmiersprache CHILL. Gliederung Entstehung und Anwendungsgebiete Elementare Programmstrukturen Typkonzepte Globale Programmstrukturen Prozedurkonzepte

Prozeduren als Werte CHILL bietet die Möglichkeit einen Prozedurmode zu

definieren auf dessen Werten folgende Operationen zur Verfügung stehen: Test auf Gleichheit Zuweisung an Speicherplatz mit Prozedurmode Aufruf der durch den Prozedurwert bezeichneten Prozedur

Die Definition eines Prozedurmodes unterscheidet sich vom Kopf einer Prozedurdefinition nur in zwei Punkten: Die Parameterliste besteht nur aus Parameterspezifikationen Die Bennenung des Prozeduratributs entfällt (immer GENERAL)

Page 32: Die Programmiersprache CHILL. Gliederung Entstehung und Anwendungsgebiete Elementare Programmstrukturen Typkonzepte Globale Programmstrukturen Prozedurkonzepte

Prozeduren als Werte

SYNMODE T_procedure = PROC (INT IN, INT IN) RETURNS (BOOL);

DCL

l_procedure T_procedure,

flag BOOL;

less: PROC (x INT IN, y INT IN) RETURNS (BOOL) GENERAL;

RETURN x<y;

END less;

greater: PROC (a, b INT) RETURNS (BOOL) GENERAL;

RETURN a> b;

END greater;

l_procedure := less;

flag := l_procedure(13, 14);

flag := less(13, 14);

Page 33: Die Programmiersprache CHILL. Gliederung Entstehung und Anwendungsgebiete Elementare Programmstrukturen Typkonzepte Globale Programmstrukturen Prozedurkonzepte

Nebenläufigkeit und Prozesse

Formale Parameter eines Prozesses haben nur LOC oder IN Attribut

keine Prozesshierachien in CHILL Prozessdefinitionen in keiner Region oder

Block außer IOP

Page 34: Die Programmiersprache CHILL. Gliederung Entstehung und Anwendungsgebiete Elementare Programmstrukturen Typkonzepte Globale Programmstrukturen Prozedurkonzepte

Prozessinteraktion

Ereignisse - sind Synchronisationsmittel für Prozesse

Regionen - dienen zur exklusiven Datenverwaltung

Signale - Möglichkeit zur direkten und indirekten Kommunikation von Prozessen

Puffer - indirekte Kommunikation mittels Mailboxprinzip

Page 35: Die Programmiersprache CHILL. Gliederung Entstehung und Anwendungsgebiete Elementare Programmstrukturen Typkonzepte Globale Programmstrukturen Prozedurkonzepte

Prozesszustände

aktiv, unterbrochen, suspendiert, terminiert Synchronisations- und Kommunikationsaktionen

führen zu unterbrochenem Zustand suspendierte Prozess wartet darauf, besetzte

Region betreten zu können Prozess terminiert falls STOP-Anweisung

ausgeführt oder Ausnahme erzeugt Prozess kann nicht von anderem gestoppt

werden

Page 36: Die Programmiersprache CHILL. Gliederung Entstehung und Anwendungsgebiete Elementare Programmstrukturen Typkonzepte Globale Programmstrukturen Prozedurkonzepte

Prozessausführung

Scheduling nicht festgelegt durch Sprachdefinition

CHILL-Prozesse haben keine Prioritäten(Puffersignale und Eventvar. Besitzen diese)

Unterbrochenen Prozessen kann Priorität zugeordnet werden

Page 37: Die Programmiersprache CHILL. Gliederung Entstehung und Anwendungsgebiete Elementare Programmstrukturen Typkonzepte Globale Programmstrukturen Prozedurkonzepte

Beispiel

SIGNAL s = (CHAR) TO p;

p:PROCESS ();

....

END p;

p_instance := START p();

SEND s(`x`) TO p_instance;

Page 38: Die Programmiersprache CHILL. Gliederung Entstehung und Anwendungsgebiete Elementare Programmstrukturen Typkonzepte Globale Programmstrukturen Prozedurkonzepte

Listendefinition

NEWMODE

LIST = REF NODE,

NODE = STRUCT (head INT, tail LIST);

Page 39: Die Programmiersprache CHILL. Gliederung Entstehung und Anwendungsgebiete Elementare Programmstrukturen Typkonzepte Globale Programmstrukturen Prozedurkonzepte

mergesort: PROC ( list LIST) SIMPLE RECURSIVE RETURNS (LIST);

IF list = NULL THEN RETURN NULL;

ELSIF list->.tail = NULL THEN RESULT list;

ELSE

BEGIN

DCL

list1,list2 LIST := NULL,

remainder LIST:= list;

DO WHILE remainder /= NULL;

new LIST := ALLOCATE (NODE);

next LIST := remainder ->.tail;

new ->.head := remainder ->.head;

new ->.tail := list 1;

list1 := list2;

list2 := new;

TERMINATE (remainder);

remainder := next;

OD ;

RETURN merge(mergesort(list1),mergesort(list2))

END mergesort;

Page 40: Die Programmiersprache CHILL. Gliederung Entstehung und Anwendungsgebiete Elementare Programmstrukturen Typkonzepte Globale Programmstrukturen Prozedurkonzepte

merge: PROC (list1 LIST,list2 LIST) SIMPLE REKURSIVE RETURNS LIST;

IF list1 = NULL THEN RETURN list2;

ELSIF list2 = NULL THEN RETURN list1;

ELSE

IF list1->.head < list2->.head THEN

BEGIN

DCL result LIST := ALLOCATE(NODE);

result ->.head := list1 ->.head;

result ->.tail := merge(list1 ->.tail, list2);

TERMINATE (list1);

RETURN result;

END

ELSE

analog zu erstem Fall

FI

FI

END Merge;

Page 41: Die Programmiersprache CHILL. Gliederung Entstehung und Anwendungsgebiete Elementare Programmstrukturen Typkonzepte Globale Programmstrukturen Prozedurkonzepte

Literaturverzeichnis

Eine Einführung in die Programmiersprache CHILL

Lenzer/Th.Letschert/Lingen/Hollis

Hüthig Verlag