Domänenspezifische Sprachen

Größe: px
Ab Seite anzeigen:

Download "Domänenspezifische Sprachen"

Transkript

1 Domänenspezifische Sprachen Eine Einführung und Vertiefung am Beispiel des Eclipse Xtext Framework Mirko Heinold MatrikelNr: März 2012 Institut für Informatik Christian-Albrechts-Universität zu Kiel Arbeitsgruppe Kommunikationssysteme

2

3 Zusammenfassung Diese Seminararbeit beschäftigt sich mit den Thema Domain-Specific Languages (DSLs) und dem Erstellen solcher in Xtext. Hierzu wird der Begriff DSL erläutert, es werden Arten von DSLs vorgestellt und Vor- und Nachteile werden aufgezählt. Dies findet anhand von Beispielen statt. Anschließend wird das Eclipse-basierende Framework Xtext, welches das automatisierte Erstellen von DSLs erlaubt, vorgestellt. Es wird hierfür eine Beispiel-DSL eingeführt und mit Xtext implementiert, so dass am Ende ein Editor und eine Übersetzung in eine Zielsprache vorhanden sind. iii

4

5 Inhaltsverzeichnis 1 Einleitung Aufbau dieser Arbeit Domänenspezifische Sprachen Beispiele Arten von DSLs Interne DSLs Externe DSLs Vor- und Nachteile Xtext Die Xtext Grammar Language Der mittels Xtext-Grammatik generierte Editor Zielcodegenerierung mit Xtend Zusammenfassung und Bewertung 15 v

6

7 Abkürzungsverzeichnis DSL Domain-Specific Language SQL Structured Query Language YACC Yet Another Compiler Compiler BNF Backus Naur Form EBNF Extended Backus Naur Form HTML HyperText Markup Language GPL General Purpose Language API Application Programming Interface AST Abstract Syntax Tree JVM Java Virtual Machine EMF Eclipse Modeling Framework UML Unified Modeling Language vii

8

9 Abbildungsverzeichnis 2.1 Umschreibung von Gleitkommadarstellungen in C Anwendungsbeispiel Beispiel-DSL und eine daraus generierbare Anwendung Darstellung des generierten Editors Auszug generierter Interfaces ix

10

11 Listings 2.1 EBNF als Beispiel-DSL Rake als Beispiel einer internen DSL Verwendung unserer Beispiel-DSL Beispiel einer Xtext Grammatik Auszug aus Xtend-Code zum Generieren des HTML-Code (Teil 1) Auszug aus Xtend-Code zum Generieren des HTML-Code (Teil 2) Mit Xtend generierter HTML-Code xi

12

13 1 Einleitung Eines der wesentlichen Probleme der Informatik besteht darin, abstrakte Probleme und Sachverhalte dem Computer mitzuteilen. Das richtige Umschreiben von Problemen auf einer Abstraktionsebene, die sowohl für Computer als auch Menschen verständlich ist, ist eine zentrale Herausforderung. Unterschiedlichste Programmiersprachen wurden hierzu entwickelt, verwendet und auf Maschinen zur Ausführung gebracht. Abstraktionen von Maschinensprachen wie Assembler bis hin zu Hochsprachen wie Java wurden dafür mit unterschiedlichen Erfolg verwendet und entwickelt. Dennoch bleibt die Umschreibung von vielen Problemen in diesen Sprachen eine zeitaufwendige und komplexe Angelegenheit. Ein Ansatz damit umzugehen ist die Entwicklung von unterschiedlichen, meist kleinen Sprachen, die für das konkrete Problem eine ideale Abstraktion bieten. Dieses hat beispielsweise in der Unix-Welt Tradition [1]. Diese Domain-Specific Languages (DSLs) sind Spezialsprachen für die von ihnen abgedeckte Domäne. Um Anwendungsfälle, Ausprägungen, Vor- und Nachteile sowie die Entwicklung von DSLs wird es im Folgenden gehen. Um auf die Entwicklung von DSLs näher einzugehen, findet einen Auseinandersetzung mit dem Xtext Framework statt. Dieses bietet Tools für eine möglichst einfache Entwicklung von DSLs. 1.1 Aufbau dieser Arbeit Um in das Thema DSLs und deren Entwicklung näher einzuführen, findet zunächst eine Erläuterung des Begriffes DSL statt. Dies geschieht anhand von Beispielen. Danach geht es um unterschiedliche Arten von DSLs und die Vor- und Nachteile der Verwendung von DSLs. Im Hauptteil der Arbeit geht es dann um Xtext. Xtext und seine Funktionsweise wird hier anhand einer Beispiel-DSL erläutert. Hierzu wird nacheinander auf das Beschreiben von Grammatiken mit Xtext, den mit Hilfe einer Grammatik generierbare Editor und die Generierung eines Zielcodes für die Beispiel-DSL eingegangen. Zur Codegenerierung wird Xtend verwendet. Am Ende der Arbeit steht ein Fazit, das Möglichkeiten aber auch Nachteile der DSL- Entwicklung, insbesondere mit Xtext, aufzeigt 1

14

15 2 Domänenspezifische Sprachen Zur Lösung von Problemen in der Informatik kann man grundsätzlich zwischen generischen oder spezifischen Lösungen unterscheiden [2]. Eine spezifische Lösung bieten domänenspezifische Sprachen, englisch Domain-Specific Languages. Dies sind Programmiersprachen, die auf praktische Probleme einer bestimmten Domäne zugeschnitten sind [3]. DSLs haben eine beschränkte Ausdrucksfähigkeit [4], welches der Fokussierung auf eine Domäne und den damit verbundenen Schwerpunkten und Anforderungen geschuldet ist. DSLs sind also Spezialsprachen, die mit der Intention gebaut wurden, ein konkretes Problem möglichst effizient zu lösen. Der Einsatz von DSLs hat zudem das Ziel, einen einfachen Zugang zum Kontrollieren und Beschreiben komplexer Systeme zu ermöglichen [5]. 2.1 Beispiele DSLs sind in der Informatik allgegenwärtig. Oft ist einem beim Verwenden einer DSL gar nicht klar, dass man es mit einer solchen zu tun hat. Prominente Beispiele für DSLs sind TEX, SQL, Make, YACC, LEX, BNF und HTML [2]. Als Beispiel für eine nähere Betrachtung bietet sich die Extended Backus Naur Form (EBNF) an. Hierbei handelt es sich um eine Erweiterung der BNF zum formalen Beschreiben der Grammatik von Programmiersprachen [6]. In Listing 2.1 ist eine EBNF angegeben, welche Darstellung von Gleitkommazahlen in der Programmiersprache Go 1 beschreibt. Listing 2.1: EBNF als Beispiel-DSL a 1 float_lit = decimals "." [ decimals ] [ exponent ] 2 decimals exponent 3 "." decimals [ exponent ]. 4 5 decimals = decimal_digit { decimal_digit }. 6 7 exponent = ( "e" "E" ) [ "+" "-" ] decimals. 8 9 decimal_digit = "0"..."9". a Beispiel von Wie für DSLs typisch, sind EBNFs genau für einen speziellen Anwendungsfall, nämlich 1 3

