Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

A programming language

Ähnliche Präsentationen


Präsentation zum Thema: "A programming language"—  Präsentation transkript:

1 A programming language
APL A programming language Maria Heym

2 Proseminar "Vergleich von Programmiersprachen"
APL A double-decker bus. Its takes rows and columns of passengers to the same place all at the same time. But, it drives only in reverse gear, and is instrumented in Greek. [5] Sie schießen sich in den Fuß und verbringen den ganzen Tag damit raus zukriegen, wie sie das mit weniger Buchstaben schaffen können. [6] Proseminar "Vergleich von Programmiersprachen"

3 Proseminar "Vergleich von Programmiersprachen"
Besonderheiten Zeichensatz Mächtigkeit Abarbeitungsreihenfolge Proseminar "Vergleich von Programmiersprachen"

4 Proseminar "Vergleich von Programmiersprachen"
Gliederung Entstehungsgeschichte Anwendungsbereiche Typkonzepte Funktionsaufbau Zuweisung eines Wertes auf eine Variable Prozedurkonzepte Globale Programmstrukturen Ereignissteuerung Beispiel MergeSort Quellen Proseminar "Vergleich von Programmiersprachen"

5 Entstehungsgeschichte (I)
Als mathematische Notationsform von Kenneth E. Iverson 1962 in „A programming language“ vorgestellt Zunächst zur formalen Beschreibung von IBM Systems/360 1966: erster Interpreter von APL Proseminar "Vergleich von Programmiersprachen"

6 Entstehungsgeschichte (II)
Bis 1985: IBM führender Anbieter des Interpreters Seit 1992: Weiterentwicklung durch kleinere Softwarefirmen Aufnahme in die .Net-Familie Proseminar "Vergleich von Programmiersprachen"

7 Proseminar "Vergleich von Programmiersprachen"
Anwendungsgebiete Statistiken zur Datenanalyse Banken, Versicherungen „wenn´s mal schnell gehen soll“ Von Mathematikern, Ingenieuren & „Nicht-Programmierern“ verwendet Proseminar "Vergleich von Programmiersprachen"

8 Proseminar "Vergleich von Programmiersprachen"
Typkonzepte (I) Nur 2 Datentypen explizit unterscheidbar Zeichenketten Zahlen Interne Unterscheidung zwischen Festpunkt-, Gleitpunktzahlen und Boolean Proseminar "Vergleich von Programmiersprachen"

9 Proseminar "Vergleich von Programmiersprachen"
Typkonzepte (II) Aus Skalaren: (homogene) dynamische Feldern Vektoren Matrizen Höherdimensionale Felder Proseminar "Vergleich von Programmiersprachen"

10 Proseminar "Vergleich von Programmiersprachen"
Funktionsaufbau Funktionskopf: <Fkt.dekl.> <lokale Parameter> Funktionsende durch Proseminar "Vergleich von Programmiersprachen"

11 Beispiel „Hello World“
[2] Proseminar "Vergleich von Programmiersprachen"

12 Zuweisung eines Wertes auf eine Variable (I)
Skalare skalarZuweisung [1] x← 100 [2] y←`5` [3] x 100 y 5 Proseminar "Vergleich von Programmiersprachen"

13 Zuweisung eines Wertes auf eine Variable (II)
Vektoren vektorZuweisung [1] a←ι5 [2] b← [3] c←`123` [4] d←,100 [5] e←,`b` [6] f←,A [7] Proseminar "Vergleich von Programmiersprachen"

14 Zuweisung eines Wertes auf eine Variable (III)
Matrizen folgen allgemein der Struktur A←<Strukturvektor>ρ<Datenvektor> matrizenZuweisung [1]V← [2]A←2 2 3ρ V [3] Proseminar "Vergleich von Programmiersprachen"

15 Zuweisung eines Wertes auf eine Variable (IV)
matrizenZuweisung [1]V← [2]A←2 2 3ρ V V 1 0 2 1 0 3 1 1 5 2 1 5 Proseminar "Vergleich von Programmiersprachen"

16 Zuweisung eine Wertes auf eine Variable (V)
matrizenZuweisung2 [1]B←3 4ρ1 2 3 B Proseminar "Vergleich von Programmiersprachen"

17 Proseminar "Vergleich von Programmiersprachen"
Prozedurkonzepte Keine Deklarationsteile Nur externe Prozeduren Prozeduren vom Funktionstyp Prozeduren vom Anweisungstyp Grundsätzlich call-by-value Proseminar "Vergleich von Programmiersprachen"

18 Proseminar "Vergleich von Programmiersprachen"
Funktionstyp Dyadisch: x funktion y Monadisch: funktion z Niladisch: funktion Proseminar "Vergleich von Programmiersprachen"

19 Proseminar "Vergleich von Programmiersprachen"
Anweisungstyp Dyadisch: r ← x funktion y Monadisch: r ← funktion y Niladisch: r ← funktion Proseminar "Vergleich von Programmiersprachen"

20 Proseminar "Vergleich von Programmiersprachen"
Beispiele Anfwerte [1]D←B+C←B+B←A←1 [2] Aufrund X [1]X+1|-X L ReEck H [1]2xL+H Proseminar "Vergleich von Programmiersprachen"

21 Proseminar "Vergleich von Programmiersprachen"
Beispiele (II) R←Summe [1]R←(?6)+?6 [2] U←Kreisumf R [1]U←2x°R R←A Hyp B [1]R←((A*2)+B*2)*.5 Proseminar "Vergleich von Programmiersprachen"

22 Elementare Operatoren (I)
Symbol Monadisch Dyadisch + Identität +5 Summe 7+5 - Negation -5 Differenz 7-5 ! Fakultät 3! Binomialkoeffizient 3!2 Proseminar "Vergleich von Programmiersprachen"

