![Page 1: Abstrakte Programmierung mittels Skripting: Untersuchung von geeigneten Implementierungen dynamischer Sprachen für die HSP Vitus Lorenz-Meyer Abschlusspräsentation](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6149795902118b59fa/html5/thumbnails/1.jpg)
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
![Page 2: Abstrakte Programmierung mittels Skripting: Untersuchung von geeigneten Implementierungen dynamischer Sprachen für die HSP Vitus Lorenz-Meyer Abschlusspräsentation](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6149795902118b59fa/html5/thumbnails/2.jpg)
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
![Page 3: Abstrakte Programmierung mittels Skripting: Untersuchung von geeigneten Implementierungen dynamischer Sprachen für die HSP Vitus Lorenz-Meyer Abschlusspräsentation](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6149795902118b59fa/html5/thumbnails/3.jpg)
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)
![Page 4: Abstrakte Programmierung mittels Skripting: Untersuchung von geeigneten Implementierungen dynamischer Sprachen für die HSP Vitus Lorenz-Meyer Abschlusspräsentation](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6149795902118b59fa/html5/thumbnails/4.jpg)
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
![Page 5: Abstrakte Programmierung mittels Skripting: Untersuchung von geeigneten Implementierungen dynamischer Sprachen für die HSP Vitus Lorenz-Meyer Abschlusspräsentation](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6149795902118b59fa/html5/thumbnails/5.jpg)
Vitus Lorenz-Meyer · Institut für Nachrichtentechnik · Technische Universität Braunschweig
S.5/21
Übersicht
1. Motivation2. Was ist Skripting?3. Skripting im historischen Überblick
a) Assemblerb) Hochsprachenc) Virtuelle Maschinend) Dynamische Sprachen
4. Hochsprachen vs. Skriptsprachen5. Evaluation6. Fazit, Ausblick 7. Integration in die HSP
![Page 6: Abstrakte Programmierung mittels Skripting: Untersuchung von geeigneten Implementierungen dynamischer Sprachen für die HSP Vitus Lorenz-Meyer Abschlusspräsentation](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6149795902118b59fa/html5/thumbnails/6.jpg)
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
![Page 7: Abstrakte Programmierung mittels Skripting: Untersuchung von geeigneten Implementierungen dynamischer Sprachen für die HSP Vitus Lorenz-Meyer Abschlusspräsentation](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6149795902118b59fa/html5/thumbnails/7.jpg)
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
![Page 8: Abstrakte Programmierung mittels Skripting: Untersuchung von geeigneten Implementierungen dynamischer Sprachen für die HSP Vitus Lorenz-Meyer Abschlusspräsentation](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6149795902118b59fa/html5/thumbnails/8.jpg)
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 CodeJIT, Optimizer
OS, Plattform
Code gen.
Abstrakte Hardware-Beschreibung
![Page 9: Abstrakte Programmierung mittels Skripting: Untersuchung von geeigneten Implementierungen dynamischer Sprachen für die HSP Vitus Lorenz-Meyer Abschlusspräsentation](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6149795902118b59fa/html5/thumbnails/9.jpg)
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, parsetree, symbol table
Optimizer
OS, Plattform
Code generation
![Page 10: Abstrakte Programmierung mittels Skripting: Untersuchung von geeigneten Implementierungen dynamischer Sprachen für die HSP Vitus Lorenz-Meyer Abschlusspräsentation](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6149795902118b59fa/html5/thumbnails/10.jpg)
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
![Page 11: Abstrakte Programmierung mittels Skripting: Untersuchung von geeigneten Implementierungen dynamischer Sprachen für die HSP Vitus Lorenz-Meyer Abschlusspräsentation](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6149795902118b59fa/html5/thumbnails/11.jpg)
Vitus Lorenz-Meyer · Institut für Nachrichtentechnik · Technische Universität Braunschweig
S.11/21
Übersicht
1. Motivation2. Was ist Skripting?3. Skripting im historischen Überblick4. Hochsprachen vs. Skriptsprachen5. Evaluation
a) 5 bekannte Skriptsprachenb) Schritte der Evaluationc) Evaluierte Sprachend) Ergebnisse der Testse) Zusammenfassung
6. Fazit, Ausblick 7. Integration in die HSP
![Page 12: Abstrakte Programmierung mittels Skripting: Untersuchung von geeigneten Implementierungen dynamischer Sprachen für die HSP Vitus Lorenz-Meyer Abschlusspräsentation](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6149795902118b59fa/html5/thumbnails/12.jpg)
Vitus Lorenz-Meyer · Institut für Nachrichtentechnik · Technische Universität Braunschweig
S.12/21
Die 5 bekanntesten Skriptsprachen1. 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
Standardbibliothekfor line in sys.stdin.readlines():
if re.search(“Perl”, line): print line
• PHP: “PHP Hypertext Preprocessor”1. 1994, zuerst HTTP CGI daher <?php … ?>, beliebteste Websprache
<?phpwhile ($line = fgets(STDIN)){
if (preg_match(“Perl”, $line))echo $line;
} ?>
![Page 13: Abstrakte Programmierung mittels Skripting: Untersuchung von geeigneten Implementierungen dynamischer Sprachen für die HSP Vitus Lorenz-Meyer Abschlusspräsentation](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6149795902118b59fa/html5/thumbnails/13.jpg)
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
![Page 14: Abstrakte Programmierung mittels Skripting: Untersuchung von geeigneten Implementierungen dynamischer Sprachen für die HSP Vitus Lorenz-Meyer Abschlusspräsentation](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6149795902118b59fa/html5/thumbnails/14.jpg)
Vitus Lorenz-Meyer · Institut für Nachrichtentechnik · Technische Universität Braunschweig
S.14/21
Evaluationsschritte1. Suche von geeigneten Skriptsprachen-Implementationen
– Kriterien:• Implementiert in Java• Vielseitig verwendbar (“general-purpose” Skriptsprache)
– Ergebnis: 18 relevante Implementationen2. 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 Testcases1. Auswahl der Tests folgt Beispiel aus der Literatur
• Reine Ladezeit des Interpreters• CPU, I/O, Hash, String-Performance
– Auswahl und Empfehlung1. Kriterien: Performance, gute Standardbibliothek, große Community, einfach
zu erlernende Syntax
![Page 15: Abstrakte Programmierung mittels Skripting: Untersuchung von geeigneten Implementierungen dynamischer Sprachen für die HSP Vitus Lorenz-Meyer Abschlusspräsentation](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6149795902118b59fa/html5/thumbnails/15.jpg)
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• DynamicJava
1. Ist Teil des Koala-Projekts von ILOG Software (am INRIA/W3C Standort Sophia Antipolis)
2. Unterstützt auch loosely typed Java Syntax• 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
![Page 16: Abstrakte Programmierung mittels Skripting: Untersuchung von geeigneten Implementierungen dynamischer Sprachen für die HSP Vitus Lorenz-Meyer Abschlusspräsentation](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6149795902118b59fa/html5/thumbnails/16.jpg)
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:
![Page 17: Abstrakte Programmierung mittels Skripting: Untersuchung von geeigneten Implementierungen dynamischer Sprachen für die HSP Vitus Lorenz-Meyer Abschlusspräsentation](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6149795902118b59fa/html5/thumbnails/17.jpg)
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)
![Page 18: Abstrakte Programmierung mittels Skripting: Untersuchung von geeigneten Implementierungen dynamischer Sprachen für die HSP Vitus Lorenz-Meyer Abschlusspräsentation](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6149795902118b59fa/html5/thumbnails/18.jpg)
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
![Page 19: Abstrakte Programmierung mittels Skripting: Untersuchung von geeigneten Implementierungen dynamischer Sprachen für die HSP Vitus Lorenz-Meyer Abschlusspräsentation](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6149795902118b59fa/html5/thumbnails/19.jpg)
Vitus Lorenz-Meyer · Institut für Nachrichtentechnik · Technische Universität Braunschweig
S.19/21
Auswahl einer Skripting-Engine für die HSP• Performance
1. DynamicJava2. JavaScript (Rhino)3. BeanShell4. JavaFX Script (Open-JFX), ...
– Standardbibliothek– Besitzt keine der Sprachen, alle verlassen sich auf Java
• Community– JavaScript hat einzige nennenswerte Nutzerbasis
• Syntax1. DJava am nächsten an Java, keine zusätzlichen Features2. BeanShell nahe an Java, einige syntaktische Add-ons3. JavaScript weist native Syntax für RegEx und Hashes auf4. JavaFX Script hat “eigenwillige” Syntax
Auswahl von JavaScript (Rhino)
![Page 20: Abstrakte Programmierung mittels Skripting: Untersuchung von geeigneten Implementierungen dynamischer Sprachen für die HSP Vitus Lorenz-Meyer Abschlusspräsentation](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6149795902118b59fa/html5/thumbnails/20.jpg)
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
![Page 21: Abstrakte Programmierung mittels Skripting: Untersuchung von geeigneten Implementierungen dynamischer Sprachen für die HSP Vitus Lorenz-Meyer Abschlusspräsentation](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6149795902118b59fa/html5/thumbnails/21.jpg)
Vitus Lorenz-Meyer · Institut für Nachrichtentechnik · Technische Universität Braunschweig
S.21/21
Fragen?