X10 Performance and Productivity at Scale
|
|
- Babette Buchholz
- vor 6 Jahren
- Abrufe
Transkript
1 X10 Performance and Productivity at Scale Sebastian Henneberg 8. Dezember 2011 Sebastian Henneberg: X10, Performance and Productivity at Scale 1
2 Struktur Hintergrund Plattform Speicher- und Parallelitätsmodell Sprachkonstrukte Zusammenfassung Sebastian Henneberg: X10, Performance and Productivity at Scale 2
3 Geschichte Idee: Sprache für parallele und verteilte Programmierung entwickelt seit 2004 Forschungsprojekt von IBM im Watson Research Center gefördert durch HPCS-Program der DARPA wachsende Community steigende Anzahl an Publikationen Gewinner der HPC Challenge: Best Performance (2009) Workshops (2010,2011) Sebastian Henneberg: X10, Performance and Productivity at Scale 3
4 Inspiration Java-Frameworks: Java Party (JVM-Verbund) C++-Frameworks Message Passing Interface (MPI) Open Multi-Processing (OpenMP) Speichermodell Unified Parallel C (UPC) Co-array Fortran Fortress Chapel Sebastian Henneberg: X10, Performance and Productivity at Scale 4
5 Motivation Produktivität Syntax ähnlich zu Java angereichert mit neuen Sprachkonstrukten Geschwindigkeit Backends für verschiedene Umgebungen angepasst an spezielle Plattformen Skalierung PC Multicore Cluster Supercomputer Sebastian Henneberg: X10, Performance and Productivity at Scale 5
6 Motivation Produktivität! Syntax ähnlich zu Java angereichert mit neuen Sprachkonstrukten Geschwindigkeit Backends für verschiedene Umgebungen angepasst an spezielle Plattformen Skalierung PC Multicore Cluster Supercomputer X10: ten-times productivity boost Sebastian Henneberg: X10, Performance and Productivity at Scale 5
7 Typsystem streng statisch Typinferenz bei initialisierender Deklaration Referenzen anstatt Zeiger Typen werden eingeführt durch Schnittstellen Klassen structs Sebastian Henneberg: X10, Performance and Productivity at Scale 6
8 Paradigmen imperativ objektorientiert nebenläufig verteilt (funktional) Sebastian Henneberg: X10, Performance and Productivity at Scale 7
9 Paradigmen imperativ Statements mit Seiteneffekten objektorientiert nebenläufig verteilt (funktional) Sebastian Henneberg: X10, Performance and Productivity at Scale 7
10 Paradigmen imperativ Statements mit Seiteneffekten objektorientiert class, extends, interface, implements... (wie Java) nebenläufig verteilt (funktional) Sebastian Henneberg: X10, Performance and Productivity at Scale 7
11 Paradigmen imperativ Statements mit Seiteneffekten objektorientiert class, extends, interface, implements... (wie Java) nebenläufig Lokalität, Atomarität, Asynchronität, Ordnung verteilt (funktional) Sebastian Henneberg: X10, Performance and Productivity at Scale 7
12 Paradigmen imperativ Statements mit Seiteneffekten objektorientiert class, extends, interface, implements... (wie Java) nebenläufig Lokalität, Atomarität, Asynchronität, Ordnung verteilt message passing, global partitioned address space (funktional) Sebastian Henneberg: X10, Performance and Productivity at Scale 7
13 Paradigmen imperativ Statements mit Seiteneffekten objektorientiert class, extends, interface, implements... (wie Java) nebenläufig Lokalität, Atomarität, Asynchronität, Ordnung verteilt message passing, global partitioned address space (funktional) immutable state, first-class functions, closures Sebastian Henneberg: X10, Performance and Productivity at Scale 7
14 Paradigmen imperativ Statements mit Seiteneffekten objektorientiert class, extends, interface, implements... (wie Java) nebenläufig Lokalität, Atomarität, Asynchronität, Ordnung verteilt message passing, global partitioned address space (funktional) immutable state, first-class functions, closures X10 ist eine multiparadigmatische Sprache Der Schwerpunkt liegt auf verteilter nebenläufiger Programmierung Sebastian Henneberg: X10, Performance and Productivity at Scale 7
15 Syntaktische Nähe zu Java 1 p u b l i c c l a s s Factorial { 2 3 p u b l i c s t a t i c d e f main ( args : Array [ String ]) { 4 v a l n = Int. parse ( args (0)); 5 Console. OUT. println (n + "! = " + fac (n )); 6 } 7 8 p r i v a t e s t a t i c d e f fac (n: Int ): ULong { 9 v a r f : ULong = 1; 10 f o r (i i n 1..n) { 11 f *= i; 12 } 13 r e t u r n f; 14 } 15 } val: nicht-veränderbare Variable var: veränderbare Variable Sebastian Henneberg: X10, Performance and Productivity at Scale 8
16 C++ und Java-Backend es werden zwei Backends unterstützt x10c x10 Java-Backend.x10 x10c++ runx10 C++-Backend Sebastian Henneberg: X10, Performance and Productivity at Scale 9
17 C++ und Java-Backend es werden zwei Backends unterstützt x10c x10 Java-Backend.x10 x10c++ runx10 C++-Backend die Backends unterscheiden sich in Geschwindigkeit (Standard: C++) kein direkter Aufruf per./ oder mit java Vorbereitung der verteilten und nebenläufigen Umgebung Sebastian Henneberg: X10, Performance and Productivity at Scale 9
18 MPI und OpenMP MPI (Message Passing Interface) OpenMP (Open Multi-Processing) Features: Programmiermodell für Cluster basiert auch Nachrichtenversand Buffer werden verschickt/empfangen Features: API für parallele Ausführung basiert auf gemeinsamen Speicher die API ändert das Laufzeitverhalten Ziele: Skalierbarkeit Portabilität Performanz Ziele: Skalierbarkeit Portabilität Einfachheit Flexibel Sebastian Henneberg: X10, Performance and Productivity at Scale 10
19 Speichermodelle im Vergleich MPI : Speicherzugriff : Nachricht : Referenzen T i : Thread P i : Place T 1 T 2 T 3 Sebastian Henneberg: X10, Performance and Productivity at Scale 11
20 Speichermodelle im Vergleich : Speicherzugriff : Nachricht : Referenzen T i : Thread P i : Place MPI OpenMP T 1 T 2 T 3 T 1 T 2 T 3 Sebastian Henneberg: X10, Performance and Productivity at Scale 11
21 Speichermodelle im Vergleich : Speicherzugriff : Nachricht : Referenzen T i : Thread P i : Place MPI OpenMP PGAS T 1 T 2 T 3 T 1 T 2 T 3 P 1 P 2 P 3 PGAS (Partitioned Global Address Space) PGAS Datenobjekte bleiben für ihre Lebensdauer der erzeugenden Place zugeordnet Sebastian Henneberg: X10, Performance and Productivity at Scale 11
22 Speichermodelle im Vergleich : Speicherzugriff : Nachricht : Referenzen T i : Thread P i : Place MPI OpenMP PGAS T 1 T 2 T 3 T 1 T 2 T 3 P 1 P 2 P 3 PGAS (Partitioned Global Address Space) PGAS Datenobjekte bleiben für ihre Lebensdauer der erzeugenden Place zugeordnet Sebastian Henneberg: X10, Performance and Productivity at Scale 11
23 Aktivitäten Aktivitäten repräsentieren Ausführungstränge Aktivitäten erzeugen eine baumartige Struktur p : 0 p : 1 p : 2 async at at async async async finish at Sebastian Henneberg: X10, Performance and Productivity at Scale 12
24 async-schlüsselwort async { S } erzeugt eine neue Aktivität die S ausführt Kontrollfluss des Aufrufers kehrt sofort zurück kann nicht abgebrochen werden! läuft asynchron in aktueller Place Variablenbindungen aus umgebenden Blöcken in S sichtbar Lebenszeit muss verlängert werden! Sebastian Henneberg: X10, Performance and Productivity at Scale 13
25 async-schlüsselwort async { S } erzeugt eine neue Aktivität die S ausführt Kontrollfluss des Aufrufers kehrt sofort zurück kann nicht abgebrochen werden! läuft asynchron in aktueller Place Variablenbindungen aus umgebenden Blöcken in S sichtbar Lebenszeit muss verlängert werden! aufgrund des Speichermodells nicht äquivalent zu Thread.start Sebastian Henneberg: X10, Performance and Productivity at Scale 13
26 finish-schlüsselwort f i n i s h { S } wartet bis alle asynchronen Aktivitäten beendet sind dient der Synchronisation Sebastian Henneberg: X10, Performance and Productivity at Scale 14
27 finish-schlüsselwort f i n i s h { S } wartet bis alle asynchronen Aktivitäten beendet sind dient der Synchronisation aus Java 6 bekannt unter dem Namen CountDownLatch Sebastian Henneberg: X10, Performance and Productivity at Scale 14
28 cilk-style Fork/Join finish und async tauchen häufig miteinander auf die Kombination ermöglicht Fork/Join-Operationen 1 d e f fib (n: Int ): Int { 2 i f (n < 2) r e t u r n 1; 3 v a l x: Int ; 4 v a l y: Int ; 5 f i n i s h { 6 async x = fib (n-1); 7 async y = fib (n-2); 8 } 9 r e t u r n x+y; 10 } Sebastian Henneberg: X10, Performance and Productivity at Scale 15
29 cilk-style Fork/Join finish und async tauchen häufig miteinander auf die Kombination ermöglicht Fork/Join-Operationen inspiriert sind diese durch Cilk 1 d e f fib (n: Int ): Int { 2 i f (n < 2) r e t u r n 1; 3 v a l x: Int ; 4 v a l y: Int ; 5 f i n i s h { 6 async x = fib (n-1); 7 async y = fib (n-2); 8 } 9 r e t u r n x+y; 10 } 1 c i l k i n t fib ( i n t n) { 2 i f (n < 2) r e t u r n 1; 3 e l s e { 4 i n t x,y; 5 x = spawn fib (n-1); 6 y = spawn fib (n-2); 7 sync ; 8 r e t u r n x+y; 9 } 10 } Sebastian Henneberg: X10, Performance and Productivity at Scale 15
30 cilk-style Fork/Join finish und async tauchen häufig miteinander auf die Kombination ermöglicht Fork/Join-Operationen inspiriert sind diese durch Cilk 1 d e f fib (n: Int ): Int { 2 i f (n < 2) r e t u r n 1; 3 v a l x: Int ; 4 v a l y: Int ; 5 f i n i s h { 6 async x = fib (n-1); 7 async y = fib (n-2); 8 } 9 r e t u r n x+y; 10 } in Java 7 als Fork/Join-Framework eingeführt 1 c i l k i n t fib ( i n t n) { 2 i f (n < 2) r e t u r n 1; 3 e l s e { 4 i n t x,y; 5 x = spawn fib (n-1); 6 y = spawn fib (n-2); 7 sync ; 8 r e t u r n x+y; 9 } 10 } Sebastian Henneberg: X10, Performance and Productivity at Scale 15
31 at-schlüsselwort at (p) { S } synchrones Wechseln der aktuellen Place zu Place p anschließend wird S ausgeführt nach Ende von S läuft Kontrollfluss in aktueller Place weiter P 1 P 2 at(p) { } Sebastian Henneberg: X10, Performance and Productivity at Scale 16
32 (De-)Serialisierung bei at 1 v a r i : Int = 0; 2 v a l c = new Cell [ Int ](2); 3 v a l r = GlobalRef [ Cell [ Int ]](new Cell [ Int ](4)); 4 at( here. next ()) { 5 c ()++; // sets to 3 6 at (r) { r ()()++; } // sets to 5 7 } 8 Console. OUT. println (c ()); // prints 2 9 Console. OUT. println (r ()()); // prints 5 Referenzen aus äußeren Blocks werden kopiert, serialisiert, in Buffer geschrieben und an Ziel-Place transportiert an der Ziel-Place wird der Buffer geleert, die Objekte deserialisiert um darauf zu operieren es werden Deep Copies erstellt transient- und GlobalRef-Felder werden nicht kopiert Sebastian Henneberg: X10, Performance and Productivity at Scale 17
33 atomic-schlüsselwort atomic { S } führt S atomar aus atomare Blocks werden in serialisierter Ordnung ausgeführt Sebastian Henneberg: X10, Performance and Productivity at Scale 18
34 atomic-schlüsselwort atomic { S } führt S atomar aus atomare Blocks werden in serialisierter Ordnung ausgeführt Das synchronized-schlüsselwort in Java ist deutlich feingranularer Sebastian Henneberg: X10, Performance and Productivity at Scale 18
35 atomic-schlüsselwort atomic { S } führt S atomar aus atomare Blocks werden in serialisierter Ordnung ausgeführt Das synchronized-schlüsselwort in Java ist deutlich feingranularer Es gilt zu beachten: S darf nicht blockieren (kein when, next, finish) S darf keine Aktivitäten erzeugen (kein async) S darf nur lokal operieren (kein at) genannte Einschränkungen werden zur Laufzeit geprüft Sebastian Henneberg: X10, Performance and Productivity at Scale 18
36 when-schlüsselwort when(e) { S } blockiert Aktivität bis e als wahr ausgewertet werden kann anschließend wird S atomar ausgeführt when (true) atomic Variablen in e können jederzeit geändert werden Prädikat e wird durch busy waiting geprüft Änderung von Variablen aus e in atomic/when vermeidet Starvation durch Benachrichtigung Sebastian Henneberg: X10, Performance and Productivity at Scale 19
37 clock-operationen v a l c : Clock = Clock. make (); async c l o c k e d (c) { S } ermöglicht phasenweise Ausführung (phased computation) clocked (c) registriert c mit neuer Aktivität c wird mehreren asynchronen Aktivitäten zugeordnet der Aufruf c.resumeall() blockiert bis letzte Aktivität diesen Aufruf tätigt anschließend beginnt nächste Berechnungsphase Sebastian Henneberg: X10, Performance and Productivity at Scale 20
38 clock-operationen v a l c : Clock = Clock. make (); async c l o c k e d (c) { S } ermöglicht phasenweise Ausführung (phased computation) clocked (c) registriert c mit neuer Aktivität c wird mehreren asynchronen Aktivitäten zugeordnet der Aufruf c.resumeall() blockiert bis letzte Aktivität diesen Aufruf tätigt anschließend beginnt nächste Berechnungsphase aus Java 6 bekannt unter dem Namen CyclicBarrier Sebastian Henneberg: X10, Performance and Productivity at Scale 20
39 Evolution von MontyPi MontyPi berechnet die Kreiszahl π durch einen Monte-Carlo Algorithmus y x Sebastian Henneberg: X10, Performance and Productivity at Scale 21
40 Evolution von MontyPi MontyPi berechnet die Kreiszahl π durch einen Monte-Carlo Algorithmus y x Sebastian Henneberg: X10, Performance and Productivity at Scale 21
41 Evolution von MontyPi MontyPi berechnet die Kreiszahl π durch einen Monte-Carlo Algorithmus y x Sebastian Henneberg: X10, Performance and Productivity at Scale 21
42 Evolution von MontyPi MontyPi berechnet die Kreiszahl π durch einen Monte-Carlo Algorithmus y x Sebastian Henneberg: X10, Performance and Productivity at Scale 21
43 Evolution von MontyPi MontyPi berechnet die Kreiszahl π durch einen Monte-Carlo Algorithmus y x Sei p i (x, y) für i {1,..., n} und x, y [0, 1[ Sebastian Henneberg: X10, Performance and Productivity at Scale 21
44 Evolution von MontyPi MontyPi berechnet die Kreiszahl π durch einen Monte-Carlo Algorithmus y x Sei p i (x, y) für i {1,..., n} und x, y [0, 1[ Weiter sei h = #{p i p i 1} Sebastian Henneberg: X10, Performance and Productivity at Scale 21
45 Evolution von MontyPi MontyPi berechnet die Kreiszahl π durch einen Monte-Carlo Algorithmus y x Sei p i (x, y) für i {1,..., n} und x, y [0, 1[ Weiter sei h = #{p i p i 1} π 4 h n Sebastian Henneberg: X10, Performance and Productivity at Scale 21
46 Evolution von MontyPi (sequentiell) 4 p u b l i c s t a t i c d e f main ( args : Array [ String ]) { 5 v a l N = Int. parse ( args (0)); 6 v a l R = new Random (); 7 v a r result : Double = 0; 8 f o r (1..N) { 9 v a l x = R. nextdouble (); 10 v a l y = R. nextdouble (); 11 i f (x*x + y*y <= 1) result ++; 12 } 13 v a l pi = 4* result /N; 14 Console. OUT. println (" The value of pi is " + pi ); 15 } Sebastian Henneberg: X10, Performance and Productivity at Scale 22
47 Evolution von MontyPi (nebenläufig) 4 p u b l i c s t a t i c d e f main ( args : Array [ String ]) { 5 v a l N = Int. parse ( args (0)); 6 v a l A = Int. parse ( args (1)); 7 v a l result = new Cell [ Double ](0); 8 f i n i s h f o r (1..A) async { 9 v a l R = new Random (); 10 v a r myresult : Double = 0; 11 f o r (1..( N/A)) { 12 v a l x = R. nextdouble (); 13 v a l y = R. nextdouble (); 14 i f ( x* x + y* y <= 1) myresult ++; 15 } 16 atomic result () += myresult ; 17 } 18 v a l pi = 4*( result ())/ N; 19 Console. OUT. println (" The value of pi is " + pi ); 20 } Sebastian Henneberg: X10, Performance and Productivity at Scale 23
48 Evolution von MontyPi (verteilt) 4 p u b l i c s t a t i c d e f main ( args : Array [ String ]) { 5 v a l N = Int. parse ( args (0)); 6 v a l result = GlobalRef [ Cell [ Double ]](new Cell [ Double ](0)); 7 f i n i s h f o r (p i n Place. places ()) async at (p) { 8 v a l R = new Random (); 9 v a r myresult : Double = 0; 10 f o r (1..( N/ Place. MAX_PLACES )) { 11 v a l x = R. nextdouble (); 12 v a l y = R. nextdouble (); 13 i f ( x* x + y* y <= 1) myresult ++; 14 } 15 v a l ans = myresult ; 16 at ( result ) atomic result ()() += ans ; 17 } 18 v a l pi = 4*( result ()())/ N; 19 Console. OUT. println (" The value of pi is " + pi ); 20 } Sebastian Henneberg: X10, Performance and Productivity at Scale 24
49 Zitate aus den Quellen supports programming at scale in the multicore era X10 is suitable as a research prototype it will be suitable for production use language and libraries are still changing, so coding to X10 is still a bit of moving target Sebastian Henneberg: X10, Performance and Productivity at Scale 25
50 Gesamtbild Stand der Entwicklung: X10 wird in der Wissenschaft (weiter-)entwickelt keine industrielle Verwendung bekannt nicht-endgültige Spezifikation Schlussfolgerung: hohe Abstraktion der Programme plattformunabhängig führt viele bekannte und bewährte Techniken zusammen teilweise gar nicht oder nur sehr dürfitg dokumentiert Entwicklungsumgebung brauchbar - hat jedoch noch viel Potenzial Sebastian Henneberg: X10, Performance and Productivity at Scale 26
51 Alternativen Java: ProActive Parallel Suite C++: OpenMP MPI Sebastian Henneberg: X10, Performance and Productivity at Scale 27
52 Quellen und Referenzen Programmier-Leitfaden Spezifikation API-Dokumentation (Javadoc) Publikationen Videos/Aufzeichnungen X10DT (Eclipse IDE Erweiterung) enthält eine sehr reichhaltige Hilfe zu X10 Sebastian Henneberg: X10, Performance and Productivity at Scale 28
Einführung in die Programmierung mit Java
Einführung in die Programmierung mit Java Martin Wirsing 2 Ziele Geschichte der OO-Programmiersprachen Warum Java als Programmiersprache verwenden? Ein einfaches Java-Programm erstellen, übersetzen und
MehrJava Concurrency Utilities
Java Concurrency Utilities Java unterstützt seit Java 1.0 Multithreading Java unterstützt das Monitorkonzept mittels der Schlüsselworte synchronized und volatile sowie den java.lang.object Methoden wait(),
MehrOpenCL. Programmiersprachen im Multicore-Zeitalter. Tim Wiersdörfer
OpenCL Programmiersprachen im Multicore-Zeitalter Tim Wiersdörfer Inhaltsverzeichnis 1. Was ist OpenCL 2. Entwicklung von OpenCL 3. OpenCL Modelle 1. Plattform-Modell 2. Ausführungs-Modell 3. Speicher-Modell
MehrNebenläufige Programmierung in Java: Threads
Nebenläufige Programmierung in Java: Threads Wahlpflicht: Fortgeschrittene Programmierung in Java Jan Henke HAW Hamburg 10. Juni 2011 J. Henke (HAW) Threads 10. Juni 2011 1 / 18 Gliederung 1 Grundlagen
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Tafelübung 03 Vererbung, Polymorphie, Sichtbarkeit, Interfaces Clemens Lang T2 11. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/26 Klassen und Objekte Klassen und Objekte
MehrInstitut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke
Java 2 Markus Reschke 07.10.2014 Datentypen Was wird gespeichert? Wie wird es gespeichert? Was kann man mit Werten eines Datentyps machen (Operationen, Methoden)? Welche Werte gehören zum Datentyp? Wie
MehrAusnahmebehandlung in Java
Ausnahmebehandlung in Java class A { void foo() throws Help, SyntaxError {... class B extends A { void foo() throws Help { if (helpneeded()) throw new Help();... try {... catch (Help e) {... catch (Exception
MehrÜbung 1 mit C# 6.0 MATTHIAS RONCORONI
Übung 1 mit C# 6.0 MATTHIAS RONCORONI Inhalt 2 1. Überblick über C# 2. Lösung der Übung 1 3. Code 4. Demo C# allgemein 3 aktuell: C# 6.0 mit.net-framework 4.6: Multiparadigmatisch (Strukturiert, Objektorientiert,
MehrEinstieg in die Informatik mit Java
1 / 21 Einstieg in die Informatik mit Java Felder, eindimensional Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 21 1 Überblick: Was sind Felder? 2 Vereinbarung von Feldern
MehrPolymorphie/Späte Bindung Abstrakte Klassen Interfaces. Polymorphie/Späte Bindung Abstrakte Klassen Interfaces
Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2010/2011 1 / 20 Polymorphie/Späte Bindung Abstrakte Klassen Interfaces 2 / 20 Definition: Polymorphie Der Begriff Polymorphie (manchmal
MehrRepetitorium Informatik (Java)
Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen
MehrNeue Sprachen für HPC: Chapel / Fortress / X10. Sarntal,Ferienakademie 2009 Programmierkonzepte für Multi Core Rechner Svetlana Nogina
Neue Sprachen für HPC: Chapel / Fortress / X10 Sarntal,Ferienakademie 2009 Programmierkonzepte für Multi Core Rechner Svetlana Nogina Roadrunner : #1 in TOP500 (Stand 06.2009) Page 2 1,105 PFlops 129600
MehrJava Tools JDK. IDEs. Downloads. Eclipse. IntelliJ. NetBeans. Java SE 8 Java SE 8 Documentation
Java Tools JDK http://www.oracle.com/technetwork/java/javase/ Downloads IDEs Java SE 8 Java SE 8 Documentation Eclipse http://www.eclipse.org IntelliJ http://www.jetbrains.com/idea/ NetBeans https://netbeans.org/
MehrBeispiel für überladene Methode
Beispiel für überladene Methode class Gras extends Futter {... abstract class Tier { public abstract void friss (Futter x); class Rind extends Tier { public void friss (Gras x) {... public void friss (Futter
Mehr6. Funktionen, Parameterübergabe
6. Funktionen, Parameterübergabe GPS-6-1 Themen dieses Kapitels: Begriffe zu Funktionen und Aufrufen Parameterübergabearten call-by-value, call-by-reference, call-by-value-and-result in verschiedenen Sprachen
MehrProgrammierung mit Threads in Java
Programmierung mit Threads in Java Harald Kosch and Matthias Ohlenroth Institut für Informationstechnologie Universität Klagenfurt H. Kosch Threads in Java 1 Inhalt Grundlagen: Threads und Datenlokalität
MehrProgrammieren in Java -Eingangstest-
Programmieren in Java -Eingangstest- Nummer: 1. Studiengang: Informatik B.Sc. Informatik M.Sc. ESE B.Sc. ESE M.Sc. Sonstiges: Fachsemester: Bitte Fragen, die Sie nicht beantworten können unbedingt mit
MehrAlgorithmen implementieren. Implementieren von Algorithmen
Algorithmen implementieren Implementieren von Algorithmen Um Algorithmen ablaufen zu lassen, muss man sie als Programm darstellen (d.h. implementieren) Wie stellt man die algorithmischen Strukturelemente
MehrBeispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung
Beispiele für Ausdrücke Der imperative Kern Deklarationen mit Initialisierung Variablendeklarationen int i = 10; int j = 15; Beispiele für Ausdrücke i+j i++ i & j i j [] [static]
Mehrversus Christian Grobmeier http://www.grobmeier.de @grobmeier
versus Christian Grobmeier http://www.grobmeier.de @grobmeier Programmiersprache von Google Kann JS ersetzen Läuft in einer VM Für ernsthafte Anwendungen Jung und rockt Heavy Metal Band aus England Ersetzt
MehrTag 4 Repetitorium Informatik (Java)
Tag 4 Repetitorium Informatik (Java) Dozent: Michael Baer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Arrays (Reihungen)
MehrInstitut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke
Institut für Programmierung und Reaktive Systeme Java 6 Markus Reschke 13.10.2014 OOP Objekte = Verhalten (durch Methoden) + Daten (durch Attribute) Klassen = Baupläne für Objekte Kapselung von Programmteilen
MehrAlgorithmen und Programmierung II
Algorithmen und Programmierung II Vererbung Prof. Dr. Margarita Esponda SS 2012 1 Imperative Grundbestandteile Parameterübergabe String-Klasse Array-Klasse Konzepte objektorientierter Programmierung Vererbung
MehrDr. Monika Meiler. Inhalt
Inhalt 15 Parallele Programmierung... 15-2 15.1 Die Klasse java.lang.thread... 15-2 15.2 Beispiel 0-1-Printer als Thread... 15-3 15.3 Das Interface java.lang.runnable... 15-4 15.4 Beispiel 0-1-Printer
MehrProgrammieren I. Kapitel 10. Spezielle Features
Programmieren I Kapitel 10. Spezielle Features Kapitel 10: Spezielle Features Ziel: Besonderheiten von Java bei OO Konzepten statische Attribute und Methoden innere, verschachtelte und lokale Klassen anonyme
MehrAlgorithmen und Datenstrukturen II
Algorithmen und Datenstrukturen II in JAVA D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg Sommer 2009, 31. März 2009, c 2009 D.Rösner
MehrValidation und Quick Fixing mit Xtend. 3. Dezember 2014
Validation und Quick Fixing mit Xtend 3. Dezember 2014 175 Überblick Tuning der Xtext-generierten Editoren Validierung mit OCL auf der abstrakten Syntax mit Xtend auf der konkreten Syntax Quick Fixes mit
MehrMethoden und Wrapperklassen
Methoden und Wrapperklassen CoMa-Übung IV TU Berlin 06.11.2012 CoMa-Übung IV (TU Berlin) Methoden und Wrapperklassen 06.11.2012 1 / 24 Themen der Übung 1 Methoden 2 Wrapper-Klassen CoMa-Übung IV (TU Berlin)
MehrPraktikum: Paralleles Programmieren für Geowissenschaftler
Praktikum: Paralleles Programmieren für Geowissenschaftler Prof. Thomas Ludwig, Hermann Lenhart, Nathanael Hübbe hermann.lenhart@zmaw.de MPI Einführung I: Hardware Voraussetzung zur Parallelen Programmierung
MehrFunktionales Programmieren mit objektorientierten Sprachen
Funktionales Programmieren mit objektorientierten Sprachen Dr. Dieter Hofbauer d.hofbauer@ba-nordhessen.de Hochschule Darmstadt, WS 2008/09 p.1/21 Function Objects In funktionalen Sprachen (Haskell, ML,...
MehrVorkurs Informatik WiSe 17/18
Java Einführung Dr. Werner Struckmann / Stephan Mielke, Nicole Naczk, 04.10.2017 Technische Universität Braunschweig, IPS Überblick Organisatorisches Arbeitsablauf Hello World 04.10.2017 Dr. Werner Struckmann
MehrMatrix Transposition mit gaspi_read_notify. Vanessa End HPCN Workshop 11. Mai 2016
Matrix Transposition mit gaspi_read_notify Vanessa End HPCN Workshop 11. Mai 2016 Überblick Motivation Matrix Transposition GASPI Matrix Transposition in GASPI Zusammenfassung und Ausblick 2 Motivation
MehrFunktionale 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
MehrThemen der Übung. Methoden und Wrapperklassen. Vorteile von Methoden. Methoden. Grundlagen
Themen der Übung 1 Organisatorisches Methoden und Wrapperklassen 2 Methoden 3 Wrapper-Klassen CoMa-Übung IV TU Berlin 07.11.2012 Organisatorisches: Im Pool nur auf die Abgabeliste setzen, wenn ihr wirklich
MehrNeben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter
Kapitel 1 Der vierte Tag 1.1 Vererbung Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Sprachen. Unter Vererbung versteht man die Möglichkeit, Eigenschaften vorhandener
MehrOrganisatorisches. drei Gruppen Gruppe 1: 10:10-11:40, Gruppe 2: 11:45-13:15 Gruppe 3: 13:20-14:50
Organisatorisches Vorlesung Donnerstag 8:35 bis 10:05 Übung drei Gruppen Gruppe 1: 10:10-11:40, Gruppe 2: 11:45-13:15 Gruppe 3: 13:20-14:50 Tutorium (Mehr oder weniger) abwechselnd Mo und Mi 10-11:30 Termine
MehrOrganisatorisches. Neue Übungsblätter: Nur mehr elektronisch? Abgabe Di, , 14 Uhr bis Do, , 8Uhr
Organisatorisches Neue Übungsblätter: Nur mehr elektronisch? Abgabe Di, 14.10., 14 Uhr bis Do, 23.10., 8Uhr. 14.10.2014 IT I - VO 1 1 IT I: Heute Wiederholung CuP ctd: this Arrays, ArrayLists Schleifen:
MehrNebenläufige Programme mit Python
Nebenläufige Programme mit Python PyCon DE 2012 Stefan Schwarzer, SSchwarzer.com info@sschwarzer.com Leipzig, Deutschland, 2012-10-30 Nebenläufige Programme mit Python Stefan Schwarzer, info@sschwarzer.com
MehrOpenMP. Viktor Styrbul
OpenMP Viktor Styrbul Inhaltsverzeichnis Was ist OpenMP Warum Parallelisierung Geschichte Merkmale von OpenMP OpenMP-fähige Compiler OpenMP Ausführungsmodell Kernelemente von OpenMP Zusammenfassung Was
MehrKonzepte der parallelen Programmierung
Fakultät Informatik, Institut für Technische Informatik, Professur Rechnerarchitektur Konzepte der parallelen Programmierung Parallele Programmiermodelle Nöthnitzer Straße 46 Raum 1029 Tel. +49 351-463
MehrDieÜbersetzung funktionaler Programmiersprachen
DieÜbersetzung funktionaler Programmiersprachen 107 11 Die Sprache PuF Wir betrachten hier nur die Mini-Sprache PuF( Pure Functions ). Insbesondere verzichten wir(vorerst) auf: Seiteneffekte; Datenstrukturen;
MehrJavakurs für Anfänger
Javakurs für Anfänger Einheit 13: Interfaces Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme 1. Teil: Interfaces Motivation Eigenschaften Besonderheiten Anonyme Klassen Lambda-Ausdrücke Praxis:
MehrCilk Sprache für Parallelprogrammierung. IPD Snelting, Lehrstuhl für Programmierparadigmen
Cilk Sprache für Parallelprogrammierung IPD Snelting, Lehrstuhl für Programmierparadigmen David Soria Parra Geschichte Geschichte Entwickelt 1994 am MIT Laboratory for Computer Science Cilk 1: Continuations
MehrProgrammiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften
Programmiertechnik Teil 4 C++ Funktionen: Prototypen Overloading Parameter C++ Funktionen: Eigenschaften Funktionen (Unterprogramme, Prozeduren) fassen Folgen von Anweisungen zusammen, die immer wieder
MehrObjektorientierte Programmierung Studiengang Medieninformatik
Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 1 15.03.2017 Objektorientierte Programmierung (Studiengang Medieninformatik) Form: Prüfung:
MehrEinführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015
Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 4, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)
MehrEinstieg in die Informatik mit Java
1 / 47 Einstieg in die Informatik mit Java Anweisungen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 47 1 Ausdrucksanweisung 2 Einfache Ausgabeanweisung 3 Einfache Eingabeanweisung,
MehrThread-Synchronisation in in Java. Threads Wechselseitiger Ausschluss Bedingte Synchronisation Beispiel: Warteschlangen
Thread-Synchronisation in in Java Threads Wechselseitiger Ausschluss Bedingte Synchronisation Beispiel: Warteschlangen Die Klasse Thread Die Die Klasse Thread gehört zur zur Standardbibliothek von von
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin
MehrDeklaration einer Klasse Innere innerhalb Klassen einer in Ja anderen v a Klasse
Innere Klassen in Java Java 1.0: nur top-level Klassen Seit Java Version 1.1: Innere Klassen Deklaration einer Klasse innerhalb einer anderen Klasse Illustration Eigenschaften Vorteile Anwendungsmöglichkeiten
MehrJava I Vorlesung Nebenläufigkeit
Java I Vorlesung 10 Nebenläufigkeit 28.6.2004 Threads Synchronisation Deadlocks Thread-Kommunikation Innere Klassen Anonyme Klassen Nebenläufigkeit http://java.sun.com/docs/books/tutorial/essential/threads/
MehrNebenläufige Programmierung I
Nebenläufige Programmierung I Martin Wirsing in Zusammenarbeit mit Matthias Hölzl, Piotr Kosiuczenko, Dirk Pattinson 07/03 Ziele 2 Grundlegende Begriffe der nebenläufigen Programmierung verstehen lernen
MehrEinführung in die Programmierung mit Java
Einführung in die Programmierung mit Martin Wirsing 2 Ziele Begriffsbildungen: Informatik, Algorithmus, Programm... Warum als Programmiersprache verwenden? Ein einfaches -Programm erstellen, übersetzen
MehrEinführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel.
Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 7, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)
MehrErsetzbarkeit und Verhalten
Ersetzbarkeit und Verhalten U ist Untertyp von T, wenn eine Instanz von U überall verwendbar ist, wo eine Instanz von T erwartet wird Struktur der Typen für Ersetzbarkeit nicht ausreichend Beispiel: void
Mehr1 Klassen und Objekte
1 Klassen und Objekte Datentyp - Spezifikation des Typs von Datenobjekten Datenstruktur - logische Ordnung von Elementen eines Datentyps - zur (effizienten) Speicherung, Verwaltung, Zugriff - auf die Elemente
Mehr2 Eine einfache Programmiersprache
2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir
MehrFH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen
5 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Referenzen Beispiel an der einfachen Klasse Walze: public class Walze { int id; public Walze(int id) { this.id = id; Verwenden
Mehr10. OLAPLINE-Anwendertreffen
10. OLAPLINE-Anwendertreffen 26. und 27. April 2017 Schloss Garath Düsseldorf Zwei Tage Weiterbildung und Networking integriert: Vorträge, Workshops und Erfahrungsaustausch rund um TM1 JAVA EXTENSIONS
MehrJavakurs 2013 Objektorientierung
Javakurs 2013 Objektorientierung Objektorientierte Programmierung I Armelle Vérité 7 März 2013 Technische Universität Berlin This work is licensed under the Creative Commons Attribution-ShareAlike 3.0
MehrObjektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)
Stefan Brass: OOP (Java), 22. Aufzählungstypen 1/20 Objektorientierte Programmierung Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester
MehrEinführung in die Informatik Objekte
Einführung in die Informatik Objekte Referenzen, Methoden, Klassen, Variablen, Objekte Wolfram Burgard 3.1 Referenzen Eine Referenz in Java ist jede Phrase, die sich auf ein Objekt bezieht. Referenzen
MehrParallele und funktionale Programmierung Wintersemester 2015/ Übung Abgabe bis , 10:00 Uhr
3. Übung Abgabe bis 10.11.2015, 10:00 Uhr Aufgabe 3.1: Java-Synchronisation a) An welchen Stellen im Code kann das Schlüsselwort synchronized verwendet werden? b) Wie nennt sich die Synchronisations-Art,
MehrMethoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom
Einstieg in die Informatik mit Java, Vorlesung vom 2.5.07 Übersicht 1 2 definition 3 Parameterübergabe, aufruf 4 Referenztypen bei 5 Überladen von 6 Hauptprogrammparameter 7 Rekursion bilden das Analogon
MehrTag 4 Repetitorium Informatik (Java)
Tag 4 Repetitorium Informatik (Java) Dozent: Patrick Kreutzer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2016/2017 Willkommen zum Informatik-Repetitorium!
MehrFunktionale Programmiersprachen
Funktionale Programmiersprachen An den Beispielen Haskell und Erlang Übersicht Programmiersprachen λ-kalkül Syntax, Definitionen Besonderheiten von funktionalen Programmiersprache, bzw. Haskell Objektorientierte
MehrJAVA für Nichtinformatiker - Probeklausur -
JAVA für Nichtinformatiker - Probeklausur - Die folgenden Aufgaben sollten in 150 Minuten bearbeitet werden. Aufgabe 1: Erläutere kurz die Bedeutung der folgenden Java-Schlüsselwörter und gib Sie jeweils
MehrJava: Kapitel 1. Überblick. Programmentwicklung WS 2008/2009. Holger Röder Holger Röder
Java: Kapitel 1 Überblick Programmentwicklung WS 2008/2009 Holger Röder holger.roeder@informatik.uni-stuttgart.de Was ist Java? Die Java-Technologie umfasst die Programmiersprache Java sowie die Java-Plattform
MehrProbeklausur: Programmierung WS04/05
Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,
MehrSchwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen
Schwerpunkte 7. Verkettete Strukturen: Listen Java-Beispiele: IntList.java List.java Stack1.java Vergleich: Arrays verkettete Listen Listenarten Implementation: - Pascal (C, C++): über Datenstrukturen
MehrKapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen
Kapitel 9 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Attribute von Klassen, Methoden und Variablen Interfaces WS 07/08 1/ 18 2/ 18
MehrKapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik
Klassen und höhere Datentypen Objekte, Felder, Methoden Küchlin/Weber: Einführung in die Informatik Klassen Klasse (class) stellt einen (i.a. benutzerdefinierten) Verbund-Datentyp dar Objekte sind Instanzen
MehrAusdrücke in Scala. Funktionale Programmierung. Christoph Knabe FB VI
Ausdrücke in Scala Funktionale Programmierung Christoph Knabe FB VI 17.10.2014 Inhalt Einfache Ausdrücke Infix-Notation für Methodenaufruf Sonderzeichen in Bezeichnern Schlüsselwörter Konstanten Variablen
MehrIntroduction to Python. Introduction. First Steps in Python. pseudo random numbers. May 2016
to to May 2016 to What is Programming? All computers are stupid. All computers are deterministic. You have to tell the computer what to do. You can tell the computer in any (programming) language) you
MehrInformatik II Übung 05. Benjamin Hepp 3 April 2017
Informatik II Übung 05 Benjamin Hepp benjamin.hepp@inf.ethz.ch 3 April 2017 Java package Hierarchie import.. nur noetig um Klassen aus anderen Packeten zu importieren Es kann auch immer der vollstaendige
MehrJava 8. basierend auf Folien von Florian Erhard
Java 8 basierend auf Folien von Florian Erhard Java 8 Erschienen am 18. März 2014 Verbessertes Contended Locking Projekt Lambda Erweiterungen der Collections-API (Streams) Neue Date and Time API Verbesserungen
Mehr2.2 Prozesse in Java
2.2 Prozesse in Java! Java sieht kein Schlüsselwort für Prozesse vor, sondern bestimmte Klassen und Schnittstellen. Mit anderen Worten: der Prozessbegriff wird mit Mitteln der Objektorientierung eingeführt.
Mehr2 Teil 2: Nassi-Schneiderman
2 Teil 2: Nassi-Schneiderman Wie kann man Nassi-Schneiderman in einer objektorientierten Sprache verwenden? Jedes Objekt besitzt Methoden, welche die Attribute des Objektes verändern. Das Verhalten der
MehrEinstieg in die Informatik mit Java
1 / 26 Einstieg in die Informatik mit Java Felder Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 26 1 Was sind Felder? 2 Vereinbarung von Feldern 3 Erzeugen von Feldern
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen
Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1 Kapitel 11 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 2 Ziele Implementierungen für
MehrClient-Server-Beziehungen
Client-Server-Beziehungen Server bietet Dienste an, Client nutzt Dienste Objekt ist gleichzeitig Client und Server Vertrag zwischen Client und Server: Client erfüllt Vorbedingungen eines Dienstes Server
MehrProzesse und Threads. wissen leben WWU Münster
Münster Multi Threading in C++ 1 /19 Prozesse und Threads Ein Unix-Prozess hat IDs (process,user,group) Umgebungsvariablen Verzeichnis Programmcode Register, Stack, Heap Dateideskriptoren, Signale message
MehrC# im Vergleich zu Java
C# im Vergleich zu Java Serhad Ilgün Seminar Universität Dortmund SS 03 Gliederung Entstehung von C# und Java Überblick von C# und Java Unterschiede und Gemeinsamkeiten Zusammenfassung und Ausblick Entstehung
MehrThreading. Arthur Zaczek. Aug 2015
Arthur Zaczek Aug 2015 1 Threading 1.1 Motivation Threading erlaubt die gleichzeitige Ausführung von mehreren Programmteilen. mehrere gleichzeitige Anfragen: Webserver, Datenbank (zu) lange laufende Berechnungen:
MehrHeap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen
Heap vs. vs. statisch Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen
MehrImplementation of a Framework Component for Processing Tasks within Threads on the Application Level
Implementation of a Framework Component for Processing Tasks within Threads on the Application Level Deutsches Krebsforschungszentrum, for Processing Task within Threads on the Application Level Motivation
MehrÜbergang von funktionaler zu OOP. Algorithmen und Datenstrukturen II 1
Übergang von funktionaler zu OOP Algorithmen und Datenstrukturen II 1 Imperative vs. funktionale Programmierung Plakativ lassen sich folgende Aussagen treffen: funktional: imperativ: Berechnung von Werten
MehrEinführung in die Programmierung 1
Einführung in die Programmierung 1 Einführung (S.2) Einrichten von Eclipse (S.4) Mein Erstes Programm (S.5) Hallo Welt!? Programm Der Mensch (S.11) Klassen (S.12) Einführung Wie Funktioniert Code? Geschriebener
MehrInformatik II. Giuseppe Accaputo, Felix Friedrich, Patrick Gruntz, Tobias Klenze, Max Rossmannek, David Sidler, Thilo Weghorn FS 2017
1 Informatik II Übung 6 Giuseppe Accaputo, Felix Friedrich, Patrick Gruntz, Tobias Klenze, Max Rossmannek, David Sidler, Thilo Weghorn FS 2017 Heutiges Programm 2 1 Klassen - Technisch 2 Prediscussion
Mehr6. Verkettete Strukturen: Listen
6. Verkettete Strukturen: Listen 5 K. Bothe, Inst. f ür Inf., HU Berlin, PI, WS 004/05, III.6 Verkettete Strukturen: Listen 53 Verkettete Listen : Aufgabe Vergleich: Arrays - verkettete Listen Listenarten
MehrKlausur Software-Entwicklung März 01
Aufgabe 1: minimaler Punktabstand ( 2+5 Punkte ) Matrikelnr : In einem Array punkte sind Koordinaten von Punkten gespeichert. Ergänzen Sie in der Klasse Punkt eine Klassen-Methode (=static Funktion) punktabstand,
MehrEinstieg in die Informatik mit Java
1 / 26 Einstieg in die Informatik mit Java Methoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 26 1 Methoden 2 Methodendefinition 3 Parameterübergabe, Methodenaufruf
MehrKapitel 8: Serialisierbarkeit
Liste P: Programmieren mit Java WS 2001/2002 Prof. Dr. V. Turau FH Wiesbaden Kapitel 8: Serialisierbarkeit Folie 189 : Serialisierbarkeit Die Umwandlung eines komplexen Objektes in ein Byte-Array nennt
MehrTheorie zu Übung 8 Implementierung in Java
Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept
MehrJava I Vorlesung 6 Referenz-Datentypen
Java I Vorlesung 6 Referenz-Datentypen 7.6.2004 Referenzen this, super und null Typkonvertierung von Referenztypen Finale Methoden und Klassen Datentypen in Java In Java gibt es zwei Arten von Datentypen:
Mehr0. Einführung & Motivation
0. Einführung & Motivation Ansatz: "C++ für Java-Kenner" Konzentration auf semantische Unterschiede 'gleichartiger' Konzepte Erörterung der C++ -spezifischen Konzepte (Overloading, Templates) Anspruch
MehrGrundzüge der Programmierung. Wiederverwendung VERERBUNG
Grundzüge der Programmierung Wiederverwendung VERERBUNG Inhalt dieser Einheit Syntax: Vererbung in Java Superklassen - Subklassen Konstruktorenaufruf in Subklassen super, abstract und final 2 Code-Reuse
MehrHeap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen
Heap vs. vs. statisch Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen
MehrMethoden und Klassen. Silke Trißl Wissensmanagement in der Bioinformatik
Methoden und Klassen Silke Trißl Wissensmanagement in der Bioinformatik Wiederholung Jede Applikation braucht eine Klasse mit einer main-methode Eintrittspunkt in das Programm Die main-methode wird public
Mehr