a short introduction to concurrent euclid. 1976 entwicklung von euclid 1976 entwicklung von euclid...

18
A SHORT INTRODUCTION TO A SHORT INTRODUCTION TO CONCURRENT EUCLID CONCURRENT EUCLID

Upload: sofie-meissner

Post on 06-Apr-2016

212 views

Category:

Documents


0 download

TRANSCRIPT

A SHORT INTRODUCTION TO A SHORT INTRODUCTION TO CONCURRENT EUCLIDCONCURRENT EUCLID

1976 Entwicklung von Euclid1976 Entwicklung von Euclid 1977 Entwicklung des „TORONTO 1977 Entwicklung des „TORONTO

Euclid“Euclid“ TUNISTUNIS I.P. SHARP AssociatesI.P. SHARP Associates USA Department of DefenseUSA Department of Defense Kanadisches Department of National Kanadisches Department of National

DefenseDefense 1980/81 1980/81 „Concurrent Euclid“ „Concurrent Euclid“

PDP-11PDP-11VAXVAXMotorola 68000Motorola 68000Motorola 6809Motorola 6809„„bare machines“bare machines“„„simulated modus“simulated modus“

Philosophie:Philosophie:

Soviele Fehler wie möglich finden!Soviele Fehler wie möglich finden! Durch Missbilligung gefährlicher oder Durch Missbilligung gefährlicher oder

unwahrscheinlichen Konstruktenunwahrscheinlichen Konstrukten

Vergleich mit PascalVergleich mit Pascal CE basiert auf PascalCE basiert auf Pascal Borgt sich Datenstrukturen von Borgt sich Datenstrukturen von

PascalPascal Eigenschaften werden von CE Eigenschaften werden von CE

„gereinigt“„gereinigt“ zB.:Funktionen mit Seiteneffekten zB.:Funktionen mit Seiteneffekten

werden missbilligt werden missbilligt

Die Haupteigenschaften ,welche Die Haupteigenschaften ,welche Concurrent Euclid Pascal Concurrent Euclid Pascal hinzufügt ,sind:hinzufügt ,sind:

Getrennte KompilationGetrennte Kompilation; Prozeduren ; Prozeduren Funktionen und Module können Funktionen und Module können seperat kompiliert und später seperat kompiliert und später zusammengelinkt werden. Unter Unix zusammengelinkt werden. Unter Unix nützen sie die standart Linker „ld“ nützen sie die standart Linker „ld“ und können einfach mit Programmen, und können einfach mit Programmen, welche z.B.: in C geschrieben wurden, welche z.B.: in C geschrieben wurden, zusammengeschlossen werden.zusammengeschlossen werden.

Module Module ; Ein Modul ist ein ; Ein Modul ist ein syntaktisches Packet von Daten syntaktisches Packet von Daten zusammen mit Prozeduren/ zusammen mit Prozeduren/ Funktionen welche auf Daten Funktionen welche auf Daten zugreifen. zugreifen.

Concurrency/Concurrency/ ParallelitätParallelität; ; Monitore und Prozesse werden Monitore und Prozesse werden unterstützt. Es gibt ein „signal“ unterstützt. Es gibt ein „signal“ Statement und ein „wait“ Statement und ein „wait“ Statement. Das „busy“ Statement Statement. Das „busy“ Statement erlaubt Concurrent Euclid wie eine erlaubt Concurrent Euclid wie eine Simulationssprache verwendet zu Simulationssprache verwendet zu werden.werden.

KontrollbereichKontrollbereich ; ; Namen von Namen von Variablen, Typen etc. sind nicht Variablen, Typen etc. sind nicht automatisch von Bereichen automatisch von Bereichen übernommen worden.Import und übernommen worden.Import und Export Listen werden verwendet um Export Listen werden verwendet um Namensbereich zu definierenNamensbereich zu definieren

Systemprogrammierende Systemprogrammierende KonstrukteKonstrukte ; ; Diese beinhalten Diese beinhalten Variablen mit absoluten Adressen. Variablen mit absoluten Adressen. Solche können Variablen Solche können Variablen Vorrichtungsregister in Computern Vorrichtungsregister in Computern mit Gedächtnisspeicher für mit Gedächtnisspeicher für „Input/Output“ sein.„Input/Output“ sein.

GrunddatentypenGrunddatentypen Name Name ValuesValues AllocationAllocation ShortIntShortInt 0...2550...255 (byte)(byte) SignedIntSignedInt -32768...32767-32768...32767(16-bit)(16-bit) UnsignedIntUnsignedInt 0...655350...65535 (16-bit)(16-bit) LongIntLongInt signed integersigned integer (32-bit)(32-bit) BooleanBoolean false..false...true.true (byte)(byte) CharChar a charactera character (byte)(byte) AddressTypeAddressType integerinteger (address size)(address size) PointerPointer addressaddress (address size)(address size)

Strukturierte DatentypenStrukturierte Datentypen

Arrays Arrays

RecordsRecords

SetsSets

Beispiel Array:Beispiel Array:

Var a : array 1...1 of SignedIntVar a : array 1...1 of SignedInt

Var str : packed array 1..5 of Var str : packed array 1..5 of Char :=‚Hello‘Char :=‚Hello‘

Var matrix : array 1...5 of Var matrix : array 1...5 of array1...5LongIntarray1...5LongInt

Beispiel recordBeispiel record::

Var r : Var r : recordrecord var status : booleanvar status : boolean var count : SignedIntvar count : SignedInt end recordend record

Beispiel Set :Beispiel Set :

var s : set of 0..2var s : set of 0..2

Re-entrant/einspringend ?Re-entrant/einspringend ?

Input/output nicht definiert?Input/output nicht definiert?

Monitors?Monitors?

Unter Unix verlinken?Unter Unix verlinken?

Ein Beispiel zum AbschlussEin Beispiel zum Abschluss var Example:var Example: module module include include ‘%IO1’‘%IO1’ { Print characters up to a period }{ Print characters up to a period } initiallyinitially imports( var IO )imports( var IO ) beginbegin var ch : Charvar ch : Char IO.PutString( ‘Test starts$N$E’ ) IO.PutString( ‘Test starts$N$E’ ) looploop IO.GetChar( ch ) IO.GetChar( ch ) IO.PutChar( ch )IO.PutChar( ch ) exit when ch = $.exit when ch = $. end loopend loop end { of initially }end { of initially }

end module end module