Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Abstrakte Programmierung mittels Skripting: Untersuchung von geeigneten Implementierungen dynamischer Sprachen für die HSP Vitus Lorenz-Meyer Abschlusspräsentation.

Ähnliche Präsentationen


Präsentation zum Thema: "Abstrakte Programmierung mittels Skripting: Untersuchung von geeigneten Implementierungen dynamischer Sprachen für die HSP Vitus Lorenz-Meyer Abschlusspräsentation."—  Präsentation transkript:

1 Abstrakte Programmierung mittels Skripting: Untersuchung von geeigneten Implementierungen dynamischer Sprachen für die HSP Vitus Lorenz-Meyer Abschlusspräsentation zur Studienarbeit Braunschweig, 18. September 2007

2 Vitus Lorenz-Meyer · Institut für Nachrichtentechnik · Technische Universität Braunschweig S.2/21 Gliederung des Vortrags 1.Motivation 2.Was ist Skripting? 3.Skripting im historischen Überblick 4.Hochsprachen vs. Skriptsprachen 5.Evaluation 6.Fazit, Ausblick 7.Integration in die HSP

3 Vitus Lorenz-Meyer · Institut für Nachrichtentechnik · Technische Universität Braunschweig S.3/21 Motivation Status-quo der Programmierung der HSP: Java-Code (+ grafische Beschreibungssprachen) Ist zu umständlich für kurze Programme oder schnelles Ausprobieren von Funktionalität –Java Programmierung des Xlets –Kompilieren des Xlet in eine.class -Datei Ziel: Vereinfachung der Programmierbarkeit –Beibehaltung des Xlet-Applikationsmodells –Xlet mit zusätzlich integriertem Skript-Interpreter –Muss nicht kompiliert werden, direktes Bearbeiten im Text-Editor und sofortige Neu-Interpretierung möglich – Möglichkeit der Integration mit XML-basierten Beschreibunsgsprachen (SVG)

4 Vitus Lorenz-Meyer · Institut für Nachrichtentechnik · Technische Universität Braunschweig S.4/21 Was macht eine Skriptsprache aus? Interpretiert statt Kompiliert Virtuelle Maschine –Plattformunabhängigkeit –Fehlerbehandlung –Speicherverwaltung (Garbage Collection) Keine strikten Typen (duck typing) –Static vs. dynamic typing (Bezeichnung) –Strong vs. weak typing (Behandlung) Sigils ($) typisch

5 Vitus Lorenz-Meyer · Institut für Nachrichtentechnik · Technische Universität Braunschweig S.5/21 Übersicht 1.Motivation 2.Was ist Skripting? 3.Skripting im historischen Überblick a)Assembler b)Hochsprachen c)Virtuelle Maschinen d)Dynamische Sprachen 4.Hochsprachen vs. Skriptsprachen 5.Evaluation 6.Fazit, Ausblick 7.Integration in die HSP

6 Vitus Lorenz-Meyer · Institut für Nachrichtentechnik · Technische Universität Braunschweig S.6/21 Assembler Vorteile –Schnelle Ausführung –Möglichkeit der Optimierung von Hand (volle Kontrolle) Nachteile –Kennt keine Typen (-> viele Fehler) –Ist kompliziert zu schreiben –Ist plattformabhängig Code Betriebssystem, Plattform Maschinen Code Lexikalische Analyse, Code generation HD CPU OpCode generation, Symbol resolving

7 Vitus Lorenz-Meyer · Institut für Nachrichtentechnik · Technische Universität Braunschweig S.7/21 Hoch (Systemlevel-)sprachen Kompiler übersetzt Quelltext in Maschinencode Vorteile –Strikte Typisierung erkennt Fehler während der Übersetzung –Schnelle Ausführung, da auf Plattform optimiert Nachteile –Keine Fehlerbehandlung –Kein automatisches Speichermanagement Code (OS) Maschinen Code Lexik., Syntaktische, Semantische Analyse HD CPU Lexing, Parse tree, Symbol table Object Code Linker, Optimizer OS, Plattform Code generation

8 Vitus Lorenz-Meyer · Institut für Nachrichtentechnik · Technische Universität Braunschweig S.8/21 Virtuelle Maschinen Virtuelle Maschine: Abstrakte, nicht-reale Hardware-Plattform Vorteile – Speichermanagement – Fehlererkennung + Behandlung während der Ausführung – Abstrahiert Betriebssystem und Plattform Nachteile –Zusätzlicher Aufwand –Verschiebung der Code Generation auf Ausführungszeitpunkt –Höherer Speicherverbrauch –Weniger Flexibilität Code VM Lexik., Syntakt., Semant. Analalyse HD CPU Lexing, parse tree, symbol table Zwischen Code JIT, Optimizer OS, Plattform Code gen. Abstrakte Hardware- Beschreibung

