Jenseits von Fakultät und Fibonacci: Architektur Funktionaler Programme

Größe: px
Ab Seite anzeigen:

Download "Jenseits von Fakultät und Fibonacci: Architektur Funktionaler Programme"

Transkript

1 Jenseits von Fakultät und Fibonacci: Architektur Funktionaler Programme Dr. Klaus Alfert Dr. Bernd Löchner Folie 1 Januar 2011 Dr. Klaus Alfert Dr. Bernd Löchner

2

3 Warum ist Funktionale Programmierung in vieler Munde? Folie 3 Januar 2011 Dr. Klaus Alfert Dr. Bernd Löchner

4 Sun T 2»Niagara 2«2007, 8 Cores 8 Threads

5 Intel i7»nehalem«2008, 4 Cores 2 Threads

6 IBM POWER 7, 2010, 8 Cores 4 Threads

7 Oracle T 3»Rainbow Falls«2010, 16 Cores 8 Threads

8 Intel Cloud Computing on a Chip 2009, 48 Cores (Prototyp)

9 Warum ist Nebenläufigkeit mit Objekten schwierig? Folie 9 Januar 2011 Dr. Klaus Alfert Dr. Bernd Löchner

10 Objekte haben eine Identität :2 :3 :1

11 Objekte haben einen (lokalen) Zustand :2 :3 :1

12 Objekte haben Verhalten :2 :3 :1

13 Multithreading erfordert Locks :2 :3 :1

14 Ein hoher Grad an Nebenläufigkeit wird leicht unübersichtlich

15 Ein hoher Grad an Nebenläufigkeit wird leicht unübersichtlich

16 Wie kann funktionale Programmierung hier helfen?

17 Was unterscheidet FP von OOP? Folie 17 Januar 2011 Dr. Klaus Alfert Dr. Bernd Löchner

18 Zu den Programmbeispielen Beispiele in Haskell & Erlang Haskell ist puristisch elegant Erlang hat Industrial-Strength F# Die Beispiele sind aber alle übertragbar in andere funktionale Programmiersprachen.

19 A LISP programmer knows the value of everything, but the cost of nothing. Alan J. Perlis Epigrams of Programming

20 Werte, Variablen, Veränderliche Was sind imperative Variablen? Namen für Adressen von Speicherzellen Abstraktionsniveau: Assembler Objekte haben eine Identität: Entspricht einer Adresse von Speicherzellen Was sind funktionale Variablen? Namen für Werte: Sei x beliebig, aber fest Variablen werden an Werte gebunden Abstraktionsniveau: Mathematik Notwendig: Effiziente Abbildung auf Speicherzellen durch Laufzeitsystem x x 42 42

21 Objekte versus Werte :1 42 :1 42 Gleich, aber nicht identisch Copy Gleich und identisch : Funktionen erzeugen aus alten Werte neue!

22

23 Rekursion statt Iteration: Hyper-Fakultät (Sloane: A Handbook of Integer Sequences) Fakultät ist für Kinder Hyper-Fakultät ist für Erwachsene H ( n) = n k k k= 1 H(n) = 1, 1, 4, 108, 27648, , , , , , , ,

24 Rekursion statt Iteration: Hyper-Fakultät (Sloane: A Handbook of Integer Sequences) Imperativ: Zuweisungsorientiert hfac(n): r := 1; while n > 0 do r := r * n^n; n := n 1; od return r; Rekursiv: Werteorientiert hfac(n)-> if n == 0 then 1 else n^n * hfac(n-1)

25 Rekursion statt Iteration: Hyper-Fakultät (Sloane: A Handbook of Integer Sequences) Imperativ: Zuweisungsorientiert hfac(n): r := 1; while n > 0 do r := r * n^n; n := n 1; od return r; Berechnung: hfac(3) n r ?

26 Rekursion statt Iteration: Hyper-Fakultät (Sloane: A Handbook of Integer Sequences) Imperativ: Zuweisungsorientiert hfac(n): r := 1; while n > 0 do r := r * n^n; n := n 1; od return r; Rekursiv: Werteorientiert hfac(n)-> if n == 0 then 1 else n^n * hfac(n-1)

27 Rekursion statt Iteration: Hyper-Fakultät (Sloane: A Handbook of Integer Sequences) Berechnung: fun n hfac(3) if n == 0 then 1 else n^n * hfac(n-1) hfac(2) Rekursiv: Werteorientiert hfac(n)-> if n == 0 then 1 else n^n * hfac(n-1) fun n 2 4 if n == 0 then 1 else n^n * hfac(1) hfac(n-1) 1 fun n 1 fun n 0 if n == 0 then 1 else n^n * hfac(n-1) hfac(0) 1 if n == 0 then 1 else n^n * hfac(n-1)