23 Elementare Operatoren (II)
ι Vektor ι5 Kl. Index von X in Y ι 7 ρ Gibt SV zurück ρA Erstellt Matrix SV ρ DV | Betrag |-5 X modulo y 12|5 Multiplikation mit π °X Kreisfunktion N°X Proseminar "Vergleich von Programmiersprachen"

24 Elementare Operatoren (III)
N°X (-N)°X √(1-X²) 1 sin X arc sin X 2 cos X arc cos X 3 tan X arc tan X 4 √(X²-1) √(X²+1) 5 sinh X arc sinh X 6 cosh X arc cosh X 7 tanh X arc tanh X Proseminar "Vergleich von Programmiersprachen"

25 Globale Programmstrukturen (I)
Blöcke existieren nicht Alternativ: Funktionen, goto´s Namensbereiche: Variablen der Umgebung in aufgerufenen Funktionen bekannt Lokale Variable setzt globale Variable außer Kraft Proseminar "Vergleich von Programmiersprachen"

26 Globale Programmstrukturen (II)
aufrufend [1]S←1 [2]aufgerufen [3] aufgerufen [2]S←S+1 Proseminar "Vergleich von Programmiersprachen"

27 Globale Programmstrukturen (III)
aufrufend S 2 Proseminar "Vergleich von Programmiersprachen"

28 Globale Programmstrukturen (IV)
aufrufend [1]S←1 [2]aufgerufen [3] aufgerufen;S [2]S←S+1 Proseminar "Vergleich von Programmiersprachen"

29 Globale Programmstrukturen (V)
aufrufend S 1 Proseminar "Vergleich von Programmiersprachen"

30 Proseminar "Vergleich von Programmiersprachen"
Ereignissteuerung Keine explizite Ereignissteuerung Sprünge möglich Sprünge zu Marken Sprünge auf Zeilennummern Proseminar "Vergleich von Programmiersprachen"

31 Proseminar "Vergleich von Programmiersprachen"
Beispiel Sprünge sprung [1] →ι0 [2] →3 4 5 [3] → next [4]next: → 0 [5] →7 [6] Proseminar "Vergleich von Programmiersprachen"

32 Beispiel MergeSort (I)
while- Schleife; Aufruf → LOOP → WHILE c DOTO end end: → POOL Proseminar "Vergleich von Programmiersprachen"

33 Beispiel MergeSort (II)
While-Schleife; Realisierung l←LOOP [1] LOOPSTACK←(1+(ı27)[1+ι1]), LOOPSTACK,l←ι0 [2] clabel←c DOTO label [1]clabel←c, label Proseminar "Vergleich von Programmiersprachen"

34 Beispiel MergeSort (III)
dest←WHILE clabel [1]→clabel[ι1]/0,dest←(~clabel[ι1])/ clabel[1+ι1]+1 [2]LOOPSTACK←1↓LOOPSTACK [3] back←POOL [1]back←1↑LOOPSTACK [2] Proseminar "Vergleich von Programmiersprachen"

35 Beispiel MergeSort (IV)
If-Verzweigung; Aufruf IF c DOTO label1 label1: →label2 DOTO ELSE label2: → FI Proseminar "Vergleich von Programmiersprachen"

36 Beispiel MergeSort (V)
label←IF clabel [1]label←(~clabel[ι1])/1+clabel[1+ι1] [2] ELSE←0 FI←ι0 Proseminar "Vergleich von Programmiersprachen"

37 Beispiel MergeSort (VI)
slist←mergeSort ulist; llength; llist;rlist [1]llength←ρ ulist [2]slist←ulist [3]IF (llength>1) DOTO end [4]llist←(└llength:2)↑ulist [5]rlist←(-┌llength:2)↑ulist [6]llist←mergeSort llist [7]rlist←mergeSort rlist [8]slist←llist merge rlist [9]end: →FI [10] Proseminar "Vergleich von Programmiersprachen"

38 Beispiel MergeSort (VII)
mlist←llist merge rlist [1]m←l←r←0 [2]→LOOP [3]→WHILE((l<ρllist)Λ(r< ρrlist)) DOTO end1 [4]IF(llist[l]<rlist[r]) DOTO lgr [5]mlist[m]←llist[l] [6]m←m+1 [7]l←l+1 [8]lgr:→end2 DOTO ELSE Proseminar "Vergleich von Programmiersprachen"

39 Beispiel MergeSort (VIII)
[9]mlist[m]←rlist[r] [10]m←m+1 [11]r←r+1 [12]end2:→FI [13]end1:→POOL [14]LOOP [15]WHILE(l<ρllist)DOTO end [16]mlist[m]←llist[l] [17]m←m+1 [18]l←l+1 [19]end:→POOL Proseminar "Vergleich von Programmiersprachen"

40 Beispiel MergeSort (IX)
[20]LOOP [21]WHILE (r<ρrlist) DOTO end [22]mlist[m]←rlist[r] [23]m←m+1 [24]r←r+1 [25]end:→POOL [26] Proseminar "Vergleich von Programmiersprachen"

41 Proseminar "Vergleich von Programmiersprachen"
Quellen [1] Dialogsprachen; I.Kupka/ N. Wilsing; B.G. Teubner Stuttgart [2] Einführung in APL; Ernst Dotzauer; B.I. Hochschultaschenbücher [3] Programmieren in APL; Wolfgang K. Giloi; de Gruyter Lehrbuch [4] APL2-Ein erster Einblick, Brown/Pakin/Polivka; Springer-Verlag [5] [6] Proseminar "Vergleich von Programmiersprachen"


Herunterladen ppt "A programming language"

Ähnliche Präsentationen


Google-Anzeigen