9 Vitus Lorenz-Meyer · Institut für Nachrichtentechnik · Technische Universität Braunschweig S.9/21 Dynamische (Skript-) Sprachen Interpreter: Kompiler und Code Genenerator (Optimierer) kombiniert Vorteile –Virtuelle Maschine –Lockerer Umgang mit Typen (da genaue Fehlererkennung+Behandlung durch VM) –Einfacher anpassbar, da Skripte als Quelltext ausgeliefert werden Nachteile –Langsamer, da komplette Übersetzung zum Ausführungszeitpunkt Code VM Lexik., Syntakt., Semant. Analyse HD CPU Lexing, parse tree, symbol table Optimizer OS, Plattform Code generation

10 Vitus Lorenz-Meyer · Institut für Nachrichtentechnik · Technische Universität Braunschweig S.10/21 Hochsprachen vs. dynamische Sprachen Compiler vs. Interpreter ist Merkmal von Implementation –Weder bestimmt durch Spracheigenschaften noch Syntax Hochsprachen –Größere Kontrolle, mehr Flexibilität erfordert Planung Dynamische Sprachen –Einfacher dank stärkerer Abstraktion –Mehr Tools (Standardbibliothek, Datenstrukturen) –Rapid Prototyping (Sketchen in Code), Proof-of-Concept Edit-interpret-debug cycle vs. edit-compile-run-debug cycle Resultiert in Verschiebung des Aufwands vom Programmierer zur CPU –Fällt wegen schnellerer CPUs zunehmend weniger ins Gewicht

11 Vitus Lorenz-Meyer · Institut für Nachrichtentechnik · Technische Universität Braunschweig S.11/21 Übersicht 1.Motivation 2.Was ist Skripting? 3.Skripting im historischen Überblick 4.Hochsprachen vs. Skriptsprachen 5.Evaluation a)5 bekannte Skriptsprachen b)Schritte der Evaluation c)Evaluierte Sprachen d)Ergebnisse der Tests e)Zusammenfassung 6.Fazit, Ausblick 7.Integration in die HSP

12 Vitus Lorenz-Meyer · Institut für Nachrichtentechnik · Technische Universität Braunschweig S.12/21 Die 5 bekanntesten Skriptsprachen 1.Perl: Practical Extraction and Reporting Language –1987, Ersatz für Unixshell Tools, text-processing, tainting while (<>){ if (/Perl/){ print }} 2.Python –1990, starke Typisierung, Pseudo-code, Einrückung wichtig, große Standardbibliothek for line in sys.stdin.readlines(): if re.search(Perl, line): print line 3.PHP: PHP Hypertext Preprocessor –1994, zuerst HTTP CGI daher, beliebteste Websprache

13 Vitus Lorenz-Meyer · Institut für Nachrichtentechnik · Technische Universität Braunschweig S.13/21 5 Skriptsprachen (2) 4.Ruby –1995, starke Typisierung, Vermeidung von Inkonsistenzen von Perl (chop() vs. chop!()) –Ruby on Rails ARGF.each { |line| print line if line =~ /Perl/ } 5.JavaScript –1995 Netscape Navigator (Mocha), Client-side Websprache (DHTML, Ajax), standarisiert durch die ECMA var reader = new java.io.BufferedReader(java.lang.System.in); while (var line = reader.readLine()) if (/Perl/.exec(line)) print(line); ECMA: European Computer Manufacturers Association

14 Vitus Lorenz-Meyer · Institut für Nachrichtentechnik · Technische Universität Braunschweig S.14/21 Evaluationsschritte 1.Suche von geeigneten Skriptsprachen-Implementationen –Kriterien: Implementiert in Java Vielseitig verwendbar (general-purpose Skriptsprache) –Ergebnis: 18 relevante Implementationen 2.Test auf Lauffähigkeit in Java ME CDC –Die HSP ist in Java ME CDC implementiert –Ergebnis: 6 in CDC-Umgebung ausführbar (Häufigster Fehler: Fehlen des Packets java.nio.charset in Java ME) 3.Performance-Tests anhand von 5 Testcases –Auswahl der Tests folgt Beispiel aus der Literatur Reine Ladezeit des Interpreters CPU, I/O, Hash, String-Performance 4.Auswahl und Empfehlung –Kriterien: Performance, gute Standardbibliothek, große Community, einfach zu erlernende Syntax

15 Vitus Lorenz-Meyer · Institut für Nachrichtentechnik · Technische Universität Braunschweig S.15/21 Wichtigste Implementierungen 1.JavaScript - Rhino Interpreter Rhino ist Teil der Mozilla Suite Standarisiert durch die Ecma als ECMAScript (ECMA-262, ISO/IEC-16262) Wird in HTML und SVG verwendet 2.BeanShell JSR-274 (BeanShell) Kombination von Standard-Java mit loosely typed Java Syntax möglich, trotzdem starke Typisierung wie in Java 3.DynamicJava Ist Teil des Koala-Projekts von ILOG Software (am INRIA/W3C Standort Sophia Antipolis) Unterstützt auch loosely typed Java Syntax 4.JavaFX Script - OpenJFX (ehemals Sun Projekt F3) Ist Teil der neuen JavaFX-Familie von Sun Bietet platzsparende deklarative Syntax zum Initialisieren großer Objekte JSR: Java Specification Request