16 2 Domänenspezifische Sprachen die Beschreibung von Grammatiken, entwickelt worden. In diesem Kontext sind EBNFs dann aber sehr effizient. Es lässt sich, nachdem einmal die Syntax verstanden ist, mit der dargestellten Grammatik sehr leicht entscheiden, welche Zeichenfolgen gültige Gleitkommadarstellungen in Go sind. Zum Vergleich ist in Abbildung 2.1 angegeben, wie eine Umschreibung der Darstellung von Gleitkommazahlen in textueller Form aussehen kann. Eine Gleitpunktkonstante besteht aus einen ganzzahligen Teil, einen Dezimalpunkt, einem Dezimalbruch, dem Zeichen e oder E, einem ganzzahligen Exponenten mit optionalen Vorzeichen und einem optionalen Typ-Suffix, nämlich einem der Buchstaben f, F, l oder L. Ganzzahligen Teil und Dezimalbruch sind Ziffernfolgen. Entweder der ganzzahlige Teil oder der Dezimalbruch kann fehlen (aber nicht beide); entweder der Dezimalpunkt oder der Exponent beginnend mit e kann fehlen (aber nicht beide). Abbildung 2.1: Umschreibung von Gleitkommadarstellungen in C [7] Diese Umschreibung ist so im Anhang der deutschen Ausgabe des Kernighan and Ritchie zu finden. Eine EBNF Darstellung ist übersichtlicher, deutlich besser zu lesen und zu verstehen. Es wird elegant abstrahiert und auch eine spätere Implementierung der Grammatik ist aufgrund der klaren Regeln einfacher. Keine DSLs sind so genannte General Purpose Languages (GPLs), also allgemeine Programmiersprachen. Diese grenzen sich von DSLs dadurch ab, dass sie nicht nur für ein bestimmtes konkretes Problem einer Domäne geeignet sind. Zudem ermöglicht der zur Verfügung stehende Funktionsumfang Verwendung in mehreren Bereichen [8]. Prominente Beispiele für GPLs sind etwa C++, Java und C# [9]. 2.2 Arten von DSLs Unterschiedliche DSLs werden typischerweise in zwei Arten von Sprachen eingeteilt. Es lassen sich das Erweitern und Wiederverwenden einer Sprache oder das Entwickeln einer eigenständigen Sprache realisieren. Es findet auf dieser Basis eine Unterteilung in interne und externe DSLs statt [10] Interne DSLs Interne DSLs, auch embedded DSLs genannt, beschreiben das Verwenden einer Hostsprache als Basis der eigenen Sprache [10]. Interne DSLs haben keine eigene Syntax, sondern verwenden die der Hostsprache. Als Hostsprache bieten sich unterschiedlichste Sprachen wie Java oder C# an. In Listing 2.2 ist ein Programm in der DSL Rake 2 an

17 2.3 Vor- und Nachteile gegeben, welche als Hostsprache Ruby verwendet. Rake bietet die Funktionalität eines Make für Ruby-Programme bietet aber einen größeren Funktionsumfang als Make. Listing 2.2: Rake als Beispiel einer internen DSL a 1 file main.o => ["main.c", "greet.h"] do 2 sh "cc -c -o main.o main.c" 3 end 4 5 file greet.o => [ greet.c ] do 6 sh "cc -c -o greet.o greet.c" 7 end 8 9 file "hello" => ["main.o", "greet.o"] do 10 sh "cc -o hello main.o greet.o" 11 end a Beispiel von Bei dem angegeben Programm handelt es sich um ein gültiges Ruby-Programm, welches durch die spezielle Struktur und das Verwenden spezieller APIs zu einen Rake- Programm wird. Bei internen DSLs handelt es sich also um eine Teilmenge der Hostsprache, die, meist angereichert um spezielle APIs, verwendet wird. Die Vorteile für das Verwenden von internen DSLs liegen auf der Hand: Ein Compiler und Parser sind schon vorhanden, Tools wie beispielsweise Editoren für die Sprache sind ebenfalls schon vorhanden. Wenn der Programmierer die Hostsprache beherrscht gibt es wenig Berührungsängste und Einarbeitungszeit bei der Verwendung der DSL Externe DSLs Externe DSLs haben ihre komplett eigene Syntax, was allerdings auch zur Folge hat, dass für sie ein eigener Parser geschrieben werden muss [10]. Ein Beispiel für eine externe DSL wurde bereits in Listing 2.1 betrachtet. Vorteile bei der Verwendung von externen DSLs sind, dass man bei der Syntax keine Einschränkungen hat und dass beim Schreiben eines Compilers für die externe DSL domänenspezifische Anforderungen mitvalidiert werden können. 2.3 Vor- und Nachteile Die Verwendung und das Entwickeln von DSLs hat sowohl Vor- als auch Nachteile. Hat man erst einmal eine gute DSL entwickelt, profitiert man von Vorteilen wie geringeren Entwicklungskosten für neue Anwendungen, guten Code, Lesbarkeit oder einer geringen Anzahl an Code-Zeilen [8]. Ein weiterer Vorteil von von DSLs ist, dass diese die Domäne, für die sie entwickelt wurden besser abbilden. Wurde bei der Entwicklung ein gutes Maß an Abstraktion gefunden, kann die DSL auch von Experten der entsprechenden Domäne verstanden, validiert und oft sogar programmiert werden [2]. 5

18 2 Domänenspezifische Sprachen Ein weiterer Vorteil ist, dass DSLs häufig selbst dokumentierend sind [2]. Da sie für eine Domäne entwickelt wurden, ist das Umschreiben, was der vorliegende Code genau macht, häufig schon Teil der Sprache. Auch Wiederverwendung zu verschiedenen Zwecken, gute Wartbarkeit und Portabilität, sowie Testen unter Berücksichtigung der Eigenschaften der betrachten Domäne gehören zu den Vorteilen von DSLs [2]. Vor allem das bereits angesprochene validieren auf Domänenebene, aber auch Optimieren von erzeugtem Code unter Berücksichtigung der Domäne sind starke Argumente für die Verwendung von DSLs. Größter Nachteil der Verwendung von DSLs sind die Kosten, die für Entwicklung, Implementierung und Wartung der Sprache entstehen [2]. Zur Entwicklung ist genaues Wissen über die Domäne, für die die Sprache entwickelt werden soll, nötig. Hierfür werden sowohl Fachleute für den DSL-Entwurf, sowie für die betrachtete Domäne benötigt. Hinzu kommen Fortbildungen des Personals, damit es die DSL verwenden kann und die Schwierigkeit beim DSL-Entwurf die richtige Balance zwischen GPL- und DSL- Konstrukten zu finden [2]. Die Schwierigkeit der richtigen Abstraktion für die zu entwickelnde DSL zeigt sich häufig schon dadurch, wie schwierig es ist, die betrachtete Domäne sinnvoll und eindeutig abzugrenzen. Ein weiterer Nachteil ist zudem, dass durch den Einsatz von DSLs die Anzahl der insgesamt verwendeten Sprachen steigt [8]. Dies bedeutet, dass für ein Softwareprojekt viele unterschiedliche Sprachen und Syntaxen erlernt und beherrscht, sowie im richtigen Kontext eingesetzt werden müssen. Der Erfolg einer DSL und vor allem die Akzeptanz steht und fällt häufig mit der Tool-Unterstützung. Tools, die über den einfachen Parser und Compiler hinausgehen, sind deshalb von großer Wichtigkeit [11]. Grade aber komplexe, stabile und zuverlässig arbeitende Tools können die Entwicklungskosten für eine DSL deutlich in die Höhe treiben. Als letzter hier aufgeführter Nachteil ist zudem noch anzumerken, dass mit DSLs erstellte Programme häufig nicht dieselbe Effizienz, bezogen auf Laufzeit und Speicherverbrauch, wie individuell ausprogrammierte Varianten zeigen [2]. Ein guter Compiler kann diesen Nachteil verkleinern, kostet aber, vor allen wenn er viele Optimierungen enthält, Zeit und Geld. Um einige dieser Nachteile, vor allem die Kosten des DSL-Entwurfs, gering zu halten lohnt sich das verwenden spezieller Tools, die den DSL-Entwurf möglichst preiswert und effizient gestalten. Eines dieser Tools ist Xtext, welches im Folgenden betrachtet werdet soll. 6

