Vergleich unterschiedlicher virtueller Maschinen
|
|
- Kurt Melsbach
- vor 8 Jahren
- Abrufe
Transkript
1 Vergleich unterschiedlicher virtueller Maschinen Seminar: Compiler-Konstruktion Fachbereich Programmiersprachen und Übersetzer Philipp Bähre
2 Gliederung: Einführung Operandenstack und virtuelle Register Vergleich Stack- und Registerbasierte VM - Bytecode - Performance Parrot VM - Überblick - Memory Allocation Alternativer Garbage Collecting Algorithmus - Tri-Color Mark 2
3 Operandenstack und virtuelle Register: Operandenstack Beliebig großer Stack Schneller Zugriff auf Operanden auf dem Stack Einfügeposition / Leseposition ist bekannt Zugriff nur auf oberstes Element Einfacher Bytecode virtuelle Register für Operanden Begrenzte Anzahl virtueller Register Einfügeposition / Leseposition muss gefunden werden Zugriff auf alle Register Explizite Registeradressierung im Bytecode 3
4 Performance: Zusammensetzung der Kosten für die Ausführung eines Bytecode Befehls auf einer virtuellen Maschine: Instruction Dispatch (Abrufen, Übersetzen und Starten des Befehls) Operandenzugriff (Speicherposition finden und Wert auslesen/schreiben) Ausführen der Berechnung 4
5 Operandenzugriff explizit: Zeitbedarf für Operandenzugriff bei Befehlen mit explizit angegebenen Operanden ergibt sich aus: z.b.: iload a Finden der Speicherposition (aus Befehl decodieren) Eigentlicher Zugriff auf den Operanden 5
6 Operandenzugriff implizit: Zugriffe auf den Stack sind daher bedeutend schneller: z.b.: iadd Speicherpositionen der Operanden sind bekannt Dekodieren aus Befehl entfällt Schneller Zugriff auf Operanden bei reinen Stack Operationen 6
7 Beispiel: Variablenzuweisung a = b + c in Java-Bytecode: iload c iload b iadd istore a 3 Adress-Bytecode: iload v1, b iload v2, c iadd v3, v1, v2 istore a, v3 Read c, Write to Stack Read b, Write to Stack Read Stack, Read Stack, Write to Stack Read from Stack, Write a Read b, Write to v1 Read c, Write to v2 Read v1, Read v2, Write to v3 Read v3, Write a 7
8 Beispiel: Variablenzuweisung a = b + c in Java-Bytecode: iload c iload b iadd istore a 3 Adress-Bytecode: iload v1, b iload v2, c iadd v3, v1, v2 istore a, v3 5 Leseoperationen + 4 Schreiboperationen 5 Leseoperationen + 4 Schreiboperationen => gleiche Kosten, aber größerer Bytecode 8
9 Beispiel: Annahme: 1 Byte pro Operand Explizite Unterscheidung zwischen lokaler Variable und Register iload v1, b iload v2, c iadd v3, v1, v2 istore a, v3 iadd a, b, c 8 Bit 256 Lokale Variablen Register 1 7 Bit 128 Lokale Variablen Register 1 Unterscheidungs Bit 7 Bit Adressierung 9
10 Instruction Dispatch: in Java-Bytecode: iload c iload b iadd istore a 3 Adress-Bytecode: iadd a, b, c 4 mal Dispatch 1 mal Dispatch Registerbasierte VM reduziert Anzahl der Dispatches Tatsächlicher Performanzgewinn? 10
11 Instruction Dispatch: Befehl aus Bytecode laden Befehl dekodieren (switch dispatch, table dispatch) Operanden-Adressen aus Bytecode dekodieren Erzeugen und Ausführen des Maschinencodes 11
12 Performance: Instruction Dispatch weniger Dispatches bei registerbasierter Architektur, aber größere Bytecodebefehle Operandenzugriff vergleichbare Kosten für beide Architekturen Ausführen der Berechnung vergleichbare Kosten für beide Architekturen 12
13 Registerallokation Stack VM: Zuweisung Stackposition => Maschinenregister e5 e4 e3 e2 e1 r4 r3 r2 r1 r4 r3 r2 r1 Maschinenregister 13
14 Registerallokation Register VM: Direkte Abbildung virtuelle Register => Maschinenregister Einfacher als Zuweisung Stackposition => Maschinenregister v1 v2 v3 v4 v5 v6... vn Virtuelle Register r1 r2 r3 r4 Maschinenregister 14
15 Beschränkung durch Architektur: Performancegewinn bei Registerbasierter VM stark abhängig von der Zielarchitektur z.b. x86 Architektur: 4 allgemeine Register AX,BX,CX,DX spezielle opcodes für einzelne Register ( [AX]++ => 04h, [BX]++ => 80C3h ) Eventuell nicht alle Register für alle Operationen verwendbar z.b. ARM Architektur: 16 Register konsistent verwendbar 15
16 Auswirkungen auf die Performance: Register VM Bytecode-Befehl ist 4 Byte groß (Maschinenwort) Operandenadressierung 1 Byte 256 (128) virtuelle Register (evtl. zusätzliche Speicherzugriffe) Befehle in 3AdressCode werden im Schnitt zu mehr Assembler Befehlen Verschiedene mögliche Dispatch Implementierungen (threaded Dispatch, Switch dispatch...) Zielarchitektur Auswirkungen von JIT Compiling nicht untersucht 16
17 Ausführungszeit: Formel zur Annäherung der Ausführungszeit: t(vrm) t(vsm) #dispatches * t(dispatch) + #fetches * t(fetch) 17
18 Statistiken zur Performance: DalvikVM: 35% mehr Bytes für den Bytecode 30% weniger Bytecode Befehle 35% weniger Maschinenbefehle Tests mit Lua und Parrot: 44,81% mehr Bytes für den Bytecode 34,88% weniger Bytecode Befehle 18
19 Beispiel Dalvik Bytecode: public static long sumarray(int[] arr) { long sum = 0; for (int i : arr) { sum += i; } return sum; } Kompiliert in Java Bytecode Crosscompiler dx kompiliert Java Bytecode zu Dalvik Bytecode 19
20 Beispiel Dalvik Bytecode: 0000: lconst_0 0001: lstore_1 0002: aload_0 0003: astore_3 0004: aload_3 0005: arraylength 0006: istore : iconst_0 0009: istore b: iload d: iload f: if_icmpge : aload_3 0013: iload : iaload 0016: istore : lload_1 0019: iload b: i2l 001c: ladd 001d: lstore_1 001e: iinc 05, # : goto 000b 0024: lload_1 0025: lreturn 0000: const-wide/16 v0, #long : array-length v2, v8 0003: const/4 v3, #int : move v7, v3 0005: move-wide v3, v0 0006: move v0, v7 0007: if-ge v0, v2, : aget v1, v8, v0 000b: int-to-long v5, v1 000c: add-long/2addr v3, v5 000d: add-int/lit8 v0, v0, #int 1 000f: goto : return-wide v3 20
21 Beispiel Dalvik Bytecode: 0000: lconst_0 0001: lstore_1 0002: aload_0 0003: astore_3 0004: aload_3 0005: arraylength 0006: istore : iconst_0 0009: istore b: iload d: iload f: if_icmpge : aload_3 0013: iload : iaload 0016: istore : lload_1 0019: iload b: i2l 001c: ladd 001d: lstore_1 001e: iinc 05, # : goto 000b 0024: lload_1 0025: lreturn Java Bytecode: 25 Bytecode-Befehle 36 Byte Bytecode 21
22 Beispiel Dalvik Bytecode: Dalvik Bytecode 13 Bytecode-Befehle 40 Byte Bytecode Java Bytecode 25 Bytecode-Befehle 36 Byte Bytecode Ergebniss: 48% weniger Bytecode Befehle 11% größerer Bytecode 0000: const-wide/16 v0, #long : array-length v2, v8 0003: const/4 v3, #int : move v7, v3 0005: move-wide v3, v0 0006: move v0, v7 0007: if-ge v0, v2, : aget v1, v8, v0 000b: int-to-long v5, v1 000c: add-long/2addr v3, v5 000d: add-int/lit8 v0, v0, #int 1 000f: goto : return-wide v3 22
23 Parrot VM: Parrot is a virtual machine designed to efficiently compile and execute bytecode for dynamic languages. Parrot currently hosts a variety of language implementations in various stages of completion, including Tcl, Javascript, Ruby, Lua, Scheme, PHP, Python, Perl 6, APL, and a.net bytecode translator. -parrot.org Registerbasiert Unterstützt dynamische Typisierung Ermöglicht Interaktionen zwischen allen kompilierten Sprachen Crosscompiler (Trennung von Compiler und VM) Plattformunabhängiger eigener Bytecode 4 verschiedene Registertypen für: - integers, numbers, strings und Polymorphic Containers (PMCs) 23
24 Parrot VM: Compiler / Crosscompiler verfügbar für: * abc An implementation of bc * APL An implementation of APL * BASIC An implementation of BASIC * befunge An implementation of Befunge-93 * bf An implementation of Brainf**k * c99 An implementation of C, C99 dialect * Cardinal An implementation of Ruby 1.9 * chitchat An implementation of Smalltalk * dotnet A.Net bytecode translator * eclectus An implementation of Scheme * ecmascript An implementation of ECMAScript * forth An implementation of Forth * fun An implementation of Joy * gil Generic Imperative Language * hq9plus An implementation of HQ9 Plus * jako An implementation of Jako * jvm A Java VM bytecode translator * json An implementation of JSON * Kea-CL An implementation of Common Lisp * lazy-k An implementation of Lazy K * lisp An implementation of LISP * lolcode An implementation of LOLCODE * lua An implementation of Lua 5.1 * Lua2PIR An implementation of Lua 5.1 * matrixy An implementation of Octave * m4 An implementation of GNU m4 * markdown An implementation of Markdown * NQP A lightweight language used in Parrot's compiler tools * Monkey An implementation of Lua 5.1 * ook An implementation of Ook! * partcl An implementation of Tcl * pheme An implementation of Scheme * Perk An implementation of Java * Pipp An implementation of PHP * Pirate An implementation of Python * PJS An implementation of ECMAScript * primitivearc An implementation of Arc * Punie An implementation of Perl 1.0 * Pynie An implementation of Python * Rakudo Perl 6 An implementation of Perl 6 * scheme An implementation of Scheme * Scheme to PIR with Chicken An implementation of Scheme * shakespeare-parrot An implementation of Shakespeare * squaak A tutorial language * unlambda An implementation of Unlambda * WMLScript An implementation of WMLScript 24
25 Memory Allocation Arena: Parrot reserviert Speicher in Blocks die Arena genant werden. Eine Arena kann genau N Objekte der Größe M enthalten und liegt dicht im Speicher Arena1[x] Arena2[x] Arena3[y] obj1a obj1b obj1c obj2a 25
26 Memory Allocation Pool: Mehrere Arenen vom selben Typ werden in einem Pool zusammengefasst ein Pool ist als verkettete Liste implementiert ein Pool enthält keine, eine oder mehrere Arenen welche alle Objekte derselben Größe speichern können Arena1[x] Arena2[x] Arena3[y] obj1a obj1b obj1c obj2a free_list Pool 1 Pool 2 free_list 26
27 Memory Allocation: alle Pools werden von der arena_base structure im Interpreter referenziert Interpreter arena_base Arena1[x] Arena2[x] Arena3[y] obj1a obj1b obj1c obj2a Pool 1 free_list Pool 2 free_list 27
28 Memory Allocation: Jeder Pool enthält eine Liste der enthaltenen, nicht benötigten Objekte, die free_list. Bei der Garbage Collection werden freigegebene Objekte vom Garbage Collector der free_list hinzugefügt Ist die free_list leer wird die Garbage Collection gestartet oder eine neue Arena alloziiert die feste Größe der Objekte in einer Arena erleichtert Compacting / Copying / Defragmenting Collection 28
29 Alternativer GC Ansatz: Tri-Color Mark: Objekte werden in drei Bereiche aufgeteilt - weiss dead Objects - grau live Objects deren referenzierte Objekte noch nicht markiert sind. - schwarz live Objects deren referenzierte Objekte markiert sind. 29
30 Alternativer GC Ansatz: Initialer Durchlauf: Alle Objekte starten als weisse Objekte Die root Objekte werden grau markiert 30
31 Alternativer GC Ansatz: Phase 1: Wähle ein graues Objekt und markiere alle direkt referenzierten Objekte grau Markiere das gewählte Objekt schwarz 31
32 Alternativer GC Ansatz: Phase 2: Alle weissen Objekte können von der GC entfernt werden Alle Objekte werden weiss und die root elemente grau markiert 32
33 Alternativer GC Ansatz: Tri-Mark kann problemlos in Teilschritte zerlegt werden Teilschritte können jeweils während minimal kurzer Pausen im Programmablauf durchgeführt werden Problematische Sonderfälle: (Objekt erzeugt Objekt erzeugt Objekt usw.) Compacting kann jedoch zu längeren Pausen führen. Dank Arena Struktur kann Compacting auch in Teilschritte zerlegt werden. 33
34 Fazit: Registerbasierte virtuelle Maschinen können potenziell eine bessere Performance haben als stackbasierte VMs. Aber: abhängig von vielen Faktoren Performancegewinn sinkt stark mit schnellerem Dispatch und bei Verwendung von JIT Compiling mit linear scan. Parrot VM bietet anhand der Struktur ihrer Memory Allocation und des Tri-Mark Garbage Collecting eine mögliche Alternative Umgebung für realtime Anwendungen. 34
35 Fragen? 35
36 Literatur D. Gregg, A. Beatty, K. Casey, B. Davis, and A. Nisbet. The case for virtual register machines. S cience of Computer P rogramming, S pecial Issue on Interpreters Virtual Machines and E mulators, To appear. Yunhe Shi, David Gregg, Andrew Beatty, and M. Anton Ertl. Virtual machine s howdown: s tack vers us regis ters. In C onference on Virtual execution environments (VEE),
Diplomarbeit Antrittsvortrag
Diplomarbeit Antrittsvortrag Christian Müller Run-time byte code compilation, interpretation and optimization for Alice Betreuer: Guido Tack Verantwortlicher Prof.: Gert Smolka Die nächsten 15 Minuten...
MehrGrundlagen von Python
Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren
MehrJ.5 Die Java Virtual Machine
Java Virtual Machine Die Java Virtual Machine 22 Prof. Dr. Rainer Manthey Informatik II Java-Compiler und Java Virtual Machine Quellcode-Datei class C... javac D.java Java-Compiler - Dateien class class
MehrJava Virtual Machine (JVM) Bytecode
Java Virtual Machine (JVM) durch Java-Interpreter (java) realisiert abstrakte Maschine = Softwareschicht zwischen Anwendung und Betriebssystem verantwortlich für Laden von Klassen, Ausführen des Bytecodes,
MehrDie Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter
Die Programmiersprache Java Dr. Wolfgang Süß Thorsten Schlachter Eigenschaften von Java Java ist eine von der Firma Sun Microsystems entwickelte objektorientierte Programmiersprache. Java ist......a simple,
MehrEinführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005
Einführung in Java PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Gliederung 1. Was ist Java / Geschichte von Java 2. Prinzip der Plattformunabhängigkeit 3. Wie kommt man vom Quellcode zum Programm
MehrProgrammierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester 2012. hack@cs.uni-saarland.de. boesche@cs.uni-saarland.
1 Programmierung 2 Übersetzer: Code-Erzeugung Sebastian Hack hack@cs.uni-saarland.de Klaas Boesche boesche@cs.uni-saarland.de Sommersemester 2012 Bytecodes Der Java Übersetzer erzeugt keine Maschinensprache
MehrInnere Klassen in Java
Innere Klassen in Java SS 2012 Prof. Dr. Margarita Esponda Innere Klassen Klassen- oder Interfacedefinitionen können zur besseren Strukturierung von Programmen verschachtelt werden Eine "Inner Class" wird
Mehr4D Server v12 64-bit Version BETA VERSION
4D Server v12 64-bit Version BETA VERSION 4D Server v12 unterstützt jetzt das Windows 64-bit Betriebssystem. Hauptvorteil der 64-bit Technologie ist die rundum verbesserte Performance der Anwendungen und
MehrIn 12 Schritten zum mobilen PC mit Paragon Drive Copy 11 und Microsoft Windows Virtual PC
PARAGON Technologie GmbH, Systemprogrammierung Heinrich-von-Stephan-Str. 5c 79100 Freiburg, Germany Tel. +49 (0) 761 59018201 Fax +49 (0) 761 59018130 Internet www.paragon-software.com Email sales@paragon-software.com
MehrZählen von Objekten einer bestimmten Klasse
Zählen von Objekten einer bestimmten Klasse Ziel, Inhalt Zur Übung versuchen wir eine Klasse zu schreiben, mit der es möglich ist Objekte einer bestimmten Klasse zu zählen. Wir werden den ++ und den --
MehrPraktikum Compilerbau Sitzung 9 Java Bytecode
Praktikum Compilerbau Sitzung 9 Java Bytecode Prof. Dr.-Ing. Gregor Snelting Matthias Braun und Sebastian Buchwald IPD Snelting, Lehrstuhl für Programmierparadigmen KIT Universität des Landes Baden-Württemberg
MehrVirtueller Seminarordner Anleitung für die Dozentinnen und Dozenten
Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten In dem Virtuellen Seminarordner werden für die Teilnehmerinnen und Teilnehmer des Seminars alle für das Seminar wichtigen Informationen,
MehrVorkurs Informatik WiSe 15/16
Java 1 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 12.10.2015 Technische Universität Braunschweig, IPS Überblick Organisatorisches Arbeitsablauf Hello! 12.10.2015 Dr. Werner Struckmann / Stephan
MehrFassade. Objektbasiertes Strukturmuster. C. Restorff & M. Rohlfing
Fassade Objektbasiertes Strukturmuster C. Restorff & M. Rohlfing Übersicht Motivation Anwendbarkeit Struktur Teilnehmer Interaktion Konsequenz Implementierung Beispiel Bekannte Verwendung Verwandte Muster
MehrVorlesung Objektorientierte Softwareentwicklung. Kapitel 0. Java-Überblick
Vorlesung Objektorientierte Softwareentwicklung Sommersemester este 2008 Kapitel 0. Java-Überblick Was sind die Ziele? Warum Java? Komplexe Anwendungen e-business verteilt zuverlässig sicher mobil persistent
MehrVersion 0.3. Installation von MinGW und Eclipse CDT
Version 0.3 Installation von MinGW und Eclipse CDT 1. Stellen Sie fest, ob Sie Windows in der 32 Bit Version oder in der 64 Bit Version installiert haben. 2. Prüfen Sie, welche Java Runtime vorhanden ist.
MehrJava Kurs für Anfänger Einheit 4 Klassen und Objekte
Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse
MehrTypumwandlungen bei Referenztypen
Typumwandlungen bei Referenztypen Genau wie es bei einfachen Typen Typumwandlungen gibt, gibt es auch bei Referenztypen Umwandlungen von einem Referenztypen in einen anderen Referenztypen, die wie bei
MehrI.1 Die Parrot Assemblersprache
I.1 Die Parrot Assemblersprache Die virtuelle CPU Parrot ermöglicht die Verarbeitung der Parrot Assemblersprache (PASM). Zum Einstieg soll ein erstes Beispiel die Ausführung einer PASM-Datei zeigen. Legen
MehrEffiziente Java Programmierung
Effiziente Java Programmierung Seminar Implementierung moderner virtueller Maschinen am Beispiel von Java SS 2009 von Reinhard Klaus Losse 20. Mai 2009 Gliederung Definition Effizienz Werkzeuge zum Messen
MehrJavadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck
Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle
MehrIn 15 einfachen Schritten zum mobilen PC mit Paragon Drive Copy 10 und Microsoft Windows Virtual PC
PARAGON Technologie GmbH, Systemprogrammierung Heinrich-von-Stephan-Str. 5c 79100 Freiburg, Germany Tel. +49 (0) 761 59018201 Fax +49 (0) 761 59018130 Internet www.paragon-software.com Email sales@paragon-software.com
MehrIn 15 Schritten zum mobilen PC mit Paragon Drive Copy 14 und VMware Player
PARAGON Technologie GmbH, Systemprogrammierung Heinrich-von-Stephan-Str. 5c 79100 Freiburg, Germany Tel. +49 (0)761 59018-201 Fax +49 (0)761 59018-130 Internet www.paragon-software.com E-Mail sales@paragon-software.com
MehrJava für Embedded Systems
Java für Embedded Systems Marc Balmer, micro systems marc@msys.ch 25. April 2001 Java-fähige Embedded Systems Palm PDA TINI Board Java-Ring ibutton Cyberflex Smart Card... Embedded Systems Steuer- und
MehrProgrammierung. Programme, Compiler, virtuelle Maschinen, Java
Programmierung Programme, Compiler, virtuelle Maschinen, Java Programme Ein Programm ist eine Folge von Anweisungen, die einem Computer sagen, was er tun soll tuwas.c for(int i=0; i=0; i
MehrIn 15 Schritten zum mobilen PC mit Paragon Drive Copy 11 und VMware Player
PARAGON Technologie GmbH, Systemprogrammierung Heinrich-von-Schritthan-Str. 5c 79100 Freiburg, Germany Tel. +49 (0) 761 59018201 Fax +49 (0) 761 59018130 Internet www.paragon-software.com Email sales@paragon-software.com
MehrEinfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung
Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative student"
MehrTipps und Tricks zu Netop Vision und Vision Pro
Tipps und Tricks zu Netop Vision und Vision Pro Anwendungen auf Schülercomputer freigeben und starten Netop Vision ermöglicht Ihnen, Anwendungen und Dateien auf allen Schülercomputern gleichzeitig zu starten.
MehrProgrammiertechnik II
Analyse von Algorithmen Algorithmenentwurf Algorithmen sind oft Teil einer größeren Anwendung operieren auf Daten der Anwendung, sollen aber unabhängig von konkreten Typen sein Darstellung der Algorithmen
MehrCADEMIA: Einrichtung Ihres Computers unter Windows
CADEMIA: Einrichtung Ihres Computers unter Windows Stand: 21.02.2015 Java-Plattform: Auf Ihrem Computer muss die Java-Plattform, Standard-Edition der Version 7 (Java SE 7) oder höher installiert sein.
MehrBUILDNOTES TOPAL FINANZBUCHHALTUNG
BUILDNOTES TOPAL FINANZBUCHHALTUNG VERSION 7.5.11.0 Inhaltsverzeichnis 1. EINFÜHRUNG... 2 1.1. Zweck... 2 1.2. Neuerungen... 2 1.2.1. Import... 2 1.2.2. Importvorlagen... 3 1.2.3. Sicherheitseinstellungen...
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
MehrEinführung in die C++ Programmierung für Ingenieure
Einführung in die C++ Programmierung für Ingenieure MATTHIAS WALTER / JENS KLUNKER Universität Rostock, Lehrstuhl für Modellierung und Simulation 14. November 2012 c 2012 UNIVERSITÄT ROSTOCK FACULTY OF
MehrEinführung in PHP. (mit Aufgaben)
Einführung in PHP (mit Aufgaben) Dynamische Inhalte mit PHP? 2 Aus der Wikipedia (verkürzt): PHP wird auf etwa 244 Millionen Websites eingesetzt (Stand: Januar 2013) und wird auf etwa 80 % aller Websites
MehrTooldemo: Soot. Softwareanalyse SS 2011 Veranstalter: Prof. Dr. Klaus Ostermann Tillmann Rendel, M.Sc. Von Kim Maurice Nuspl
Softwareanalyse SS 2011 Veranstalter: Prof. Dr. Klaus Ostermann Tillmann Rendel, M.Sc. Tooldemo: Soot (http://www.sable.mcgill.ca/soot/) Von Kim Maurice Nuspl Gliederung: Was ist Soot? Eclipse Plugin Grundlagen
MehrOperationalisierbare Qualitätskriterien für die Programmierung mit Erfahrungen aus PRÜ1 und PRÜ2
Operationalisierbare Qualitätskriterien für die Programmierung mit Erfahrungen aus PRÜ1 und PRÜ2 von Christoph Knabe http://public.beuth-hochschule.de/~knabe/ Ch. Knabe: Operationalisierbare Qualitätskriterien
MehrProf. Dr. Uwe Schmidt. 21. August 2007. Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)
Prof. Dr. Uwe Schmidt 21. August 2007 Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252) Zeit: 75 Minuten erlaubte Hilfsmittel: keine Bitte tragen Sie Ihre Antworten und fertigen
MehrÜbung 8: Semaphore in Java (eigene Implementierung)
Übung 8: Semaphore in Java (eigene Implementierung) Ziel der Übung: Diese Übung dient dazu, eine eigene Implementierung einer Semaphore-Klasse in der Programmiersprache Java kennenzulernen. Anschließend
MehrCORBA. 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
MehrObjektorientierte Programmierung
Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum
MehrObjektorientierte Programmierung. Kapitel 12: Interfaces
12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/
MehrKompilieren und Linken
Kapitel 2 Kompilieren und Linken Bevor wir uns auf C++ selbst stürzen, brauchen wir einiges Vorgeplänkel, wie man komfortabel ein größeres C++- kompilieren kann. Mit Java stellt sich der Kompiliervorgang
MehrPrinzipien Objektorientierter Programmierung
Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................
MehrCompilerbau mit Phoenix
Übersicht 2 Was ist ein Compiler? Frontend Analyse Backend Synthese Compiler-Pässe 3 Was ist ein Compiler? Frontend (Eingabesprache) Analyse Backend (Ausgabesprache) Synthese 4 Was ist ein Compiler? Frontend
MehrFunktionale 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
MehrJava-Prozessoren. Die Java Virtual Machine spezifiziert... Java Instruktions-Satz. Datentypen. Operanden-Stack. Konstanten-Pool.
Die Java Virtual Machine spezifiziert... Java Instruktions-Satz Datentypen Operanden-Stack Konstanten-Pool Methoden-Area Heap für Laufzeit-Daten Class File Format 26 Die Java Virtual Machine Java Instruktions-Satz
MehrAlgorithmen und Programmieren II Einführung in Python
Algorithmen und Programmieren II Einführung in Python SS 2012 Prof. Dr. Margarita Esponda 1 Was ist Python? eine Skript-Sprache Anfang der 90er Jahre entwickelt. Erfinder: Guido van Rossum an der Universität
MehrSchritt-Schritt-Anleitung zum mobilen PC mit Paragon Drive Copy 10 und VMware Player
PARAGON Technologie GmbH, Systemprogrammierung Heinrich-von-Stephan-Str. 5c 79100 Freiburg, Germany Tel. +49 (0) 761 59018201 Fax +49 (0) 761 59018130 Internet www.paragon-software.com Email sales@paragon-software.com
MehrDas Handbuch zu KNetAttach. Orville Bennett Übersetzung: Thomas Bögel
Orville Bennett Übersetzung: Thomas Bögel 2 Inhaltsverzeichnis 1 Einführung 5 2 KNetAttach verwenden 6 2.1 Hinzufügen von Netzwerkordnern............................ 6 3 Rundgang durch KNetAttach 8 4 Danksagungen
Mehrschnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv
Roboter programmieren mit NXC für Lego Mindstorms NXT 1. Auflage Roboter programmieren mit NXC für Lego Mindstorms NXT schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv Verlag
MehrAbacus Formula Compiler (AFC)
Abacus Formula Compiler (AFC) Alle kennen Excel - jetzt sogar Ihre Java- Applikation! Bringt Tabellenkalkulationen auf die JVM http://formulacompiler.org/ Peter Arrenbrecht für Abacus Research AG http://abacus.ch/
MehrEin Scan basierter Seitenangriff auf DES
Ein Scan basierter Seitenangriff auf DES Seminar Codes & Kryptographie SS04 Tobias Witteler 29.06.2004 Struktur des Vortrags 1. Einführung / Motivation 2. Struktur von DES 3. Die Attacke Begriffsklärung:
MehrProgrammieren was ist das genau?
Programmieren was ist das genau? Programmieren heisst Computerprogramme herstellen (von griechisch programma für Vorschrift). Ein Computerprogramm ist Teil der Software eines Computers. Als Software bezeichnet
Mehr17.1.2014 Einführung in die Programmierung Laborübung bei Korcan Y. Kirkici. 12.Übung 13.1. bis 17.1.2014
17.1.2014 Einführung in die Programmierung Laborübung bei Korcan Y. Kirkici 12.Übung 13.1. bis 17.1.2014 1 BEFRAGUNG http://1.bp.blogspot.com/- waaowrew9gc/tuhgqro4u_i/aaaaaaaaaey/3xhl 4Va2SOQ/s1600/crying%2Bmeme.png
MehrEinführung in die Programmiersprache Python
Einführung in die Programmiersprache Python Dipl.-Inf. Frank Hofmann 10. April 2007 Zielsetzung Fragen, die sich jeder stellt Kann ich damit Programmieren lernen? Hilfe! Noch eine Programmiersprache?!
MehrBerner Fachhochschule Hochschule für Technik und Informatik HTI. Kapitel 1. Einstieg in Java. Dr. Elham Firouzi 06.09.10 1
Kapitel 1 Einstieg in Java Dr. Elham Firouzi 06.09.10 1 1 : Einstieg in Java Einleitung Ein erstes Beispiel Berner Fachhochschule Entwicklung von Java-Programmen Applikationen Applets Vor und Nachteile
MehrGliederung. Programmierparadigmen. Sprachmittel in SCHEME. Objekte: Motivation. Objekte in Scheme
Gliederung Programmierparadigmen D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg 1 Einführung Sprachmittel Sommer 2011, 20. Juni 2011,
Mehrpeer-to-peer Dateisystem Synchronisation
Ziel Realisierungen Coda Ideen Fazit Literatur peer-to-peer Dateisystem Synchronisation Studiendepartment Informatik Hochschule für Angewandte Wissenschaften Hamburg 30. November 2007 Ziel Realisierungen
MehrJava Enterprise Architekturen Willkommen in der Realität
Java Enterprise Architekturen Willkommen in der Realität Ralf Degner (Ralf.Degner@tk-online.de), Dr. Frank Griffel (Dr.Frank.Griffel@tk-online.de) Techniker Krankenkasse Häufig werden Mehrschichtarchitekturen
MehrIn diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können.
Tutorial: Wie erfasse ich einen Termin? In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können. Neben den allgemeinen Angaben zu einem
MehrZeichen bei Zahlen entschlüsseln
Zeichen bei Zahlen entschlüsseln In diesem Kapitel... Verwendung des Zahlenstrahls Absolut richtige Bestimmung von absoluten Werten Operationen bei Zahlen mit Vorzeichen: Addieren, Subtrahieren, Multiplizieren
MehrProgrammierparadigmen
Programmierparadigmen D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg Sommer 2011, 20. Juni 2011, c 2011 D.Rösner D. Rösner PGP 2011...
MehrSession Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de
s & Servlet Integration Ralf Gitzel ralf_gitzel@hotmail.de 1 Themenübersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht Motivation Das Interface Stateful und Stateless s Programmierung einer Stateful
MehrDeklarationen in C. Prof. Dr. Margarita Esponda
Deklarationen in C 1 Deklarationen Deklarationen spielen eine zentrale Rolle in der C-Programmiersprache. Deklarationen Variablen Funktionen Die Deklarationen von Variablen und Funktionen haben viele Gemeinsamkeiten.
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
MehrJava und Dalvik Bytecode - Ein Vergleich
Java und Dalvik Bytecode - Ein Vergleich WPF Compiler und Interpreter WS 2014/2015 Studiengang Medieninformatik Autoren Bryan Riddle, Matrikelnummer 11100449 bryan.riddle@smail.fh koeln.de Sydney Manalo
MehrDynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München
Kapitel 4 Dynamisches SQL Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München 2008 Thomas Bernecker, Tobias Emrich unter Verwendung der Folien des Datenbankpraktikums aus dem Wintersemester
MehrJAVA als erste Programmiersprache Semesterkurs
JAVA als erste Programmiersprache Semesterkurs 0 - Einstieg WS 2012 / 2013 Prof. Dr. Bodo Kraft Prof. Dr. Bodo Kraft FH Aachen University of Applied Sciences Fachbereich Medizintechnik und Technomathematik
MehrAnwenderdokumentation PersoSim
Anwenderdokumentation PersoSim Die nachfolgende Anwenderdokumentation soll dem Anwender bei der Installation und den ersten Schritten im Umgang mit PersoSim helfen. Installation Grundvoraussetzung für
MehrWintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22
Kapitel 19 Vererbung, UML Seite 1 von 22 Vererbung - Neben der Datenabstraktion und der Datenkapselung ist die Vererbung ein weiteres Merkmal der OOP. - Durch Vererbung werden die Methoden und die Eigenschaften
MehrKlassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java
Objektorientierte Programmierung mit Java Eine praxisnahe Einführung mit BlueJ Klassenentwurf Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? 1.0 Zentrale Konzepte
MehrEinführung in die Programmierung
Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In
MehrProgrammierparadigmen. Programmierparadigmen. Imperatives vs. objektorientiertes Programmieren. Programmierparadigmen. Agenda für heute, 4.
Agenda für heute, 4. Mai, 2006 Programmierparadigmen Imperative Programmiersprachen In Prozeduren zusammengefasste, sequentiell ausgeführte Anweisungen Die Prozeduren werden ausgeführt, wenn sie als Teil
MehrHow to do? Projekte - Zeiterfassung
How to do? Projekte - Zeiterfassung Stand: Version 4.0.1, 18.03.2009 1. EINLEITUNG...3 2. PROJEKTE UND STAMMDATEN...4 2.1 Projekte... 4 2.2 Projektmitarbeiter... 5 2.3 Tätigkeiten... 6 2.4 Unterprojekte...
MehrGesicherte Prozeduren
Gesicherte Prozeduren Wenn eine Anwendung auf einer Client-Maschine läuft, wird normalerweise jede SQL-Anweisung einzeln vom Client an den Server gesandt, und jedes Ergebnistupel wird einzeln zurückgeliefert.
MehrUniversität Karlsruhe (TH)
Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 ZPL Prof. Dr. Walter F. Tichy Dr. Victor Pankratius Ali Jannesari Agenda 1. ZPL Überblick 2. Konzepte von ZPL Regionen, Region Specifiers
Mehr5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu
Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten
MehrÜbung 9 - Lösungsvorschlag
Universität Innsbruck - Institut für Informatik Datenbanken und Informationssysteme Prof. Günther Specht, Eva Zangerle Besprechung: 15.12.2008 Einführung in die Informatik Übung 9 - Lösungsvorschlag Aufgabe
Mehr3. Stored Procedures und PL/SQL
3. Stored Procedures und PL/SQL Wenn eine Anwendung auf einer Client-Maschine läuft, wird normalerweise jede SQL-Anweisung einzeln vom Client an den Server gesandt, und jedes Ergebnistupel wird einzeln
Mehr5.2 Neue Projekte erstellen
5.2 Neue Projekte erstellen Das Bearbeiten von bestehenden Projekten und Objekten ist ja nicht schlecht wie aber können Sie neue Objekte hinzufügen oder gar völlig neue Projekte erstellen? Die Antwort
MehrDas erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.
Einfache Ein- und Ausgabe mit Java 1. Hallo-Welt! Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. /** Die Klasse hello sendet einen
MehrSeminar Werkzeuggestütze. tze Softwareprüfung. fung. Slicing. Sebastian Meyer
Seminar Werkzeuggestütze tze Softwareprüfung fung Slicing Sebastian Meyer Überblick Einführung und Begriffe Static Slicing Dynamic Slicing Erweiterte Slicing-Techniken Fazit 2 Was ist Slicing?? (I) Program
MehrGrundbegriffe der Informatik
Grundbegriffe der Informatik Einheit 15: Reguläre Ausdrücke und rechtslineare Grammatiken Thomas Worsch Universität Karlsruhe, Fakultät für Informatik Wintersemester 2008/2009 1/25 Was kann man mit endlichen
MehrDiplomvorprüfung in Datenverarbeitung EBS Sommersemester 2002
Diplomvorprüfung in Datenverarbeitung EBS Sommersemester 2002 Prüfungsaufgaben zu den Vorlesungen Datenverarbeitung im ersten und im zweiten Semester Aufgabensteller: Gleißner Die Lösungen sind auf das
MehrEinführung in die Java- Programmierung
Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags Pommes... Praktikum A 230 C 207 (Madeleine) F 112 F 113 (Kevin) E
MehrÜbersicht Programmablaufsteuerung
Übersicht Programmablaufsteuerung Konditionale Verzweigung: if - else switch-anweisung Schleifenkonstrukte: while, do - while for Schleife Sprung-Anweisungen: break, continue, goto, return Anweisungen
MehrKURZANLEITUNG CLOUD OBJECT STORAGE
KURZANLEITUNG CLOUD OBJECT STORAGE Version 1.12 01.07.2014 SEITE _ 2 INHALTSVERZEICHNIS 1. Einleitung... Seite 03 2. Anmelden am Cloud&Heat Dashboard... Seite 04 3. Anlegen eines Containers... Seite 05
MehrGrundlagen der Programmierung UE
Grundlagen der Programmierung UE Research and teaching network GdP UE H. Prähofer, M Löberbauer 1 Vortragende Dipl.-Ing. Markus Löberbauer (G1) Dr. Herbert Praehofer (G2 u. G3) Institute for System Software
MehrGrundlagen der Programmierung UE
Grundlagen der Programmierung UE Research and teaching network GdP UE H. Prähofer, R. Wolfinger 1 Vortragende Dr. Herbert Praehofer (G1 u. G2) Mag. Reinhard Wolfinger (G3 u. G4) Institute for System Software
Mehrdisk2vhd Wie sichere ich meine Daten von Windows XP? Vorwort 1 Sichern der Festplatte 2
disk2vhd Wie sichere ich meine Daten von Windows XP? Inhalt Thema Seite Vorwort 1 Sichern der Festplatte 2 Einbinden der Sicherung als Laufwerk für Windows Vista & Windows 7 3 Einbinden der Sicherung als
MehrAnleitung zum erstellen einer PDF-Datei aus Microsoft Word
Anleitung zum erstellen einer PDF-Datei aus Microsoft Word 1. Vorbereitung des PCs Um dem Tutorial folgen zu können müssen folgende Programme auf Ihrem PC installiert sein: Ghostskript 8.64: Ghostskript
MehrCalogero Fontana Fachseminar WS09/10. calogero.b.fontana@student.hs-rm.de. Virtualisierung
Calogero Fontana Fachseminar WS09/10 calogero.b.fontana@student.hs-rm.de Virtualisierung Was ist Virtualisierung? Definition Virtualisierung ist das zur Verfügung stellen von Hardware-Ressourcen für ein
MehrSelbstbestimmtes Lernen. Proinformatik III Objektorientierte Programmierung. Format. Inhalt. Buzzwords
4.0 Proinformatik III Objektorientierte Programmierung Michael Kölling University of Kent Canterbury, UK Selbstbestimmtes Lernen Vorlesung Tutorium Übungen Buch Web-Seite Üben, üben, üben! Format Vorlesung:
MehrProseminar Technische Informatik A survey of virtualization technologies
Proseminar Technische Informatik A survey of virtualization technologies Referent: Martin Weigelt Proseminar Technische Informatik - A survey of virtualization technologies 1 Übersicht 1. Definition 2.
MehrLizenzierung von System Center 2012
Lizenzierung von System Center 2012 Mit den Microsoft System Center-Produkten lassen sich Endgeräte wie Server, Clients und mobile Geräte mit unterschiedlichen Betriebssystemen verwalten. Verwalten im
MehrUniversität Karlsruhe (TH)
Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Cluster-Praktikum Sommersemester 2007 Transparent Replizierte Objekte in JavaParty Institut für Programmstrukturen und Datenorganisation
MehrEinführung in die Programmierung für NF
Einführung in die Programmierung für NF UML Valerie Holmeyer Michael Kirsch Direct Feedback Eure Mitarbeit ist mir wichbg Quiz nach den jeweiligen AbschniGen Jeder kann mitmachen App socra&ve auf Smartphone
MehrÜbungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag
Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 13 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:
Mehr