16 Vitus Lorenz-Meyer · Institut für Nachrichtentechnik · Technische Universität Braunschweig S.16/21 Geschwindigkeit Ladezeit des Interpreters –Leeres Skript Mathematische Simulation –CPU Performance I/O-Performance –Schreibt Schleifenvariable in Datei Hash-Performance –Erzeugung eines und Zugriff auf ein assoziatives Array String-Performance –Dynamische Erzeugung und Durchsuchen eines Strings n = int(sys.argv[1]) f=open(/tmp/scratch','wb') for i in xrange(n): f.write(str(i)) f.close() Pseudo-Code des I/O Skripts in Python:

17 Vitus Lorenz-Meyer · Institut für Nachrichtentechnik · Technische Universität Braunschweig S.17/21 Standardbibliothek, Community JavaScript –Genießt eine große Verbreitung durch client-seitig dynamische Webseiten, dadurch viel vorhandener Code BeanShell –JSR-274 hat den voting Prozess überstanden Möglichkeit der Aufnahme in die Java Language Specification –Verwendet in NetBeans, jEdit, JMeter, EclipseShelll, OpenOffice... DJava –Hat sehr geringe Verbreitung, wurde für einzelnes Projekt entwickelt JavaFX Script –Alpha Status, daher noch keine Community –Hat aber den Vorteil der Entwicklung durch Sun Wird in allen JVMs von Sun laufen (Handy bis Set-top Box und PC)

18 Vitus Lorenz-Meyer · Institut für Nachrichtentechnik · Technische Universität Braunschweig S.18/21 Syntax JavaScript –Prototype Modell, Syntax näher an C als an Java –Native Hash und Regular-Expression Syntax BeanShell –Untermenge von Java mit Skripting Zusätzen (Klassensyntax anders als Java) –Syntax für einfachen Umgang mit JavaBeans DynamicJava –Obermenge von Java (kann Java Code mit wenigen Änderungen interpretieren) JavaFX Script –Deklarative Syntax für schnelles erstellen Grafischer Oberflächen und Animationen –Teilweise nicht-intuitive Syntax

19 Vitus Lorenz-Meyer · Institut für Nachrichtentechnik · Technische Universität Braunschweig S.19/21 Auswahl einer Skripting-Engine für die HSP Performance 1.DynamicJava 2.JavaScript (Rhino) 3.BeanShell 4.JavaFX Script (Open-JFX),... –Standardbibliothek –Besitzt keine der Sprachen, alle verlassen sich auf Java Community –JavaScript hat einzige nennenswerte Nutzerbasis Syntax –DJava am nächsten an Java, keine zusätzlichen Features –BeanShell nahe an Java, einige syntaktische Add-ons –JavaScript weist native Syntax für RegEx und Hashes auf –JavaFX Script hat eigenwillige Syntax Auswahl von JavaScript (Rhino)

20 Vitus Lorenz-Meyer · Institut für Nachrichtentechnik · Technische Universität Braunschweig S.20/21 Fazit, Ausblick Skriptsprachen werden immer wichtiger –Wird verstärkt durch Zentralisation von Software, die nur noch per Browser-Interface benutzbar ist Es bestehen 5 Ansätze, Java skripting-freundlicher zu gestalten: –JavaFX Script –BeanShell (JSR-274) –Groovy (JSR-241) –Java Skripting API (JSR-223) –Neuer Bytecode für loosely typed Variablen (JSR-292) Skriptsprachen sind praktisch für schnelles Ausprobieren in Code Sicherheit und formale Verifikation sind wichtiges Forschungsthema Die Zukunft gehört Sprachen, die einen Kompromiss zwischen Entwicklungsaufwand und Verifizierbarkeit (Sicherheit) bieten

21 Vitus Lorenz-Meyer · Institut für Nachrichtentechnik · Technische Universität Braunschweig S.21/21 Fragen?

22 Vitus Lorenz-Meyer · Institut für Nachrichtentechnik · Technische Universität Braunschweig S.22/21 Zusammenfassung der Ergebnisse JavaScript langsamer als DJava, aber schneller als BeanShell – native Regular Expression und Hash Syntax und lockerer Umgang mit OO (Prototype) – große Community und bekannte Syntax (DHTML, Ajax), daher viel Code verfügbar BeanShell im Mittelfeld –einfach zu programmieren dank Kombination von loose und strictly typed Syntax, aber anders als Java –noch keine große Verbreitung (könnte sich mit JSR-274 und Aufnahme in die Java Spezifikation ändern) DJava ist im vorgenommenen Vergleich am Schnellsten –Interpretiert Java-Syntax fast ohne Änderungen (niedrige Lernschwelle) JavaFX Script ist am Langsamsten –Syntax ist stellenweise nicht intuitiv –Frühe beta Version: Geschwindigkeit könnte sich noch verbessern, keine Community


Herunterladen ppt "Abstrakte Programmierung mittels Skripting: Untersuchung von geeigneten Implementierungen dynamischer Sprachen für die HSP Vitus Lorenz-Meyer Abschlusspräsentation."

Ähnliche Präsentationen


Google-Anzeigen