19 3 Xtext Xtext 1 ist ein Framework zur Entwicklung von Programmiersprachen und DSLs [12]. Es unterstützt die Entwicklung textueller DSLs [13] durch das Bereitstellen verschiedener DSLs und APIs, um die unterschiedlichen Aspekte einer Programmiersprache zu beschreiben [12]. Xtext ist Eclipse 2 -basierend und erlaubt es, einen Eclipse basierten Editor, ähnlich den bekannten Java-Editor, zum Schreiben der entwickelten Sprache, zu erstellen [12]. Trotz der Eclipse-versiertheit sind die von Xtext erstellten Komponenten zur Übersetzung der DSL, wie der Abstract Syntax Tree (AST) oder Parser, Eclipse-unabhängig. Sie können in jeder Java Umgebung verwendet werden [12]. Mit Xtext soll die für den Erfolg von DSLs so wichtige Unterstützung der entwickelten Sprache mit Tools erleichtert werden [11]. Zentral hierfür ist der erwähnte Editor. Um einen besseren Einblick in Xtext zu erhalten und die Funktionsweisen und Fähigkeiten besser verstehen zu können, wird nun eine Beispiel-DSL mit Hilfe von Xtext entwickelt. Diese ist in Listing 3.1 abgebildet. Listing 3.1: Verwendung unserer Beispiel-DSL 1 Poll "Evaluation" 2 3 Question "Geben Sie Ihren Namen ein" name 4 5 Question "Wie fanden Sie das Seminar?" bewertung 6 () "1 (Sehr Gut)" sehrgut 7 () "2 (Gut)" gut 8 () "3 (Befriedigend)" befriedigend 9 () "4 (Ausreichend)" ausreichend 10 () "5 (Mangelhaft)" mangelhaft Question "Was kann verbessert werden?" verbesserungen 13 [] "Schrift" schrift 14 [] "Beamer" beamer 15 [] "Schokolade fuer alle" schokolade Abbildung 3.1: Anwendungsbeispiel Abbildung 3.2: Beispiel-DSL und eine daraus generierbare Anwendung Es handelt sich bei dieser DSL um eine Sprache zum Beschreiben von Befragungen oder Abstimmungen, in diesem Beispiel bezogen auf ein Seminar. Hierzu bietet die DSL die Verwendung von Antworten als Text-, Multiple-Choice- oder Single-Choice-Antwort

20 3 Xtext an. Ein mögliches Anwendungsszenario für die Beispiel-DSL ist in Abbildung 3.1 dargestellt. Die DSL lässt sich, wie dargestellt, zum Beschreiben von Homepages für Abstimmungen verwenden, die sich auf Basis der DSL automatisch generieren lassen. 3.1 Die Xtext Grammar Language Beginnen wir nun mit der Beschreibung einer Grammatik für die Beispiel-DSL. Dies ist stets der erste Schritt, nachdem der Aufbau, das Aussehen und der Funktionsumfang einer DSL festgelegt wurde. Die Grammatik zu unserer Beispiel-DSL wird in Listing 3.2 dargestellt. Listing 3.2: Beispiel einer Xtext-Grammatik a 1 grammar org.xtext.example.mydsl.simplepolldsl with org.eclipse.xtext. common.terminals 2 3 generate simplepolldsl " 4 5 Poll: 6 "Poll" description=string 7 (questions+=question)* 8 ; 9 10 Question: 11 TextQuestion SingleChoiceQuestion MultipleChoiceQuestion 12 ; TextQuestion: 15 "Question" title=string name=id; SingleChoiceQuestion: 18 "Question" title=string name=id 19 (options+=singlechoiceoption)+; MultipleChoiceQuestion: 22 "Question" title=string name=id 23 (options+=multiplechoiceoption)+; SingleChoiceOption: 26 "()" title=string name=id 27 ; MultipleChoiceOption: 30 "[]" title=string name=id 31 ; a Beispiel aus einen Vortrag von Peter Friese xtext-google/ Wie leicht zu erkennen ist, ähnelt die dargestellte Grammatik stark der EBNF und regulären Ausdrücken. Die angegebene Grammatik beschreibt Schritt für Schritt die Struktur der bereits in Listing 3.1 verwendeten Sprache für Umfragen. Hierzu werden in den Zeilen 1 bis 3 der Name der Sprache und der Grammatik näher beschrieben. In den Zeilen 5 bis 8 ist dann die erste Grammatikregel zu finden, die angibt, 8

21 3.2 Der mittels Xtext-Grammatik generierte Editor dass eine Umfrage mit dem Schlüsselwort poll anfängt, gefolgt von einem String zur Beschreibung und einer Anzahl beliebig vieler Fragen. Die Anzahl der erlaubten Fragen wird mit * auf 0 bis n festgelegt, das += gibt an, dass diese Fragen im späteren, abstrakten Modell von Sprachen der Grammatik in der Liste questions zu finden sein werden. In den Zeilen 10 bis 12 wird dann angegeben, dass es sich bei einer Question entweder um eine TextQuestion, um eine SingleChoiceQuestion oder um eine MultipleChoiceQuestion handelt. Das oder wird in der Xtext Grammatik Beschreibung mit dargestellt. Die Zeilen 14 bis 23 beschreiben dann die einzelnen Arten von Fragen. Jede Frage beginnt mit dem Schlüsselwort Question, gefolgt von einem Titel, der den Text der Frage enthält, und einer ID, um die Frage identifizieren zu können. Multiple- und Single-Choice Fragen erhalten zudem noch mindestens eine dazugehörige Option. Dass es sich um mindestens eine Option handelt, wird durch + angegeben. In den Zeilen 25 bis 31 erfolgt dann die Umschreibung dieser Optionen. Eine Übersicht der wichtigsten Grammatikregeln wird im Folgenden dargestellt. Zunächst einmal werden die Operatoren aufgeführt, die die Anzahl erlaubten Anwendungen einer Grammatikregel festlegen. kein Operator genau 1 mal? 0 oder 1 mal + mindestens 1 mal * beliebig oft Zusätzlich zu den Konstrukten die die Anzahl von möglichen Regel aufrufen festlegen sind noch die folgenden Konstrukte wichtig. Oder [] Referenz auf eine Regel der Grammatik {} Erzwingt Erstellung eines bestimmten Typs Xtext verfügt also über umfangreiche Möglichkeiten eine Grammatik für eine Sprache zu definieren. Hierzu verwendet man die Xtext Grammar Language, die sowohl die Syntax einer Sprache, als auch die Abbildung von in der Grammar Language geschrieben Code auf ein Modell beschreibt [12]. 3.2 Der mittels Xtext-Grammatik generierte Editor Mit Hilfe der in Abschnitt 3.1 beschriebenen und im Listing 3.2 dargestellten Grammatik lässt sich mit Xtext automatisch ein Editor generieren. Hierzu genügt es, die Grammatik in die beim Erstellen eines Xtext Projektes dafür erzeugte Datei einzugeben und den Prozess zum Erstellen des Editor zu starten. Ein auf diese Weise erstellter Editor ist in Abbildung 3.3 dargestellt. 9

22 3 Xtext Abbildung 3.3: Darstellung des generierten Editors Ein zentrales Feature des Editor ist das Hervorheben der Syntax. Außerdem ist das typische Eclipse Layout zu sehen, zudem lässt sich rechts eine Outline erkennen die beim Navigieren im Code der DSL hilft. Des Weiteren bietet der Editor noch weitere Funktionalitäten wie automatische Code- Vervollständigung, Syntaxüberprüfung, Kreuz-Referenzen und andere, auf die hier nicht näher eingegangen wird [12]. Zusätzlich zu den automatisch erzeugten Funktionen des Editors ist dieser sehr flexibel [12] und anpassbar. Es lassen sich beispielsweise auch Überprüfungen von Eigenschaften der Semantik der Sprache im Editor implementieren. 3.3 Zielcodegenerierung mit Xtend Nachdem der generierte Editor für die Beispiel-DSL betrachtet wurde, wird nun wieder auf die Kernaufgabe von DSLs eingegangen. DSLs sollen meist übersetzt oder interpretiert werden. So sollen aus der Beschreibung der DSL für den Computer verwertbare Informationen gewonnen werden. In Xtext ist zur Übersetzung die Sprache Xtend 3 integriert. Vor der Auseinandersetzung mit Xtend und seiner Syntax wird der Ausgangspunkt unserer Übersetzung genauer betrachtet. Beim Prozess des automatischen Erstellen des Editors wurden außerdem weitere Artefakte wie der Parser, der Serialisierer und zusätzlicher Infrastrukturcode generiert [12]. Diese Komponenten sind integriert und ba