28 Komplexe Werte sind oft baumartig { } vorname : Martin, nachname : Mustermann, anschrift : { strasse : Hauptstrasse 23, ort : { plz : 76541, stadt : Neustadt } }, kurse : [ ] A C1 { id : Mo1, title: Tutorial C# }, { id : Ndo4, title: Architektur } B C2 C C21 C22 D11 D12 D111 D112 D D1 D121 D122

29 Wie ändert man komplexe Werte? update (Tree, Value) Tree

30 Update: Ersetze 41 durch 42 Alter Baum Neuer Baum Beide Bäume existieren gleichzeitig!

31 Pattern Matching sum ([]) -> 0; sum ([X Xs]) -> X + sum (Xs). abs (N) when N >= 0 -> N; abs (N) -> -N. length [] = 0 length (x:xs) = 1 + length xs zip [] _ = [] zip _ [] = [] zip (x:xs) (y:ys) = (x,y) : zip xs ys

32 Higher-order Funktionen, Polymorphie und Lambda-Ausdrücke map :: (a -> b) -> [a] -> [b] map f [] = [] map f (x:xs) = f x : map f xs map abs [-2.. 2] >> [2, 1, 0, 1, 2] map (\x -> x*x) [-2.. 2] >> [4, 1, 0, 1, 4]

33 Algebraische Datenstrukturen data Tree a = Empty Node (Tree a) a (Tree a) maptree :: (a -> b) -> Tree a -> Tree b maptree f Empty = Empty maptree f (Node l x r) = Node (maptree f l) (f x) (maptree f r) data Color = Green Red... autumn t = maptree change t where change Green = Red change c = c

34 Erlang hat Closures und Clojure auch (und Scala, F#, ) mk_mul_abs (M) -> fun (N) when N > 0 -> M * N; (N) -> M * (-N) end. Ma3 Ma3 = mk_mul_abs (3). lists:map(ma3, [-2, -1, 0, 1, 2]). mk_mul_abs M fun N when N > 0 -> M * N; M * (-N) 3 >> [6, 3, 0, 3, 6]

35 Haskell erlaubt Partial Application parabola a b c x = a*x^2 + b*x + c fun a b c x a*x^2 + b*x + c p1 fun a fun b fun c fun x 3.5 p1 :: Double -> Double a*x^2 + b*x + c p1 = parabola y = p1 1.0 linear = parabola 0.0 l1 = linear

36 Programmierung im Großen Verantwortlichkeiten bündeln Module, APIs und Interfaces Kontrakte: Daten, Funktionen, Eigenschaften Information Hiding Sichtbarkeiten, Namespaces Implementierungsinterna verbergen Werteorientierung und Higher-order Funktionen ermöglichen andere Schnittstellen und Kontrakte Wie in OOP: Benötigt Augenmaß und Disziplin Beispiel: Pattern Matching

37 Funktionale Programmierung = Werteorientierung & Higher-order Funktionen

38 Welche Auswirkungen hat Funktionale Programmierung auf Architektur und Design?

39 Eoin Wood: Software architecture is the set of design decisions which, if made incorrectly, may cause your project to be canceled.

40 Grady Booch: Architecture represents the significant design decisions that shape a system, where significant is measured by cost of change.

41 ANSI/IEEE The fundamental organization of a system, embodied in its components, their relationships to each other and the environment, and the principles governing its design and evolution.

42 ANSI/IEEE The fundamental organization of a system, embodied in its components, their relationships to each other and the environment, and the principles governing its design and evolution.

43 High-Level Architektur

44 Architektur auf Marketing-Niveau: Ein typisches Marchitecture -Diagramm Pricing System im Fokus Auftragsverwaltung Kundenverwaltung Logistik CRM Server DWH DB

45 Enterprise Architektur: Funktionalität bleibt lokal, Kommunikation über Werte System im Fokus HTML Pricing Logistik JSON/REST Portal Server Auftragsverwaltung Kundenverwaltung SOAP SOAP Service Bus AMQP DWH MQ SOAP QuerySet Host CRM Server DB

46 High Level Architektur: Grobzerlegung bleibt bestehen Treiber: Primär fachliche Zerlegung in Aufgaben- und Verantwortlichkeitsgebiete Reflektiert auch die Organisation (Conway s Law) Konsequenzen Architektur auf dieser Ebene ist unabhängig von der Implementierungstechnologie Interna der Komponenten/Subsysteme sind irrelevant Kommunikation erfolgt über Werte, Funktionen bleiben lokal und werden nicht transportiert

47 Mittlere Architektur

48 Mittlere Architektur: Geprägt von nicht-funktionalen Systemanforderungen Funktionalität Bedienbarkeit Zuverlässigkeit Dokumentation Machbarkeit Effizienz Wartbarkeit Portabilität Gliederung gemäß ISO/IEC 9126

49 Enterprise Java

50 Ein Blick auf Enterprise Java Historisch: Transaktionsmonitor für verteilte Objekte Anbindung an (Legacy)-Datenbanken Ausgelegt für Informationssysteme Hohen Durchsatz Skalierbarkeit Funktionalität Zuverlässigkeit Dokumentation Machbarkeit Bedienbarkeit Effizienz Wartbarkeit Portabilität

51 Struktur: N-Tier-Schichtenarchitektur

52 Einfluss von Java Everything is an Object Auch für Dinge, die eigentlich keine Objekte sind (Stateless Session Beans, MDB, Backing Beans, Servlets, Transaktionen) Transparente Remote-Aufrufe (RMI) Thread-Management nur im Container Das Lock-Model von Java erlaubt keine Komposition von Concurrent Libraries Interfaces anstatt abstrakter Klassen

53 Erlang/OTP To Iterate is Human, to Recurse Divine L. Peter Deutsch

54 Ein Blick auf Erlang/OTP Historisch: Soft-Realtime Systeme, PBX, Telco Ausgelegt für (sehr hohe) Zuverlässigkeit und Fehlertoleranz Skalierbarkeit mit massiver Parallelität Kommunikationssysteme Funktionalität Bedienbarkeit Anwendungsbeispiele Diverse Telco-Systeme von Ericsson Ejabberd, RabbitMQ, CouchDB Wartbarkeit Zuverlässigkeit Dokumentation Machbarkeit Portabilität Effizienz

55 OTP besteht aus lose gekoppelten Anwendungen Anwendung Web Server crypto odbc gen_tcp uses

56 und aus Supervisor-Prozesshierarchien Anwendung Supervisor Worker Supervisor überwacht Worker Worker

57 Einfluss von Erlang auf OTP Erlang stellt die Basismechanismen bereit Pure Funktionen, Datenstrukturen sind immer Werte Nebenläufigkeit durch Prozesse Prozesse sind referenzierbar Entitäten im Sinne von Domain Driven Design Halten lokalen State, teilen sich aber keinen State! Massive Parallelität durch leichtgewichtige Prozesse und asynchrones Messaging Monitoring von Prozessen über VM-Grenzen hinaus Hot-Code Swapping: Updates im laufenden System Nachbau in Scala: Akka (www.akka.io)

58 Mittlere Architektur: Domäne der Blue-Print-Architekturen Standardarchitektur für eine bestimmte Systemklasse Anwendungsdomäne und -typ sind relevant Abgestimmt auf Hardware und Infrastruktur Geprägt von den nicht-funktionalen Anforderungen Priorisierung und Balancierung der Qualitätsattribute Das technisch Machbare bestimmt den Lösungsraum Programmiersprachen Laufzeitsysteme Bibliotheken Funktionalität Bedienbarkeit Zuverlässig- Dokumentation keit Effizienz Machbarkeit Wartbarkeit Portabilität

59 Kleinteilige Architektur

60

61 Peter Norvig: Design Patterns in Dynamic Languages (1998) Analyse der Design Patterns aus Lisp/Dylan-Sicht GoF verwendet C++ und Smalltalk Unterscheidung von Implementierungsebenen Unsichtbar: Wird von der Sprache abgedeckt Informell: Wird jedes mal neu implementiert Formell: Implementierung mit Template oder Macro Norvigs Fazit für die 23 GoF Patterns: 16 werden deutlich einfacher oder unsichtbar

62 GoF Command Pattern

63 Ein Command ist eine Closure shutdown_command(receiver) -> fun() -> Receiver! {shutdown, now} MyMachine =, Cmd = shutdown_command(mymachine), add_action(cmd, Cmd(). fun Receiver fun () MyMachine Cmd Receiver! {shutdown, now}

64 Commands mit Undo sind Closures mit Pattern Matching start_command(receiver) -> fun(do) -> Receiver! {start, now}; (undo) -> Receiver! {shutdown, now} MyMachine =, Cmd = Cmd(do),... Cmd(undo). Cmd fun Receiver fun (do) Receiver! {start, now} (undo) MyMachine Receiver! {shutdown, now}

65 GoF Visitor Pattern Languages that support double- or multiple dispatch lessen the need for the Visitor pattern. (CLOS actually supports multiple dispatch). [GoF: p.339] Ein Composite

66 Composite = Algebraischer Datentyp Visitor = Durchlauf der Struktur data CarElement = Car [CarElement] Wheel String Body Engine Die Java Implementierung bei Wikipedia braucht dafür ca. 100 Zeilen tostring Body = ["Visit Body"] tostring Engine = ["Visit Engine"] tostring (Wheel s) = ["Visit Wheel " ++ s] tostring (Car es) = concat (map tostring es) ++ ["Visit Car"] docar Body = ["Moving my Body"] docar Engine = ["Starting my Engine"] docar (Wheel s) = ["Kicking Wheel " ++ s] docar (Car es) = concat (map docar es) ++ ["Starting my Car"]

67 Charakteristik der GoF Patterns (1) Creational Patterns Factories und Builder lösen allgemeine Probleme, unabhängig von OO, auch in C, Modula2, Haskell, Erlang Prototypen und Singletons verschwinden Structural Patterns Interface-Probleme und -Lösungen sind sprachunabhängig (Facade, Bridge, Adapter, Proxy) Composite und Decorator werden unsichtbar

68 Charakteristik der GoF Patterns (2) Behavioral Patterns Können durch Lambdas, Pattern Matching, anders realisiert werden. Einige werden unsichtbar, andere sind nicht immer offensichtlich umzusetzen. Generelle Beobachtung: Patterns, die auf Objektidentitäten basieren, müssen ganz anders umgesetzt werden.

69 Funktionale Patterns Folie 69 Januar 2011 Dr. Klaus Alfert Dr. Bernd Löchner

70 Standardisierte Rekursion Listenfunktionen in Haskell: sum [] = 0 sum (x:xs) = x + sum xs product [] = 1 product (x:xs) = x * product xs alltrue [] = True alltrue (x:xs) = x && alltrue xs sum = foldlist 0 (+) product = foldlist 1 (*) alltrue = foldlist True (&&) Extrahiere das Rekursionsschema foldlist startval combfct [] = startval foldlist startval combfct (x:xs) = combfct x (foldlist startval combfct xs)

71 Standardisierte Rekursion Mit foldlist können viele Listenfunktionen implementiert werden length [] = 0 length (x:xs) = 1 + length xs length = foldlist 0 cfct where cfct x len = 1 + len map f [] = [] map f (x:xs) = f x : map f xs map f = foldlist [] cfct where cfct x ys = f x : ys

72 Standardisierte Rekursion für Algebraische Datentypen Generalisiere für andere Datenstrukturen data Tree a = Empty Node (Tree a) a (Tree a) foldtree eval cfct Empty = eval foldtree eval cfct (Node l x r) = cfct (foldtree eval cfct l) x (foldtree eval cfct r) sumtree = foldtree 0 cfct where cfct sl x sr = sl + x + sr maptree f = foldtree Empty cfct where cfct ml x mr = Node ml (f x) mr heighttree = foldtree 0 cfct where cfct hl x hr = 1 + max hl hr

73 Auch im Visitor findet sich strukturierte Rekursion data CarElement = Car [CarElement] Wheel String Body Engine visit :: (CarElement -> a) -> CarElement -> [a] visit f (Car es) = concat (map (visit f) es) ++ [f (Car es)] visit f x = [f x] printcar car = visit tostring car where tostring Body = "Visit Body" tostring Engine = "Visit Engine" tostring Wheel s = "Visit Wheel " ++ s tostring Car es = "Visit Car" Separation of Concerns

74 Recursion is the goto of functional programming. Erik Meijer

75 Leichtgewichtige Threads Erlang Prozesse sind nebenläufige, meist rekursive Funktionen CalcProc = spawn(fun() -> calc_loop(0)) calc_loop(acc) -> NewAcc = receive {mul, X} -> Acc * X; {add, X} -> Acc + X; clear -> 0; {get, Pid} -> Pid! {result, Acc}, Acc; _IgnoredMsg -> Acc end, calc_loop(newacc). Auswahl der Nachrichten durch Pattern Matching Funktioniert dank Tail Call Optimization

76 Nebenläufige Endliche Automaten durch Prozesse, Funktionen und Messaging statt State-Pattern idle() -> receive {Number, incoming} -> start_ringing(), ringing(number); off_hook -> start_tone(), dial() end. ringing(number) -> receive {Number, off_hook} -> stop_ringing(), connected(number); {Number, other_on_hook} -> stop_ringing(), idle() end. incoming Ringing off_hook other_ on_hook Idle on_hook Connected off_hook Dial Cesarini/Thompson: Erlang Programming 2009

77 Lazy Evaluation und unendliche Datenstrukturen Lazy Evaluation: (Teil-)Ausdrücke werden nur ausgewertet, wenn sie benötigt werden head (x:xs) = x Mit Lazy Evaluation gilt: head [42.0, 1.0/0] == 42.0 Essentiell, um eigene Kontrollstrukturen zu definieren unless cond x y = if!cond then x else y Ideal für DSLs

78 Lazy Evaluation und unendliche Datenstrukturen Mit Lazy Evaluation werden (potentiell) unendliche Datenstrukturen möglich nats = [0..] take 5 nats == [0, 1, 2, 3, 4] Wurzel-Berechnung nach Newton-Raphson: sqrtsequence n = iterate (next n) n where next n x = (x + n/x)/2.0 sqrtsequence 2 >> [2.0, 1.5, , , , , , , , iterate f n = [n,f(n),f 2 (n),f 3 (n), ]

79 Pipes and Filters Die Mächtigkeit der Unix-Shell kommt durch Pipes&Filters Konstruktionen cat *.txt tr sc A-Za-z '\n' tr a-z A-Z sort uniq c sort nr head Allgemein prg1 p1 <arg prg2 p2 prg3 p3 prg4 p4 Dies geht auch mit lazy Lists und Funktionskomposition fct4 p4. fct3 p3. fct2 p2. fct1 p1 $ arg Partial Application Listen als Transfer- Container Funktionskomposition enspricht Pipe Funktionsapplikation enspricht < Idiomatisch in Haskell

80 Map/Reduce f(x 1 ) x 1 f(x 2 ) x 2 y = f(x 1 ) f(x n ) reduce.. map f.... f(x n ) x n Zusammenfassung zum Endergebnis Berechnung der (unabhängigen) Zwischenergebnisse Inspiration für s Map-Reduce-Framework (C++)

81 Was es sonst noch gibt Eine Reihe weiterer Themen müssen wir auslassen Memoization Kombinatoren Monaden Macros Typeful Programming Continuations Co-Algebraische Konstruktionen

82 Fazit

83 Funktionale Programmierung Andersartiger Programmierstil Neue Abstraktionen und Kombinationsmöglichkeiten Andere Zerlegung von Problemen Andere Denkweisen und Idiome Einfachere Strukturen machen das Leben leichter Keine (kaum) Seiteneffekte Pure Functions Testen und Parallelität werden sehr viel einfacher

84 Auswirkungen auf Architektur Vieles bleibt gleich Architekturtreiber sind weiterhin die Qualitätsattribute Patterns werden zur Kommunikation für die Entwickler benötigt Kreativität und Augenmaß bleiben zwei wichtige Eigenschaften der Architekten Gutes Design Klare Verantwortlichkeiten

85

Funktionale Programmierung mit C++

Funktionale Programmierung mit C++ Funktionale Programmierung mit C++ Überblick Programmierung in funktionaler Art Warum funktionale Programmierung? Was ist funktionale Programmierung? Charakteristiken funktionaler Programmierung Was fehlt

Mehr

Was bisher geschah. deklarative Programmierung. funktionale Programmierung (Haskell):

Was bisher geschah. deklarative Programmierung. funktionale Programmierung (Haskell): Was bisher geschah deklarative Programmierung funktional: Programm: Menge von Termgleichungen, Term Auswertung: Pattern matsching, Termumformungen logisch: Programm: Menge von Regeln (Horn-Formeln), Formel

Mehr

Funktionale Programmierung mit Haskell. Jan Hermanns

Funktionale Programmierung mit Haskell. Jan Hermanns Funktionale Programmierung mit Haskell Jan Hermanns 1 Programmiersprachen imperativ deklarativ konventionell OO logisch funktional Fortran Smalltalk Prolog Lisp C Eiffel ML Pascal Java Haskell 2 von Neumann

Mehr

Funktionale Programmierung

Funktionale Programmierung Funktionale Programmierung Jörg Kreiker Uni Kassel und SMA Solar Technology AG Wintersemester 2011/2012 2 Teil II Typen mit Werten und Ausdruck, sogar listenweise 3 Haskell Programme Programm Module ein

Mehr

Funktionale Programmierung

Funktionale Programmierung Schleifen 1 Funktionale Programmierung Jörg Kreiker Uni Kassel und SMA Solar Technology AG Wintersemester 2011/2012 3 Teil I Jedem Anfang wohnt ein Zauber inne 4 Über mich Diplom in Informatik in Saarbrücken

Mehr

Behavioral Patterns. Seminar Software-Entwurf WS 04/05. Przemyslaw Dul

Behavioral Patterns. Seminar Software-Entwurf WS 04/05. Przemyslaw Dul Behavioral Patterns Seminar Software-Entwurf WS 04/05 Przemyslaw Dul Gliederung Design Pattern (Wiederholung) Einordnung Übersicht über die Kategorien: Creational,Structural,Behavioral Übersicht über die

Mehr

Praktische Informatik 3: Einführung in die Funktionale Programmierung Vorlesung vom 10.11.2010: Rekursive Datentypen

Praktische Informatik 3: Einführung in die Funktionale Programmierung Vorlesung vom 10.11.2010: Rekursive Datentypen Rev. 1152 1 [23] Praktische Informatik 3: Einführung in die Funktionale Programmierung Vorlesung vom 10.11.2010: Rekursive Datentypen Christoph Lüth & Dennis Walter Universität Bremen Wintersemester 2010/11

Mehr

Funktionale Programmierung mit Haskell

Funktionale Programmierung mit Haskell Funktionale Programmierung mit Haskell Prof. Dr. Hans J. Schneider Lehrstuhl für Programmiersprachen und Programmiermethodik Friedrich-Alexander-Universität Erlangen-Nürnberg Sommersemester 2011 I. Die

Mehr

Software-Architektur Design Patterns

Software-Architektur Design Patterns Design Patterns Prof. Dr. Oliver Braun Fakultät für Informatik und Mathematik Hochschule München SS 2015 Standardwerk Gang of Four: Erich Gamma, Richard Helm, Ralph Johnson & John Vlissides: Design Patterns:

Mehr

Funktionale Programmierung mit Haskell

Funktionale Programmierung mit Haskell Funktionale Programmierung mit Haskell Prof. Dr. Hans J. Schneider Lehrstuhl für Programmiersprachen und Programmiermethodik Friedrich-Alexander-Universität Erlangen-Nürnberg Sommersemester 2012 I. Die

Mehr

Softwaretechnik. Funktionale Programmierung. Christian Lindig. 23. Januar 2006. Lehrstuhl für Softwaretechnik Universität des Saarlandes

Softwaretechnik. Funktionale Programmierung. Christian Lindig. 23. Januar 2006. Lehrstuhl für Softwaretechnik Universität des Saarlandes Softwaretechnik Funktionale Programmierung Christian Lindig Lehrstuhl für Softwaretechnik Universität des Saarlandes 23. Januar 2006 Quicksort in Java static void sort(int a[], int lo0, int hi0) { int

Mehr

Kapitel 7 des Buches, von Java-Selbstbau nach Scala-Library portiert. 2014-11-14 Christoph Knabe

Kapitel 7 des Buches, von Java-Selbstbau nach Scala-Library portiert. 2014-11-14 Christoph Knabe Anfragen für Listen Kapitel 7 des Buches, von Java-Selbstbau nach Scala-Library portiert. 2014-11-14 Christoph Knabe 1 MapReduce-Verfahren Google u.a. verwenden Map-Reduce-Verfahren zur Verarbeitung riesiger

Mehr

SE Besprechung. Übung 4 Architektur, Modulentwurf

SE Besprechung. Übung 4 Architektur, Modulentwurf SE Besprechung Übung 4 Architektur, Modulentwurf SE, 22.11.11 Mengia Zollinger 2.1 Architekturstile (6 Punkte) 2.1.A Ausgabe eines Monatsabos an Angestellte Lösung: Pipe-and-Filter Beispiel Lösung [Benz,

Mehr

Konsequent agile Entwicklung mit funk4onaler Programmierung. Michael Sperber

Konsequent agile Entwicklung mit funk4onaler Programmierung. Michael Sperber Konsequent agile Entwicklung mit funk4onaler Programmierung Michael Sperber Individualso4ware branchenunabhängig Scala, Clojure, Erlang, Haskell, F# Schulungen, Coaching www.acave- group.de funkaonale-

Mehr

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe...

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe... php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe...7 3.Zugriff auf mysql Daten...11 Verteilte Systeme: php.sxw Prof.

Mehr

Funktionale Programmierung mit Haskell

Funktionale Programmierung mit Haskell Funktionale Programmierung mit Haskell Dr. Michael Savorić Hohenstaufen-Gymnasium (HSG) Kaiserslautern Version 20120622 Überblick Wichtige Eigenschaften Einführungsbeispiele Listenerzeugung und Beispiel

Mehr

Kapitel 3: Programmierung mit Kombinatoren

Kapitel 3: Programmierung mit Kombinatoren Funktionale Programmierung (WS2005/2006) 3/1 Kapitel 3: Programmierung mit Kombinatoren Lernziele dieses Kapitels 1. Denken in unktionalen Komponenten, Vermeidung von Kontrolllussdenken (Rekursion) Details

Mehr

Klausur Verteilte Systeme

Klausur Verteilte Systeme Klausur Verteilte Systeme SS 2005 by Prof. Walter Kriha Klausur Verteilte Systeme: SS 2005 by Prof. Walter Kriha Note Bitte ausfüllen (Fill in please): Vorname: Nachname: Matrikelnummer: Studiengang: Table

Mehr

Verträge für die funktionale Programmierung Design und Implementierung

Verträge für die funktionale Programmierung Design und Implementierung 1 Verträge für die funktionale Programmierung Design und Implementierung RALF HINZE Institut für Informatik III, Universität Bonn Römerstraße 164, 53117 Bonn, Germany Email: ralf@informatik.uni-bonn.de

Mehr

Funktionale Programmierung ALP I. Funktionen höherer Ordnung. Teil 2 SS 2013. Prof. Dr. Margarita Esponda. Prof. Dr.

Funktionale Programmierung ALP I. Funktionen höherer Ordnung. Teil 2 SS 2013. Prof. Dr. Margarita Esponda. Prof. Dr. ALP I Funktionen höherer Ordnung Teil 2 SS 2013 Funktionen höherer Ordnung Nehmen wir an, wir möchten alle Zahlen innerhalb einer Liste miteinander addieren addall:: (Num a) => [a -> a addall [ = 0 addall

Mehr

Experts in agile software engineering. Software Architektur andrena objects ag

Experts in agile software engineering. Software Architektur andrena objects ag Experts in agile software engineering Software Architektur jan.baumann@andrena.de Experts in agile software engineering 2 Experts in agile software engineering 2 Architektur in der Software Entwicklung

Mehr

Funktionale Programmierung bringt s! Ein Ausflug mit Haskell in die Praxis

Funktionale Programmierung bringt s! Ein Ausflug mit Haskell in die Praxis Funktionale Programmierung bringt s! Ein Ausflug mit Haskell in die Praxis Stefan Wehr (wehr@factisresearch.com) factis research GmbH, Freiburg im Breisgau 17. Juli 2013 Developer MeetUp Freiburg Funktionale

Mehr

KryptoCore-Entwurf und Funktionale Programmierung

KryptoCore-Entwurf und Funktionale Programmierung KryptoCore-Entwurf und Funktionale Programmierung Tobias Häberlein und Matthias Brettschneider haeberlein@hs-albsig.de brettschneider@hs-albsig.de Hochschule Albstadt-Sigmaringen Studiengang Kommunikations-

Mehr

Tutorium - Haskell in der Schule. Ralf Dorn - Dennis Buchmann - Felix Last - Carl Ambroselli

Tutorium - Haskell in der Schule. Ralf Dorn - Dennis Buchmann - Felix Last - Carl Ambroselli Tutorium - Haskell in der Schule Wer sind wir? Otto-Nagel-Gymnasium in Berlin-Biesdorf Hochbegabtenförderung und MacBook-Schule Leistungskurse seit 2005 Einführung Was ist funktionale Programmierung? Einführung

Mehr

Risikogetriebene Softwarearchitektur. STEFAN TOTH Agile Bodensee 26.09.2013

Risikogetriebene Softwarearchitektur. STEFAN TOTH Agile Bodensee 26.09.2013 Risikogetriebene Softwarearchitektur STEFAN TOTH Agile Bodensee 26.09.2013 0 Die Hacke für den Klotz am Bein STEFAN TOTH Agile Bodensee 26.09.2013 0 Stefan Toth Stefan.Toth@oose.de st_toth seit 06/2008

Mehr

ALP I. Funktionale Programmierung

ALP I. Funktionale Programmierung ALP I Funktionale Programmierung Sortieren und Suchen (Teil 1) WS 2012/2013 Suchen 8 False unsortiert 21 4 16 7 19 11 12 7 1 5 27 3 8 False sortiert 2 4 6 7 9 11 12 18 21 24 27 36 Suchen in unsortierten

Mehr

Grundprinzipien der funktionalen Programmierung

Grundprinzipien der funktionalen Programmierung Grundprinzipien der funktionalen Programmierung Funktionen haben keine Seiteneffekte Eine Funktion berechnet einen Ausgabewert der nur von den Eingabewerten abhängt: 12 inputs + output 46 34 2 Nicht nur

Mehr

Was bisher geschah Funktionale Programmierung in Haskell: Algebraische Datentypen Pattern Matching Polymorphie Typklassen Rekursive Datentypen:

Was bisher geschah Funktionale Programmierung in Haskell: Algebraische Datentypen Pattern Matching Polymorphie Typklassen Rekursive Datentypen: Was bisher geschah Funktionale Programmierung in Haskell: Algebraische Datentypen Pattern Matching Polymorphie Typklassen Rekursive Datentypen: Peano-Zahlen, Listen, Bäume Rekursive Funktionen strukturelle

Mehr

Enterprise Java Beans Einführung

Enterprise Java Beans Einführung Enterprise Java Beans Einführung Vorlesung 8 Ralf Gitzel ralf_gitzel@hotmail.de 1 Themenübersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht EJBs im JEE Umfeld Verschiedene Typen von EJBs Von der Javaklasse

Mehr

arlanis Software AG SOA Architektonische und technische Grundlagen Andreas Holubek

arlanis Software AG SOA Architektonische und technische Grundlagen Andreas Holubek arlanis Software AG SOA Architektonische und technische Grundlagen Andreas Holubek Speaker Andreas Holubek VP Engineering andreas.holubek@arlanis.com arlanis Software AG, D-14467 Potsdam 2009, arlanis

Mehr

Funktionale Programmierung. Frank Adler

Funktionale Programmierung. Frank Adler F# Funktionale Programmierung Frank Adler Was ist funktionale Programmierung Funktionale Programmierung ist die Komposition von Funktionen. Funktionale Konzepte First-Class Functions Higher-Order Functions

Mehr

Entwicklung von Web-Anwendungen auf JAVA EE Basis

Entwicklung von Web-Anwendungen auf JAVA EE Basis Entwicklung von Web-Anwendungen auf JAVA EE Basis Java Enterprise Edition - Überblick Prof. Dr. Bernhard Schiefer Inhalt der Veranstaltung Überblick Java EE JDBC, JPA, JNDI Servlets, Java Server Pages

Mehr

Grundlagen der Informatik für Ingenieure I

Grundlagen der Informatik für Ingenieure I 3 Einführung in das objektorientierte Programmier-Paradigma 3 Einführung in das objektorientierte Programmier-Paradigma 3.1.1 Top-down structured design 3.1.2 Data-driven design 3.1.3 Object-oriented design

Mehr

CORBA. Eine kurze Einführung. Common Object Request Broker Architecture. Ying Lu

CORBA. Eine kurze Einführung. Common Object Request Broker Architecture. Ying Lu CORBA Common Object Request Broker Architecture Eine kurze Einführung Ying Lu Verlauf der Präsentation Was ist CORBA CORBA-Architektur Ein Beispiel CORBA im Einsatz CORBA im Vergleich Was ist CORBA Begriffe

Mehr

Lehrplan: Architektur und Design. paluno

Lehrplan: Architektur und Design. paluno Lehrplan: Architektur und Design Gliederung 1 Grundlagen der industriellen So9ware Entwicklung 2 Ebenen von Architektur und Design 3 KernakAvitäten von So9ware- Architekten 4 Architekturtypologien von

Mehr

Cloud Computing mit mathematischen Anwendungen

Cloud Computing mit mathematischen Anwendungen Cloud Computing mit mathematischen Anwendungen Vorlesung SoSe 2009 Dr. Marcel Kunze Karlsruhe Institute of Technology (KIT) Steinbuch Centre for Computing (SCC) KIT the cooperation of Forschungszentrum

Mehr

WS 2011/2012. Georg Sauthoff 1. November 10, 2011

WS 2011/2012. Georg Sauthoff 1. November 10, 2011 in in WS 2011/2012 Georg 1 AG Praktische Informatik November 10, 2011 1 gsauthof@techfak.uni-bielefeld.de Kontakt in Dr. Georg Email: gsauthof@techfak.uni-bielefeld.de M3-128 in Organisation der Übungen

Mehr

Funktionale Programmierung

Funktionale Programmierung FP-1.0 Funktionale Programmierung Prof. Dr. Uwe Kastens SS 2013 Vorlesung Funktionale Programmierung SS 2013 / Folie 100 Begrüßung Functional Programming is Fun FP-1.1 Fun ctional Programming is Fun ctional

Mehr

Softwareentwicklung mit Enterprise JAVA Beans

Softwareentwicklung mit Enterprise JAVA Beans Softwareentwicklung mit Enterprise JAVA Beans Java Enterprise Edition - Überblick Was ist J2EE Java EE? Zunächst mal: Eine Menge von Spezifikationen und Regeln. April 1997: SUN initiiert die Entwicklung

Mehr

CORBA. Systemprogrammierung WS 2006-2007

CORBA. Systemprogrammierung WS 2006-2007 CORBA Systemprogrammierung WS 2006-2007 Teilnehmer: Bahareh Akherattalab Babak Akherattalab Inhaltsverzeichnis: Verteilte Systeme Vergleich zwischen lokale und verteilte Systeme Verteilte Anwendungen CORBA

Mehr

Interaktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten

Interaktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten Objekt Objekt kapselt Variablen und Routinen Interaktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten Eigenschaften jedes Objekts: Identität (identisch = mehrere

Mehr

Organisatorisches/Einstieg

Organisatorisches/Einstieg 1/31 Organisatorisches/Einstieg Florian Adamsky, B. Sc. (PhD cand.) florian.adamsky@iem.thm.de http://florian.adamsky.it/ cbd Softwareentwicklung im WS 2014/15 2/31 Outline 1 Motivation Theoretische Grundlagen

Mehr

CGI Programmierung mit Ha. Markus Schwarz

CGI Programmierung mit Ha. Markus Schwarz CGI Programmierung mit Ha Markus Schwarz Überblick Was ist funktionale Programmierung Einführung in Haskell CGI-Programmierung mit Haskell Ein etwas größeres Beispiel Was ist funktionale Programm Ein Programm

Mehr

Monaden in anderen Programmiersprachen

Monaden in anderen Programmiersprachen Monaden in anderen Programmiersprachen Themen Informatik-Seminar SS 2013: Programmiersprachen und Sprachsysteme Bei: Prof. Dr. Schmidt, FH Wedel inf9500 Sebastian Philipp Überblick Motivation Monaden in

Mehr

Softwareschnittstellen

Softwareschnittstellen P4.1. Gliederung Rechnerpraktikum zu Kapitel 4 Softwareschnittstellen Einleitung, Component Object Model (COM) Zugriff auf Microsoft Excel Zugriff auf MATLAB Zugriff auf CATIA Folie 1 P4.2. Einleitung

Mehr

In Erlang(en) Concurrency Oriented Programming. Jan Hermanns

In Erlang(en) Concurrency Oriented Programming. Jan Hermanns In Erlang(en) Concurrency Oriented Programming Jan Hermanns 1 Motivation Carrier Class Systeme massiv parallel 99.9999999% Uptime d.h. 31ms Downtime pro Jahr Wie sieht eine Programmiersprache aus, mit

Mehr

Komponentenbasierter Taschenrechner mit CORBA

Komponentenbasierter Taschenrechner mit CORBA Komponentenbasierter Taschenrechner mit CORBA Silke Kugelstadt Torsten Steinert Inhalt Motivation Demonstration des Taschenrechners Grobarchitektur Implementierung des Clients Implementierung der Komponenten

Mehr

Beispiele: (Funktionen auf Listen) (3) Bemerkungen: Die Datenstrukturen der Paare (2) Die Datenstrukturen der Paare

Beispiele: (Funktionen auf Listen) (3) Bemerkungen: Die Datenstrukturen der Paare (2) Die Datenstrukturen der Paare Beispiele: (Funktionen auf Listen) (3) Bemerkungen: 5. Zusammenhängen der Elemente einer Liste von Listen: concat :: [[a]] -> [a] concat xl = if null xl then [] else append (head xl) ( concat (tail xl))

Mehr

ORACLE Business Components for Java (BC4J) Marco Grawunder

ORACLE Business Components for Java (BC4J) Marco Grawunder ORACLE Business Components for Java (BC4J) Marco Grawunder Gliederung 2 Probleme von J2EE/EJB J2EE-Pattern Lösungsansatz: BC4J Architektur einer BC4J-Anwendung Komponenten Entity Objects View Objects Application

Mehr

Nebenläufige Programmierung

Nebenläufige Programmierung Nebenläufige Programmierung Perspektiven der Informatik 27. Januar 2003 Gert Smolka Telefon-Szenario Eine Telefonzelle Mehrere Personen wollen telefonieren Immer nur eine Person kann telefonieren Ressource

Mehr

Inhaltsverzeichnis. Enterprise Java im Überblick. Technologien der Java2 Enterprise Edition

Inhaltsverzeichnis. Enterprise Java im Überblick. Technologien der Java2 Enterprise Edition Inhaltsverzeichnis Vorwort 13 I Enterprise Java im Überblick 1 Bedeutung von Enterprise Java und IBM WebSphere 21 1.1 Enterprise Java 23 1.1.1 Anforderungen 23 1.1.2 E-Business 30 1.1.3 Java 36 1.2 IBM

Mehr

Funktionale Programmierung mit C++

Funktionale Programmierung mit C++ Funktionale Programmierung mit C++ Rainer Grimm Softwarearchitekt Partner: Überblick Programmierung in funktionaler Art Warum funktionale Programmierung? Was ist funktionale Programmierung? Charakteristiken

Mehr

Funktionale Programmierung mit Haskell

Funktionale Programmierung mit Haskell Funktionale Programmierung mit Haskell Prof. Dr. Hans J. Schneider Lehrstuhl für Programmiersprachen und Programmiermethodik Friedrich-Alexander-Universität Erlangen-Nürnberg Sommersemester 2011 I. Die

Mehr

Adressen. Praktikum Funktionale Programmierung Organisation und Überblick. Termine. Studienleistung

Adressen. Praktikum Funktionale Programmierung Organisation und Überblick. Termine. Studienleistung Adressen Adressen, Termine Studienleistung Praktikum Funktionale Programmierung Organisation und Überblick Dr. David Sabel Büro und Email Raum 216, Robert-Mayer-Str. 11-15 sabel@ki.informatik.uni-frankfurt.de

Mehr

Definieren Sie eine Funktion circlearea zur Berechnung der Fläche eines Kreises mit gegebenen Radius (Float).

Definieren Sie eine Funktion circlearea zur Berechnung der Fläche eines Kreises mit gegebenen Radius (Float). Haskell Funktionen Definieren Sie eine Funktion circlearea zur Berechnung der Fläche eines Kreises mit gegebenen Radius (Float). circlearea :: Float -> Float circlearea radius = 2 * pi * radius^2 Definieren

Mehr

BTree.dll - Balancierte und verkettete Bäume. Ecofor. BTree.dll. Realisiert mit Microsoft Visual Studio 16.04.2015 1/9

BTree.dll - Balancierte und verkettete Bäume. Ecofor. BTree.dll. Realisiert mit Microsoft Visual Studio 16.04.2015 1/9 BTree.dll Realisiert mit Microsoft Visual Studio 16.04.2015 1/9 INHALT 1. Allgemein... 3 2. Class BTree1 (balanciert)... 3 3. Class BTree2 (balanciert und verkettet)... 4 4. Beschreibung BTree1 und BTree2...

Mehr

COMMON OBJECT REQUEST BROKER ARCHITECTURE. Dmytro Pyvovar Otto-von-Guericke Universität Magdeburg

COMMON OBJECT REQUEST BROKER ARCHITECTURE. Dmytro Pyvovar Otto-von-Guericke Universität Magdeburg COMMON OBJECT REQUEST BROKER ARCHITECTURE Dmytro Pyvovar Otto-von-Guericke Universität Magdeburg Gliederung Motivation Was ist CORBA? Object Management Architecture (OMA ) Interface Definition Language

Mehr

Gemeinsam mehr erreichen.

Gemeinsam mehr erreichen. Gemeinsam mehr erreichen. Microservices in der Oracle SOA Suite Baden 10. September 2015 Ihr Ansprechpartner Carsten Wiesbaum Principal Consultant carsten.wiesbaum@esentri.com @CWiesbaum Schwerpunkte:

Mehr

Institut für Dokumentologie und Editorik. XML-Datenbanken und XQuery

Institut für Dokumentologie und Editorik. XML-Datenbanken und XQuery XML-Datenbanken & XQuery Folie 1 XML Digitale Edition XSL-FO XSLT XQuery XML-DB Folie 2 Programm - Ausgewählte Biere verköstigen - Brauereibesichtigung - Anwendung der Hefe erlernen - brauen Folie 3 Telota

Mehr

Software-Architekturen für das E-Business

Software-Architekturen für das E-Business Sebastian Herden Jorge Marx Gömez Claus Rautenstrauch Andre Zwanziger Software-Architekturen für das E-Business Enterprise-Application-Integration mit verteilten Systemen Mit 60 Abbildungen 4y Springer

Mehr

Aspektorientierte Programmierung. Modellierung und Programmierung 2

Aspektorientierte Programmierung. Modellierung und Programmierung 2 Modellierung und Programmierung 2 Überblick Literatur: G. Kiczales, J. Lamping, A. Mendhekar, C. Maeda, C. Lopes, J.-M. Loingtier, J. Irwin: Aspect-Oriented Programming. In: Proceedings of the European

Mehr

Proseminar Funktionales Programmieren. Stephan Kreutzer

Proseminar Funktionales Programmieren. Stephan Kreutzer Proseminar Funktionales Programmieren Die Programmiersprache LISP Stephan Kreutzer Teil I: Funktionales Programmieren Imperative Sprachen Imperative Sprachen: Befehlsorientiert Imperative Sprachen orientieren

Mehr

Die Java Stream API. Funktionale Programmierung mit der Stream API des JDK 1.8. Prof. Dr. Nikolaus Wulff

Die Java Stream API. Funktionale Programmierung mit der Stream API des JDK 1.8. Prof. Dr. Nikolaus Wulff Die Java Stream API Funktionale Programmierung mit der Stream API des JDK 1.8 Prof. Dr. Nikolaus Wulff Funktionale Programmierung Neben der Collection API mit default Methoden ist als weitere Neuerung

Mehr

Softwarearchitektur Speed-Dating Wer einsam bleibt ist selber schuld... Stefan Zörner embarc GmbH, Hamburg

Softwarearchitektur Speed-Dating Wer einsam bleibt ist selber schuld... Stefan Zörner embarc GmbH, Hamburg Wer einsam bleibt ist selber schuld... Stefan Zörner embarc GmbH, Hamburg Wie Ihr Eure Entwürfe und Entscheidungen festhaltet und kommuniziert Zeitgemäße Softwarearchitektur ist nicht das Werk einzelner.

Mehr

Funktionale Konzepte in objektorientierten Sprachen LAMBDAS / CLOSURES

Funktionale Konzepte in objektorientierten Sprachen LAMBDAS / CLOSURES Funktionale Konzepte in objektorientierten Sprachen LAMBDAS / CLOSURES Motivation Überblick Was macht Funktionale Programmierung aus? Sind Funktionale Programmierung und Objektorientierte Programmierung

Mehr

Typdeklarationen. Es gibt in Haskell bereits primitive Typen:

Typdeklarationen. Es gibt in Haskell bereits primitive Typen: Typdeklarationen Es gibt in bereits primitive Typen: Integer: ganze Zahlen, z.b. 1289736781236 Int: ganze Zahlen mit Computerarithmetik, z.b. 123 Double: Fließkommazahlen, z.b. 3.14159 String: Zeichenketten,

Mehr

NoSQL mit Postgres 15. Juni 2015

NoSQL mit Postgres 15. Juni 2015 Tag der Datenbanken 15. Juni 2015 Dipl.-Wirt.-Inform. Agenda l Vorstellung l Marktübersicht l Warum PostgreSQL? l Warum NoSQL? l Beispielanwendung Seite: 2 Vorstellung Dipl.-Wirt.-Inform. [1990] Erste

Mehr

Modellarbeit I: Entwurfsgerechte Klassenmodellierung

Modellarbeit I: Entwurfsgerechte Klassenmodellierung Modellarbeit I: Entwurfsgerechte Klassenmodellierung Vom Analysemodell zum Entwurfsmodell Nach der Etablierung der Techologien: Überarbeitung des Fachlichen Modells zu einem geeigneten Entwurfsmodell Navigationen

Mehr

Von Keerthikan T. & Siyar Kolusari 10.12.2012

Von Keerthikan T. & Siyar Kolusari 10.12.2012 M226 OBJECT ORIENTIERT PROGRAMMIEREN Project Checkers An online multi-player Java Game Von Keerthikan T. & Siyar Kolusari 10.12.2012 Inhaltsverzeichnis 1. Projektbeschreibung 3 1.1. Inhalt 3 2. Ziele

Mehr

Enterprise JavaBeans

Enterprise JavaBeans Enterprise JavaBeans Sebastian Pipping 18. Dezember 2006 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License. Teil I J2EE J2EE Was ist J2EE? Was ist J2EE?

Mehr

Service Oriented Architecture & Enterprise Service Bus

Service Oriented Architecture & Enterprise Service Bus Service Oriented Architecture & Enterprise Service Bus 25.05.2005 Sven Stegelmeier 1 Inhalt Einführung in SOA Motivation Begriffsdefinitionen Bestandteile einer SOA Dienste als Bausteine Entwicklungsstadien

Mehr

Multicore Herausforderungen an das Software-Engineering. Prof. Dr.-Ing. Michael Uelschen Hochschule Osnabrück 15.09.2010

Multicore Herausforderungen an das Software-Engineering. Prof. Dr.-Ing. Michael Uelschen Hochschule Osnabrück 15.09.2010 Multicore Herausforderungen an das Software-Engineering Prof. Dr.-Ing. Michael Uelschen Hochschule Osnabrück 15.09.2010 Inhalt _ Motivation _ Herausforderung 1: Hardware _ Herausforderung 2: Software-Partitionierung

Mehr

Objektorientierte Systeme

Objektorientierte Systeme Objektorientierte Systeme Einführung: Was ist Objektorientierung? Prof. Dr. Nikolaus Wulff Agenda Was ist Objektorientierung? Objektorientierte Modelbildung Komponenten Verteilte Systeme Ein Blick in die

Mehr

Integration von Web Services in J EE Anwendungen mit XFire. 1/26 André Janus - Integration von Web Services in J EE Anwendungen mit XFire

Integration von Web Services in J EE Anwendungen mit XFire. 1/26 André Janus - Integration von Web Services in J EE Anwendungen mit XFire Integration von Web Services in J EE Anwendungen mit XFire 1/26 André Janus - Integration von Web Services in J EE Anwendungen mit XFire univativ : = Umsetzung durch Studenten und Young Professionals.

Mehr

VBA-Programmierung: Zusammenfassung

VBA-Programmierung: Zusammenfassung VBA-Programmierung: Zusammenfassung Programmiersprachen (Definition, Einordnung VBA) Softwareentwicklung-Phasen: 1. Spezifikation 2. Entwurf 3. Implementierung Datentypen (einfach, zusammengesetzt) Programmablaufsteuerung

Mehr

Die Bedeutung abstrakter Datentypen in der objektorientierten Programmierung. Klaus Kusche, September 2014

Die Bedeutung abstrakter Datentypen in der objektorientierten Programmierung. Klaus Kusche, September 2014 Die Bedeutung abstrakter Datentypen in der objektorientierten Programmierung Klaus Kusche, September 2014 Inhalt Ziel & Voraussetzungen Was sind abstrakte Datentypen? Was kann man damit grundsätzlich?

Mehr

Fragen. f [ ] = [ ] f (x : y : ys) = x y : f ys f (x : xs) = f (x : x : xs) Wozu evaluiert f [1, 2, 3] (Abkürzung für f (1 : 2 : 3 : [ ]))?

Fragen. f [ ] = [ ] f (x : y : ys) = x y : f ys f (x : xs) = f (x : x : xs) Wozu evaluiert f [1, 2, 3] (Abkürzung für f (1 : 2 : 3 : [ ]))? Fragen f [ ] = [ ] f (x : y : ys) = x y : f ys f (x : xs) = f (x : x : xs) Wozu evaluiert f [1, 2, 3] (Abkürzung für f (1 : 2 : 3 : [ ]))? Wozu evaluiert [f [ ], f [ ]]? Weiteres Beispiel: f [ ] y = [

Mehr

Übersicht. Schleifen. Schleifeninvarianten. Referenztypen, Wrapperklassen und API. 9. November 2009 CoMa I WS 08/09 1/15

Übersicht. Schleifen. Schleifeninvarianten. Referenztypen, Wrapperklassen und API. 9. November 2009 CoMa I WS 08/09 1/15 Übersicht Schleifen Schleifeninvarianten Referenztypen, Wrapperklassen und API CoMa I WS 08/09 1/15 CoMa I Programmierziele Linux bedienen Code umschreiben strukturierte Datentypen Anweisungen und Kontrollstrukturen

Mehr

Abbildung 3-1: Clients und Server C+S

Abbildung 3-1: Clients und Server C+S Abbildung 3-1: Clients und Server C+S Abbildung 3-2: Interaktions-koordinations-arten Abbildung 3-3: Zuverlässige Nachrichtenübertragung a) durch individuell quittierte Nachrichten b) durch Quittierung

Mehr

3.2 Der CORBA-Standard Common Object Request Broker Architecture

3.2 Der CORBA-Standard Common Object Request Broker Architecture 3.2 Der CORBA-Standard Common Object Request Broker Architecture (Bildquelle: OMG) Kapitel 3.2: Vorlesung CORBA 1 CORBA Middleware im Ueberblick G CORBA = Common Object Request Broker Architecture. Standard

Mehr

SOMA Reverse Engineering

SOMA Reverse Engineering SOMA Reverse Engineering Univ.Prof. Dr. Franz Wotawa Institut für Softwaretechnologie wotawa@ist.tugraz.at Inhalt Was versteht man unter Reverse Engineering? Techniken/Methoden Probleme VU Software Maintenance

Mehr

Architecture Blueprints

Architecture Blueprints Architecture Blueprints Daniel Liebhart, Peter Welkenbach, Perry Pakull, Mischa Kölliker, Michael Könings, Markus Heinisch, Guido Schmutz Ein Leitfaden zur Konstruktion von Softwaresystemen mit Java Spring,.NET,

Mehr

Datenbearbeitung in der Cloud anhand von Apache Hadoop Hochschule Mannheim

Datenbearbeitung in der Cloud anhand von Apache Hadoop Hochschule Mannheim Tobias Neef Cloud-Computing Seminar Hochschule Mannheim WS0910 1/23 Datenbearbeitung in der Cloud anhand von Apache Hadoop Hochschule Mannheim Tobias Neef Fakultät für Informatik Hochschule Mannheim tobnee@gmail.com

Mehr

J2EEKurs. J2EE eine Plattform für betriebliche Anwendungen. Peter Thiemann. Sommercampus J2EEKurs, Freiburg, Germany, 10.-14.10.

J2EEKurs. J2EE eine Plattform für betriebliche Anwendungen. Peter Thiemann. Sommercampus J2EEKurs, Freiburg, Germany, 10.-14.10. J2EE eine Plattform für betriebliche Anwendungen Universität Freiburg, Germany Sommercampus, Freiburg, Germany, 10.-14.10.2005 Plattform Betriebliche Anwendung J2EE Kontrahenten J2EE im Überblick Was ist

Mehr

Mainframe Internet Integration. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth SS2013. WebSphere Application Server Teil 4

Mainframe Internet Integration. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth SS2013. WebSphere Application Server Teil 4 UNIVERSITÄT LEIPZIG Mainframe Internet Integration Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth SS2013 WebSphere Application Server Teil 4 Leistungsverhalten el0100 copyright W. G. Spruth,

Mehr

CONCURRENCY MODELS. Auf der Suche nach dem heiligen Gral der ManyCores Peter Sturm. (c) Peter Sturm, Universität Trier

CONCURRENCY MODELS. Auf der Suche nach dem heiligen Gral der ManyCores Peter Sturm. (c) Peter Sturm, Universität Trier CONCURRENCY MODELS Auf der Suche nach dem heiligen Gral der ManyCores Peter Sturm 1 AUTOVERKEHR 61.5 Millionen zugelassene Autos (Anfang 2014) Quelle: Statistisches Bundesamt 2 3 SPERRGRANULAT Die Zeit

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

Praktische Softwaretechnologie

Praktische Softwaretechnologie Praktische Softwaretechnologie Martin Giese Johann Radon Institute for Computational and Applied Mathematics Österr. Akademie der Wissenschaften Linz PSWT 2006 p.1/31 Organisation PSWT 2006 p.2/31 Bestandteile

Mehr

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik-

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik- Informatik Studiengang Chemische Technologie Michael Roth michael.roth@h-da.de Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013 Inhalt Teil VII Einstieg in Java I Michael Roth (h_da) Informatik

Mehr

Ausarbeitung Iteration I

Ausarbeitung Iteration I Ausarbeitung Iteration I Domain Model siehe [Lar02], Kap. 0 2 Domain Model Illustriert relevante Konzepte des Problembereichs Das wichtigste Dokument in OOA (Use-Cases sind nicht OO; Use-Cases sind ein

Mehr

Funktionale Programmierung (in Clojure)

Funktionale Programmierung (in Clojure) Funktionale Programmierung (in Clojure) Einführung Burkhardt Renz Fachbereich MNI Technische Hochschule Mittelhessen Wintersemester 2014/15 Übersicht Paradigmen von Programmiersprachen Paradigmen von Programmiersprachen

Mehr

Übungsaufgabe Transaktion als Middleware

Übungsaufgabe Transaktion als Middleware Übungsaufgabe Transaktion als Middleware und Java Persistence API Client/Server Abstraktes Komponentenmodell Entscheidende Punkte Erweiterung der Invoke-Methode Context-Verwaltung Transaktionsbehandlung

Mehr

12) Generische Datenstrukturen

12) Generische Datenstrukturen mpfohlene Literatur 12) Generische Datenstrukturen http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf rof. Dr. rer. nat. habil. Uwe Aßmann Lehrstuhl Softwaretechnologie Fakultät für Informatik TU Dresden

Mehr

Software-Architecture Introduction

Software-Architecture Introduction Software-Architecture Introduction Prof. Dr. Axel Böttcher Summer Term 2011 3. Oktober 2011 Overview 2 hours lecture, 2 hours lab sessions per week. Certificate ( Schein ) is prerequisite for admittanceto

Mehr

Programmieren in Haskell

Programmieren in Haskell Programmieren in Haskell Felder (Arrays) Programmieren in Haskell 1 Was wir heute machen Motivationsbeispiel Die Typklasse Ix Felder in Haskell Funktionstabellierung Binäre Suche Pascalsches Dreieck Ein

Mehr

Hibernate Das Praxisbuch für Entwickler

Hibernate Das Praxisbuch für Entwickler Sebastian Hennebrüder 2008 AGI-Information Management Consultants May be used for personal purporses only or by libraries associated to dandelon.com network. Hibernate Das Praxisbuch für Entwickler Galileo

Mehr

Übungen zu Softwaretechnik

Übungen zu Softwaretechnik Prof. Dr. Dr. h.c. M. Broy Lösungsblatt 11 Dr. H. Ehler, S. Wagner 23. Januar 2004 Übungen zu Softwaretechnik Aufgabe 16 Qualitätseigenschaften Broker-Pattern Beurteilen Sie das in Aufgabe 15 benutzte

Mehr

Pattern Praxis Techniken lassen sich wiederholt anwenden: Wieviele Substrings hat es im Wort Restaurant? Wie zeichne ich aus einer römischen IX mit einem zusätzlichen Strich eine Sechs? Was bedeutet: DER

Mehr

Funktionale Programmierung. der direkte Weg vom Modell zum Programm

Funktionale Programmierung. der direkte Weg vom Modell zum Programm 1 Funktionale Programmierung der direkte Weg vom Modell zum Programm Peter Padawitz, TU Dortmund 19. Juni 2010 2 Inhalt Modelle Bestandteile eines Modells Konstruktor- versus destruktorbasierte Modelle

Mehr

Bäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume.

Bäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume. Universität Osnabrück 1 Bäume 3 - Objektorientierte Programmierung in Java Vorlesung 10: Collections 4 Einführung Bäume sind verallgemeinerte Listenstrukturen Lineare Liste Jedes Element hat höchstens

Mehr