23 3.3 Zielcodegenerierung mit Xtend sieren auf dem Eclipse Modeling Framework (EMF) 4 [12]. Für die Übersetzung der DSL in eine Zielsprache ist hier zunächst nur wichtig, dass EMF ein strukturiertes Modell unserer Daten, auf Basis der Grammatik, als Ausgangspunkt für eine weitere Übersetzung liefert. Einige der generierten Java-Klassen, bzw. in diesen Fall Interfaces, sind in Abbildung 3.4 als UML-Klassendiagramm dargestellt. Soll also eine in der Beispiel-DSL georg.xtext.example.mydsl.simplepolldsl <<Interface>> Poll +getdescription(): String +setdescription(string): void +getquestions(): EList<Question> 1 0..* <<Interface>> Question +gettitle(): String +settitle(string): void +getname(): String +setname(string): void <<Interface>> MultipleChoiceQuestion +getoptions(): EList<MultipleChoiceOption> 1 <<Interface>> TextQuestion <<Interface>> SingleChoiceOption +getoptions(): EList<SingleChoiceOption> 1 1..* <<Interface>> MultipleChoiceOption +gettitle(): String +settitle(string): void +getname(): String +setname(string): void 1..* <<Interface>> SingleChoiceOption +gettitle(): String +settitle(string): void +getname(): String +setname(string): void Abbildung 3.4: Auszug generierter Interfaces schriebene Umfrage in eine HTML Repräsentation übersetzt werden, kann Xtext dazu verwendet werden, eine Darstellung dieser Umfrage in der abgebildeten Objektrepräsentation zu erzeugen. Hier kann nun Xtend eingesetzt werden, und auf Basis der Bereits strukturierten Daten, jeder Objektinstanz den zugehörigen HTML-Code zuordnen. Xtend ist eine statisch getypte Programmiersprache, die auf der Java Virtual Machine (JVM) ausführbar ist [14]. Xtend Programme compilieren zu lesbarem Java-Code, was das Debuggen und Verständnis verbessert [15]. Außerdem gibt es beispielsweise Closures und Typinferenz [14] sowie syntaktischen Zucker für bessere Lesbarkeit. Hinzu kommt Toolunterstützung für Xtend durch Eclipse [14]. Betrachten wir nun den konkreten Xtend Code für das Umwandeln unser Beispiel- DSL für Umfragen in HTML-Code. In Listing 3.3 ist ein Auszug daraus zu sehen: Die Funktion die die Umwandlung eines gegebenen Poll-Objekts anstößt. Der relevante Code hierfür befindet sich zwischen und. Der restliche Text findet sich nachher

24 3 Xtext Listing 3.3: Auszug aus Xtend-Code zum Generieren des HTML-Code 24 def tohtmlcode(poll p) 25 <html> 26 <head> 27 <title>poll</title> 28 </head> 29 <body> 30 <p> 31 <h2> p.description </h2> <br /> 32 FOR question : p.questions 33 <br /> 34 question.generatecode 35 ENDFOR 36 </p> 37 <p> 38 <input type="submit" value="submit" /> 39 </p> 40 </body> 41 </html> 42 unverändert im generierten HTML-Code wieder. Das Schlüsselwort das für diese Art der Syntax verantwortlich ist, besteht aus drei Hochkommata. Listing 3.4: Auszug aus Xtend-Code zum Generieren des HTML-Code 44 def generatecode(question question) { 45 if (question instanceof SingleChoiceQuestion){ 46 var String s 47 s = question.title + "<br />\n" 48 for(singlechoiceoption op: (question as SingleChoiceQuestion).options){ 49 s = s + "<input type=\"radio\" name=\"" + question.name 50 + "\" value=\"" + op.name + "\" />" + op.title + "<br />\n" 51 } 52 return s 53 }else if(question instanceof MultipleChoiceQuestion){ 54 var String s 55 s = question.title + "<br />\n" 56 for(multiplechoiceoption op: (question as MultipleChoiceQuestion).options){ 57 s = s + "<input type=\"checkbox\" name=\"" + question.name 58 + "\" value=\"" + op.name + "\" />" + op.title + "<br />\n" 59 } 60 return s 61 }else{ 62 return question.title + "<input type=\"text\" name=\"" 63 + question.name + "\" /> <br />" 64 } 65 } Es wird also im Code zunächst ein HTML-Gerüst gebaut, bevor in Zeile 31 die Beschreibung der Umfrage in den Code integriert wird. In den Zeilen 32 bis 35 werden nacheinander alle Fragen aufgerufen und entsprechender Code erzeugt. Die dafür verwendete Funktion generatecode(question question) ist in Listing 3.4 dargestellt. Anschließend ist in den Zeilen 36 bis 41 weiterer HTML-Zielcode zu sehen. 12

25 3.3 Zielcodegenerierung mit Xtend Das Listing 3.4 zeigt die angesprochene Funktion zum Generieren des Zielcodes für die einzelnen Fragen. Die hier verwendete Xtend-Syntax ähnelt stark Java. Die Funktion erwartet eine Question als Argument, bestimmt dann die Art der Frage und erzeugt davon abhängig den HTML-Code, der zurückgegeben wird. Es lässt sich anhand des abgebildeten Codes feststellen, dass die Xtend Syntax die Codegenerierung erleichtert. Der komplette, generierte HTML-Code ist in Listing 3.5 dargestellt. Listing 3.5: Mit Xtend generierter HTML-Code 1 <html> 2 <head> 3 <title>poll</title> 4 </head> 5 <body> 6 <p> 7 <h2>evaluation</h2> <br /> 8 <br /> 9 Geben Sie Ihren Namen ein<input type="text" name="name" /> <br /> 10 <br /> 11 Wie fanden Sie das Seminar?<br /> 12 <input type="radio" name="bewertung" value="sehrgut" />1 (Sehr Gut)<br /> 13 <input type="radio" name="bewertung" value="gut" />2 (Gut)<br /> 14 <input type="radio" name="bewertung" value="befriedigend" />3 (Befriedigend)<br /> 15 <input type="radio" name="bewertung" value="ausreichend" />4 (Ausreichend)<br /> 16 <input type="radio" name="bewertung" value="mangelhaft" />5 (Mangelhaft)<br /> 17 <br /> 18 Was kann verbessert werden?<br /> 19 <input type="checkbox" name="verbesserungen" value="schrift" />Schrift<br /> 20 <input type="checkbox" name="verbesserungen" value="beamer" />Beamer<br /> 21 <input type="checkbox" name="verbesserungen" value="schokolade" />Schokolade fuer alle<br /> 22 </p> 23 <p> 24 <input type="submit" value="submit" /> 25 </p> 26 </body> 27 </html> 13

26

27 4 Zusammenfassung und Bewertung Zusammenfassend lässt sich sagen, dass das Erstellen von DSLs immer einfacher und komfortabler wird. Xtext bietet einen deutlichen Vorteil bei der DSL-Entwicklung im Vergleich zu klassischen Ansätzen, wie einer Kombination aus LEX und YACC. Tools wie Xtext machen DSL-Entwicklung preiswerter, da sie die Entwicklung deutlich beschleunigen. Hinzu kommt, dass die entwickelte DSL vor allem dank dem Editor und der damit einhergehenden Benutzerfreundlichkeit eine hohe Qualität hat. Es bleibt aber auch festzuhalten, dass DSL-Entwicklung immer noch Zeit und Geld kostet. Gutes Sprachdesign ist kompliziert und selbst wenn die technische Umsetzung einer DSL schnell möglich ist, so verursacht das Design einer gut durchdachten, komplexeren DSL hohe Kosten. Außerdem findet mit der Verwendung von Xtext eine Festlegung auf die Eclipse Plattform statt. Einige der mit Xtext erstelle Komponenten lassen sich ohne Eclipse verwenden es bleibt aber eine Festlegung auf Java-Technologie. Dieses kann von Vorteil sein, wenn man für Eclipse entwickelt oder eine gute Integration in Java-Umgebungen haben möchte, aber auch ein Nachteil, wenn man flexibel und nicht auf Java zur Ausführung festgelegt sein will. 15

28

29 Literaturverzeichnis [1] M. Fowler, Language workbenches: The killer-app for domain specific languages, Accessed online from: html, [2] A. van Deursen, P. Klint, and J. Visser, Domain-specific languages: an annotated bibliography, SIGPLAN Not., vol. 35, pp , June [3] P. Hudak, Domain-specific languages, Handbook of Programming Languages, vol. 3, pp , [4] M. Fowler, Introducing Domain Specific Languages, [5] J. Bentley, Programming pearls: little languages, Commun. ACM, vol. 29, pp , August [6] L. Garshol, BNF and EBNF: What are they and how do they work, acedida pela última vez em, vol. 16, [7] B. Kernighan and D. Ritchie, Programmieren in C. Hanser Verlag, [8] J. Bentley, Little languages, CACM, vol. 29, no. 8, pp , [9] F. Jouault, J. Bézivin, and I. Kurtev, TCS:: a DSL for the specification of textual concrete syntaxes in model engineering, in Proceedings of the 5th international conference on Generative programming and component engineering. ACM, 2006, pp [10] M. Fowler, DomainSpecificLanguage, DomainSpecificLanguage.html, 2008, [Online; Stand 06. März 2012]. [11] M. Eysholdt and H. Behrens, Xtext: implement your language faster than the quick and dirty way, in Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companion. ACM, 2010, pp [12] H. Behrens, M. Clay, S. Efftinge, M. Eysholdt, and P. Friese, Xtext User Guide, Dostupné z WWW: 0 1/xtext. html, [13] S. Efftinge and M. Völter, oaw xtext: A framework for textual DSLs, in Workshop on Modeling Symposium at Eclipse Summit, vol. 32, [14] Xtend User Guide, , [Online; Stand 10. März 2012]. [15] S. Efftinge, Xtend 2 - the Successor to Xpand, xtend-2-successor-to-xpand.html, 2010, [Online; Stand 10. März 2012]. 17

Domainspezifische Sprachen

Domainspezifische Sprachen Domainspezifische Sprachen Eine Einführung und Vertiefung am Beispiel des Eclipse Xtext Framework Mirko Heinold Institut für Informatik Christian-Albrechts-Universität zu Kiel Arbeitsgruppe Kommunikationssysteme

Mehr

DSLs mit Xtext entwerfen. 17.08.2012, A. Arnold

DSLs mit Xtext entwerfen. 17.08.2012, A. Arnold DSLs mit Xtext entwerfen 17.08.2012, A. Arnold Copyright 2012 anderscore GmbH Inhalt 1. Was sind DSLs? 2. Xtext Konzepte 3. Einführung ins Sprachdesign 4. Hands On! 3 4 8 20 2 Was sind DSLs? Domain Specific

Mehr

Language Workbench. Aktuelle Themen der Softwaretechnologie. Vortrag von: Arthur Rehm Steven Cardoso. Betreut von: Prof. Dr.

Language Workbench. Aktuelle Themen der Softwaretechnologie. Vortrag von: Arthur Rehm Steven Cardoso. Betreut von: Prof. Dr. Language Workbench Vortrag von:! Aktuelle Themen der Softwaretechnologie Arthur Rehm Steven Cardoso Betreut von: Prof. Dr. Reichenbach [1] !2 Index Kontext Domain Specific Language (DSL) Language Workbench

Mehr

Übung: Verwendung von Java-Threads

Übung: Verwendung von Java-Threads Übung: Verwendung von Java-Threads Ziel der Übung: Diese Übung dient dazu, den Umgang mit Threads in der Programmiersprache Java kennenzulernen. Ein einfaches Java-Programm, das Threads nutzt, soll zum

Mehr

Definition von domänenspezifischen Sprachen mit Xtext: Einführung. 19. November 2014

Definition von domänenspezifischen Sprachen mit Xtext: Einführung. 19. November 2014 Definition von domänenspezifischen Sprachen mit Xtext: Einführung 19. November 2014 Überblick Was ist zu tun, wenn wir selbst einen Ansatz für modellgetriebenen Entwicklung definieren wollen? Anforderungserfassung

Mehr

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte Programmierung für Anfänger am Beispiel PHP Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten

Mehr

Generatives Programmieren

Generatives Programmieren Generatives Programmieren Seminar Produktlinien WS03/04 Tammo van Lessen 08.01.2004 Outline Einleitung Generatoren Generatives Programmieren Fazit Einleitung Industrielle Entwicklung 1826 Austauschbare

Mehr

Copyright 2014 Delta Software Technology GmbH. All Rights reserved.

Copyright 2014 Delta Software Technology GmbH. All Rights reserved. Karlsruhe, 21. Mai 2014 Softwareentwicklung - Modellgetrieben und trotzdem agil Daniela Schilling Delta Software Technology GmbH The Perfect Way to Better Software Modellgetriebene Entwicklung Garant für

Mehr

Binärdarstellung von Fliesskommazahlen

Binärdarstellung von Fliesskommazahlen Binärdarstellung von Fliesskommazahlen 1. IEEE 754 Gleitkommazahl im Single-Format So sind in Gleitkommazahlen im IEEE 754-Standard aufgebaut: 31 30 24 23 0 S E E E E E E E E M M M M M M M M M M M M M

Mehr

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008 Konzeption und Implementierung einer automatisierten Testumgebung, 10. Dezember 2008 1 Gliederung Einleitung Softwaretests Beispiel Konzeption Zusammenfassung 2 Einleitung Komplexität von Softwaresystemen

Mehr

10 Erweiterung und Portierung

10 Erweiterung und Portierung 10.1 Überblick In vielen Fällen werden Compiler nicht vollständig neu geschrieben, sondern von einem Rechnersystem auf ein anderes portiert. Das spart viel Arbeit, ist aber immer noch eine sehr anspruchsvolle

Mehr

Formale Sprachen und Grammatiken

Formale Sprachen und Grammatiken Formale Sprachen und Grammatiken Jede Sprache besitzt die Aspekte Semantik (Bedeutung) und Syntax (formaler Aufbau). Die zulässige und korrekte Form der Wörter und Sätze einer Sprache wird durch die Syntax

Mehr

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank In den ersten beiden Abschnitten (rbanken1.pdf und rbanken2.pdf) haben wir uns mit am Ende mysql beschäftigt und kennengelernt, wie man

Mehr

Software Engineering Klassendiagramme Assoziationen

Software Engineering Klassendiagramme Assoziationen Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen

Mehr

Kurzfassung der Studienarbeit

Kurzfassung der Studienarbeit Kurzfassung der Studienarbeit Abteilung Informatik Namen der Studenten Roman Widmer Mikkala Pedersen Studienjahr Sommersemester 2004 Titel der Studienarbeit.NET Skript Debugger Examinator Der GUI-Builder

Mehr

Robot Karol für Delphi

Robot Karol für Delphi Robot Karol für Delphi Reinhard Nitzsche, OSZ Handel I Version 0.1 vom 24. Januar 2003 Zusammenfassung Nach der Einführung in die (variablenfreie) Programmierung mit Robot Karol von Freiberger und Krško

Mehr

Professionelle Seminare im Bereich MS-Office

Professionelle Seminare im Bereich MS-Office Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion

Mehr

Proseminar: Website-Managment-System. NetObjects Fusion. von Christoph Feller

Proseminar: Website-Managment-System. NetObjects Fusion. von Christoph Feller Proseminar: Website-Managment-System NetObjects Fusion von Christoph Feller Netobjects Fusion - Übersicht Übersicht Einleitung Die Komponenten Übersicht über die Komponenten Beschreibung der einzelnen

Mehr

HTML5. Wie funktioniert HTML5? Tags: Attribute:

HTML5. Wie funktioniert HTML5? Tags: Attribute: HTML5 HTML bedeutet Hypertext Markup Language und liegt aktuell in der fünften Fassung, also HTML5 vor. HTML5 ist eine Auszeichnungssprache mit der Webseiten geschrieben werden. In HTML5 wird festgelegt,

Mehr

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

Mehr

Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer

Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Klassendiagramme Ein Klassendiagramm dient in der objektorientierten Softwareentwicklung zur Darstellung von Klassen und den Beziehungen,

Mehr

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

Mehr

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren:

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren: 4. AUSSAGENLOGIK: SYNTAX 4.1 Objektsprache und Metasprache 4.2 Gebrauch und Erwähnung 4.3 Metavariablen: Verallgemeinerndes Sprechen über Ausdrücke von AL 4.4 Die Sprache der Aussagenlogik 4.5 Terminologie

Mehr

Grundbegriffe der Informatik

Grundbegriffe 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

Mehr

SEMINAR Modifikation für die Nutzung des Community Builders

SEMINAR Modifikation für die Nutzung des Community Builders 20.04.2010 SEMINAR Modifikation für die Nutzung des Community Builders Step by Step Anleitung ecktion SEMINAR Modifikation für die Nutzung des Community Builders Step by Step Anleitung Bevor Sie loslegen

Mehr

Informationen zur Verwendung von Visual Studio und cmake

Informationen zur Verwendung von Visual Studio und cmake Inhaltsverzeichnis Informationen zur Verwendung von Visual Studio und cmake... 2 Erste Schritte mit Visual Studio... 2 Einstellungen für Visual Studio 2013... 2 Nutzung von cmake... 6 Installation von

Mehr

Vorgetragen von. Sanaz Mostowfi Anna Polovets Mandy Neumann

Vorgetragen von. Sanaz Mostowfi Anna Polovets Mandy Neumann Vorgetragen von Sanaz Mostowfi Anna Polovets Mandy Neumann Gliederung Was ist DSL? Welche Arten von DSL gibt es? Vor und Nachteile Werkzeuge zur Erstellung von DSLs XText Definition: DSL (Domain Specific

Mehr

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken Dateiname: ecdl5_01_00_documentation_standard.doc Speicherdatum: 14.02.2005 ECDL 2003 Basic Modul 5 Datenbank - Grundlagen

Mehr

Ihre Interessentendatensätze bei inobroker. 1. Interessentendatensätze

Ihre Interessentendatensätze bei inobroker. 1. Interessentendatensätze Ihre Interessentendatensätze bei inobroker Wenn Sie oder Ihre Kunden die Prozesse von inobroker nutzen, werden Interessentendatensätze erzeugt. Diese können Sie direkt über inobroker bearbeiten oder mit

Mehr

Arbeiten mit UMLed und Delphi

Arbeiten mit UMLed und Delphi Arbeiten mit UMLed und Delphi Diese Anleitung soll zeigen, wie man Klassen mit dem UML ( Unified Modeling Language ) Editor UMLed erstellt, in Delphi exportiert und dort so einbindet, dass diese (bis auf

Mehr

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv

schnell 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

Mehr

Kapitel 4. Einführung in den Scannergenerator Flex. Einführung in den Scannergenerator Flex Wintersemester 2008/09 1 / 9

Kapitel 4. Einführung in den Scannergenerator Flex. Einführung in den Scannergenerator Flex Wintersemester 2008/09 1 / 9 Kapitel 4 Einführung in den Scannergenerator Flex Einführung in den Scannergenerator Flex Wintersemester 2008/09 1 / 9 Generatoren für die lexikalische Analyse Scannergeneratoren werden eingesetzt um die

Mehr

Kompilieren und Linken

Kompilieren 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

Mehr

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen Alexander Schunk Henry Trobisch Inhalt 1. Vergleich der Unit-Tests... 2 2. Vergleich der Codeabdeckungs-Tests... 2 3. Vergleich

Mehr

1 Mathematische Grundlagen

1 Mathematische Grundlagen Mathematische Grundlagen - 1-1 Mathematische Grundlagen Der Begriff der Menge ist einer der grundlegenden Begriffe in der Mathematik. Mengen dienen dazu, Dinge oder Objekte zu einer Einheit zusammenzufassen.

Mehr

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten Was sind Berechtigungen? Unter Berechtigungen werden ganz allgemein die Zugriffsrechte auf Dateien und Verzeichnisse (Ordner) verstanden.

Mehr

Grammatiken. Einführung

Grammatiken. Einführung Einführung Beispiel: Die arithmetischen Ausdrücke über der Variablen a und den Operationen + und können wie folgt definiert werden: a, a + a und a a sind arithmetische Ausdrücke Wenn A und B arithmetische

Mehr

Tutorial. In diesem Tutorial möchte ich die Möglichkeiten einer mehrspracheigen Web-Site erläutern.

Tutorial. In diesem Tutorial möchte ich die Möglichkeiten einer mehrspracheigen Web-Site erläutern. Tutorial In diesem Tutorial möchte ich die Möglichkeiten einer mehrspracheigen Web-Site erläutern. Zu Beginn müssen wir uns über die gewünschten Sprachen Gedanken machen. Zum einem, da eine professionelle

Mehr

teischl.com Software Design & Services e.u. office@teischl.com www.teischl.com/booknkeep www.facebook.com/booknkeep

teischl.com Software Design & Services e.u. office@teischl.com www.teischl.com/booknkeep www.facebook.com/booknkeep teischl.com Software Design & Services e.u. office@teischl.com www.teischl.com/booknkeep www.facebook.com/booknkeep 1. Erstellen Sie ein neues Rechnungsformular Mit book n keep können Sie nun Ihre eigenen

Mehr

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Suche schlecht beschriftete Bilder mit Eigenen Abfragen Suche schlecht beschriftete Bilder mit Eigenen Abfragen Ist die Bilderdatenbank über einen längeren Zeitraum in Benutzung, so steigt die Wahrscheinlichkeit für schlecht beschriftete Bilder 1. Insbesondere

Mehr

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein. Schritt 1: Installation des Javacompilers JDK. Der erste Start mit Eclipse Bevor Sie den Java-Compiler installieren sollten Sie sich vergewissern, ob er eventuell schon installiert ist. Gehen sie wie folgt

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup. 04.06.2005 Conrad Kobsch

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup. 04.06.2005 Conrad Kobsch Ein Blick voraus des Autors von C++: Bjarne Stroustrup 04.06.2005 Conrad Kobsch Inhalt Einleitung Rückblick Nur eine Übergangslösung? Was würde C++ effektiver machen? Quelle 2 Einleitung Wo steht C++,

Mehr

Informatik I Tutorium WS 07/08

Informatik I Tutorium WS 07/08 Informatik I Tutorium WS 07/08 Vorlesung: Prof. Dr. F. Bellosa Übungsleitung: Dipl.-Inform. A. Merkel Tutorium: 12 Tutor: Jens Kehne Tutorium 3: Dienstag 13. November 2007 Übersicht Tutorium Übersicht

Mehr

Microsoft SharePoint 2013 Designer

Microsoft SharePoint 2013 Designer Microsoft SharePoint 2013 Designer Was ist SharePoint? SharePoint Designer 2013 Vorteile SharePoint Designer Funktionen.Net 4.0 Workflow Infrastruktur Integration von Stages Visuelle Designer Copy & Paste

Mehr

Eva Douma: Die Vorteile und Nachteile der Ökonomisierung in der Sozialen Arbeit

Eva Douma: Die Vorteile und Nachteile der Ökonomisierung in der Sozialen Arbeit Eva Douma: Die Vorteile und Nachteile der Ökonomisierung in der Sozialen Arbeit Frau Dr. Eva Douma ist Organisations-Beraterin in Frankfurt am Main Das ist eine Zusammen-Fassung des Vortrages: Busines

Mehr

SEW Übung EMFText. 1 Aufgabe. 2 Domänenbeschreibung. 3 Installation von Eclipse/EMFText. 4 Schritt-für-Schritt Anleitung. 4.

SEW Übung EMFText. 1 Aufgabe. 2 Domänenbeschreibung. 3 Installation von Eclipse/EMFText. 4 Schritt-für-Schritt Anleitung. 4. SEW Übung EMFText 1 Aufgabe Erstellen Sie eine textuelle Domänenspezifische Sprache Domain-specific Language (DSL) mit dem Werkzeug EMFText. Die Sprache soll dazu dienen Formulare (Fragen, Antworttypen

Mehr

Lernwerkstatt 9 privat- Freischaltung

Lernwerkstatt 9 privat- Freischaltung Was tun, wenn mein Rechner immer wieder die Freischaltung der Lernwerkstatt 9 privat verliert und ich die Ursache dafür nicht finden kann? Normalerweise genügt es, genau eine einzige online-freischaltung

Mehr

Zeichen bei Zahlen entschlüsseln

Zeichen 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

Mehr

DSL Entwicklung und Modellierung

DSL Entwicklung und Modellierung DSL Entwicklung und Modellierung Dipl. Inform. Rolf Hänisch Übersicht DSL, was bedeutet das für uns? Eine Anwendung aus der Automatisierungstechnik Sprachen und Werkzeuge Ergebnisse und Erfahrungen GI

Mehr

Was ist ein Compiler?

Was ist ein Compiler? Was ist ein Compiler? Was ist ein Compiler und worum geht es? Wie ist ein Compiler aufgebaut? Warum beschäftigen wir uns mit Compilerbau? Wie ist die Veranstaltung organisiert? Was interessiert Sie besonders?

Mehr

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage .htaccess HOWTO zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage Stand: 21.06.2015 Inhaltsverzeichnis 1. Vorwort...3 2. Verwendung...4 2.1 Allgemeines...4 2.1 Das Aussehen der.htaccess

Mehr

! " # $ " % & Nicki Wruck worldwidewruck 08.02.2006

!  # $  % & Nicki Wruck worldwidewruck 08.02.2006 !"# $ " %& Nicki Wruck worldwidewruck 08.02.2006 Wer kennt die Problematik nicht? Die.pst Datei von Outlook wird unübersichtlich groß, das Starten und Beenden dauert immer länger. Hat man dann noch die.pst

Mehr

Algorithmen mit Python

Algorithmen mit Python Algorithmen mit Python Vorbesprechung zum Proseminar im Sommersemester 2009 http://www.python.org 1 Sie lernen in DAP Java und C/C++: 80% Syntax, 20% Algorithmen-Design Idee Schon ein einfaches Hello World

Mehr

Individuelle Erweiterung des generierten Codes. 16. Januar 2013

Individuelle Erweiterung des generierten Codes. 16. Januar 2013 Individuelle Erweiterung des generierten Codes 16. Januar 2013 Überblick Welche Möglichkeiten zur individuellen Erweiterung von generiertem Code gibt es? Innerhalb eines Moduls (Klasse) Auf Modulebene

Mehr

Anleitung über den Umgang mit Schildern

Anleitung über den Umgang mit Schildern Anleitung über den Umgang mit Schildern -Vorwort -Wo bekommt man Schilder? -Wo und wie speichert man die Schilder? -Wie füge ich die Schilder in meinen Track ein? -Welche Bauteile kann man noch für Schilder

Mehr

Grundlagen der Theoretischen Informatik, SoSe 2008

Grundlagen der Theoretischen Informatik, SoSe 2008 1. Aufgabenblatt zur Vorlesung Grundlagen der Theoretischen Informatik, SoSe 2008 (Dr. Frank Hoffmann) Lösung von Manuel Jain und Benjamin Bortfeldt Aufgabe 2 Zustandsdiagramme (6 Punkte, wird korrigiert)

Mehr

Informatik für Schüler, Foliensatz 21 Objektorientierte Programmierung

Informatik für Schüler, Foliensatz 21 Objektorientierte Programmierung rof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 23. April 2009 1/14 Informatik für Schüler, Foliensatz 21 Objektorientierte Programmierung Prof. G. Kemnitz Institut für Informatik,

Mehr

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus:

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus: Unterrichtsmaterialien in digitaler und in gedruckter Form Auszug aus: If-clauses - conditional sentences - Nie mehr Probleme mit Satzbau im Englischen! Das komplette Material finden Sie hier: School-Scout.de

Mehr

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER Inhalt 1 Einleitung... 1 2 Einrichtung der Aufgabe für die automatische Sicherung... 2 2.1 Die Aufgabenplanung... 2 2.2 Der erste Testlauf... 9 3 Problembehebung...

Mehr

Einführung in. Logische Schaltungen

Einführung in. Logische Schaltungen Einführung in Logische Schaltungen 1/7 Inhaltsverzeichnis 1. Einführung 1. Was sind logische Schaltungen 2. Grundlegende Elemente 3. Weitere Elemente 4. Beispiel einer logischen Schaltung 2. Notation von

Mehr

CSS-Grundlagen. Etwas über Browser. Kapitel. Die Vorbereitung

CSS-Grundlagen. Etwas über Browser. Kapitel. Die Vorbereitung Kapitel 1 Die Vorbereitung Vorgängerversionen. Bald darauf folgte dann schon die Version 4, die mit einer kleinen Bearbeitung bis vor Kurzem 15 Jahre unverändert gültig war. All das, was du die letzten

Mehr

Zählen von Objekten einer bestimmten Klasse

Zä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 --

Mehr

Forschen - Schreiben - Lehren

Forschen - Schreiben - Lehren Forschen - Schreiben - Lehren Kontakt: Mareike Gronich mgronich@uni-bielefeld.de Fach/Fachgebiet: Germanistik Art der Lehrveranstaltung: Seminar Ausgangspunkt Geschütztes konstruktives Peer-Feedback in

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

Patch Management mit

Patch Management mit Patch Management mit Installation von Hotfixes & Patches Inhaltsverzeichnis dieses Dokuments Einleitung...3 Wie man einen Patch installiert...4 Patch Installation unter UliCMS 7.x.x bis 8.x.x...4 Patch

Mehr

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

5 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

4 Aufzählungen und Listen erstellen

4 Aufzählungen und Listen erstellen 4 4 Aufzählungen und Listen erstellen Beim Strukturieren von Dokumenten und Inhalten stellen Listen und Aufzählungen wichtige Werkzeuge dar. Mit ihnen lässt sich so ziemlich alles sortieren, was auf einer

Mehr

Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers

Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers Ist Excel das richtige Tool für FMEA? Einleitung Wenn in einem Unternehmen FMEA eingeführt wird, fangen die meisten sofort damit an,

Mehr

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7 Einrichtung des Cisco VPN Clients (IPSEC) in Windows7 Diese Verbindung muss einmalig eingerichtet werden und wird benötigt, um den Zugriff vom privaten Rechner oder der Workstation im Home Office über

Mehr

Leichte-Sprache-Bilder

Leichte-Sprache-Bilder Leichte-Sprache-Bilder Reinhild Kassing Information - So geht es 1. Bilder gucken 2. anmelden für Probe-Bilder 3. Bilder bestellen 4. Rechnung bezahlen 5. Bilder runterladen 6. neue Bilder vorschlagen

Mehr

Outsourcing und Offshoring. Comelio und Offshoring/Outsourcing

Outsourcing und Offshoring. Comelio und Offshoring/Outsourcing Outsourcing und Offshoring Comelio und Offshoring/Outsourcing INHALT Outsourcing und Offshoring... 3 Comelio und Offshoring/Outsourcing... 4 Beauftragungsmodelle... 4 Projektleitung vor Ort und Software-Entwicklung

Mehr

Die neue Aufgabe von der Monitoring-Stelle. Das ist die Monitoring-Stelle:

Die neue Aufgabe von der Monitoring-Stelle. Das ist die Monitoring-Stelle: Die neue Aufgabe von der Monitoring-Stelle Das ist die Monitoring-Stelle: Am Deutschen Institut für Menschen-Rechte in Berlin gibt es ein besonderes Büro. Dieses Büro heißt Monitoring-Stelle. Mo-ni-to-ring

Mehr

Projektmanagement in der Spieleentwicklung

Projektmanagement in der Spieleentwicklung Projektmanagement in der Spieleentwicklung Inhalt 1. Warum brauche ich ein Projekt-Management? 2. Die Charaktere des Projektmanagement - Mastermind - Producer - Projektleiter 3. Schnittstellen definieren

Mehr

Informatik 1 Tutorial

Informatik 1 Tutorial ETH Zürich, D-INFK/D-BAUG Herbstsemester 2014 Dr. Martin Hirt Christian Badertscher Informatik 1 Tutorial Dieses Tutorial hat zum Ziel, die notwendigen Tools auf dem eigenen Computer zu installieren, so

Mehr

In 12 Schritten zum mobilen PC mit Paragon Drive Copy 11 und Microsoft Windows Virtual PC

In 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

Mehr

C++11 C++14 Kapitel Doppelseite Übungen Musterlösungen Anhang

C++11 C++14 Kapitel Doppelseite Übungen Musterlösungen Anhang Einleitung Dieses Buch wendet sich an jeden Leser, der die Programmiersprache C++ neu lernen oder vertiefen möchte, egal ob Anfänger oder fortgeschrittener C++-Programmierer. C++ ist eine weitgehend plattformunabhängige

Mehr

Dokumentation Schedulingverfahren

Dokumentation Schedulingverfahren Dokumentation Schedulingverfahren von Norbert Galuschek Gordian Maugg Alexander Hahn Rebekka Weissinger June 23, 2011 1 Contents 1 Aufgabe 3 2 Vorgehensweise 4 2.1 Warum Android.......................

Mehr

Serien-eMail mit oder ohne Anhang

Serien-eMail mit oder ohne Anhang Serien-eMail mit oder ohne Anhang Sie können im WohnungsManager sowohl objektübergreifend als auch in einem Objekt Serien-eMails versenden. Die Serien-eMail ist für SMTP (Short Message Tranfer Protocol)

Mehr

Autorisierung. Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente

Autorisierung. Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente Autorisierung Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente Dokumentation zum Referat von Matthias Warnicke und Joachim Schröder Modul: Komponenten basierte Softwareentwickelung

Mehr

YouTube: Video-Untertitel übersetzen

YouTube: Video-Untertitel übersetzen Der Easytrans24.com-Ratgeber YouTube: Video-Untertitel übersetzen Wie Sie mit Hilfe von Easytrans24.com in wenigen Schritten Untertitel für Ihre YouTube- Videos in mehrere Sprachen übersetzen lassen können.

Mehr

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Software-Engineering und Optimierungsanwendungen in der Thermodynamik Software-Engineering und Optimierungsanwendungen in der Thermodynamik Software-Engineering 5 Programmentwicklung und Debuggen mit IDE und CASE-Tools Übungen Prof. Dr. Rolf Dornberger OPTSWE_SWE: 5 Programmentwicklung

Mehr

Guide DynDNS und Portforwarding

Guide DynDNS und Portforwarding Guide DynDNS und Portforwarding Allgemein Um Geräte im lokalen Netzwerk von überall aus über das Internet erreichen zu können, kommt man um die Themen Dynamik DNS (kurz DynDNS) und Portweiterleitung(auch

Mehr

Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015

Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015 Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015 CODESYS a trademark of 3S-Smart Software Solutions GmbH Agenda 1 Warum

Mehr

robotron*e count robotron*e sales robotron*e collect Anmeldung Webkomponente Anwenderdokumentation Version: 2.0 Stand: 28.05.2014

robotron*e count robotron*e sales robotron*e collect Anmeldung Webkomponente Anwenderdokumentation Version: 2.0 Stand: 28.05.2014 robotron*e count robotron*e sales robotron*e collect Anwenderdokumentation Version: 2.0 Stand: 28.05.2014 Seite 2 von 5 Alle Rechte dieser Dokumentation unterliegen dem deutschen Urheberrecht. Die Vervielfältigung,

Mehr

Die Lernumgebung des Projekts Informationskompetenz

Die Lernumgebung des Projekts Informationskompetenz Beitrag für Bibliothek aktuell Die Lernumgebung des Projekts Informationskompetenz Von Sandra Merten Im Rahmen des Projekts Informationskompetenz wurde ein Musterkurs entwickelt, der den Lehrenden als

Mehr

Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert

Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert Beamen in EEP Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert Zuerst musst du dir 2 Programme besorgen und zwar: Albert, das

Mehr

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken. Seite erstellen Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken. Es öffnet sich die Eingabe Seite um eine neue Seite zu erstellen. Seiten Titel festlegen Den neuen

Mehr

Ihr Weg in die Suchmaschinen

Ihr Weg in die Suchmaschinen Ihr Weg in die Suchmaschinen Suchmaschinenoptimierung Durch Suchmaschinenoptimierung kann man eine höhere Platzierung von Homepages in den Ergebnislisten von Suchmaschinen erreichen und somit mehr Besucher

Mehr

Die Post hat eine Umfrage gemacht

Die Post hat eine Umfrage gemacht Die Post hat eine Umfrage gemacht Bei der Umfrage ging es um das Thema: Inklusion Die Post hat Menschen mit Behinderung und Menschen ohne Behinderung gefragt: Wie zufrieden sie in dieser Gesellschaft sind.

Mehr

Einführung in Eclipse und Java

Einführung in Eclipse und Java Universität Bayreuth Lehrstuhl für Angewandte Informatik IV Datenbanken und Informationssysteme Prof. Dr.-Ing. Jablonski Einführung in Eclipse und Java Dipl.Inf. Manuel Götz Lehrstuhl für Angewandte Informatik

Mehr

A1.7: Entropie natürlicher Texte

A1.7: Entropie natürlicher Texte A1.7: Entropie natürlicher Texte Anfang der 1950er Jahre hat Claude E. Shannon die Entropie H der englischen Sprache mit einem bit pro Zeichen abgeschätzt. Kurz darauf kam Karl Küpfmüller bei einer empirischen

Mehr

Eine Anwendung mit InstantRails 1.7

Eine Anwendung mit InstantRails 1.7 Eine Anwung mit InstantRails 1.7 Beschrieben wird das Anlegen einer einfachen Rails-Anwung, die ohne Datenbank auskommt. Schwerpunktmäßig wird auf den Zusammenhang von Controllern, Views und der zugehörigen

Mehr

WhiteStarUML Tutorial

WhiteStarUML Tutorial WhiteStarUML Tutorial Autor: Simon Balázs, BME IIT, 2015. Übersetzung: Kovács Márton, 2015. Installation Herunterladen und installieren Sie das WhiteStarUML: http://sourceforge.net/projects/whitestaruml/

Mehr

Was ist Sozial-Raum-Orientierung?

Was ist Sozial-Raum-Orientierung? Was ist Sozial-Raum-Orientierung? Dr. Wolfgang Hinte Universität Duisburg-Essen Institut für Stadt-Entwicklung und Sozial-Raum-Orientierte Arbeit Das ist eine Zusammen-Fassung des Vortrages: Sozialräume

Mehr

Ein PDF erstellen. aus Adobe InDesign CC. Langner Marketing Unternehmensplanung Metzgerstraße 59 72764 Reutlingen

Ein PDF erstellen. aus Adobe InDesign CC. Langner Marketing Unternehmensplanung Metzgerstraße 59 72764 Reutlingen aus Adobe InDesign CC Langner Marketing Unternehmensplanung Metzgerstraße 59 72764 Reutlingen T 0 71 21 / 2 03 89-0 F 0 71 21 / 2 03 89-20 www.langner-beratung.de info@langner-beratung.de Über Datei >

Mehr

Nach der Anmeldung im Backend Bereich landen Sie im Kontrollzentrum, welches so aussieht:

Nach der Anmeldung im Backend Bereich landen Sie im Kontrollzentrum, welches so aussieht: Beiträge erstellen in Joomla Nach der Anmeldung im Backend Bereich landen Sie im Kontrollzentrum, welches so aussieht: Abbildung 1 - Kontrollzentrum Von hier aus kann man zu verschiedene Einstellungen

Mehr

PHPNuke Quick & Dirty

PHPNuke Quick & Dirty PHPNuke Quick & Dirty Dieses Tutorial richtet sich an all die, die zum erstenmal an PHPNuke System aufsetzen und wirklich keine Ahnung haben wie es geht. Hier wird sehr flott, ohne grosse Umschweife dargestellt

Mehr