Date post: | 05-Apr-2015 |
Category: |
Documents |
Upload: | elfriede-gerst |
View: | 105 times |
Download: | 0 times |
Microsoft Academic Program
Domain Specific Languages Ralf Westphal
Student Technology Conference 2005
Microsoft Academic
Program
Student Technology Conference 2005
Domain Specific Languages
• Ralf Westphal• Freier Autor, Berater, Trainer, Entwickler
und Associate of thinktecture• Microsoft Regional Director & MVP• [email protected]
Microsoft Academic
Program
Student Technology Conference 2005Allgemeine Programmierung
• General Purpose Languages (GPL)• Generic Languages• C#, VB.NET, C, C++, Java, Modula-2, Ada usw.
– Meist imperative Programmierung– „Turing Complete“
• Fallunterscheidungen• Schleifen/Sprünge• IO• Datentypen/Speicherzugriff
– Keiner Problemdomäne (z.B. Finanzwesen, Betriebssysteme, UI) zugeordnet
• Lösungen für alle möglichen Probleme lassen sich „irgendwie“ formulieren
Microsoft Academic
Program
Student Technology Conference 2005Beispiel Suchen: GPL
• VB.NET Code– Suche „ab“ oder „ac“ in einem String. Private Function Match(ByVal input As String) As Boolean Dim iA As Integer = -1 Do iA = input.IndexOf("a", iA + 1) If iA < 0 Then Return False
If iA < input.Length - 1 Then Dim nextChar As Char nextChar = input.Chars(iA + 1) If nextChar = "b" Or nextChar = "c" Then Return True End If End If Loop End Function
• NutzungIf Match(t) Then ...
Microsoft Academic
Program
Student Technology Conference 2005What is a Domain?
Implementation
Specification
Requirements
Deployment
BusinessSystems
Real-TimeSystems
Aircraftcontrol
systems
AirlineBaggageHandlingSystems
InsuranceManagement
Systems
Microsoft Academic
Program
Student Technology Conference 2005What is a Language?
C(x) h C(x) t 2m xih = –
Textual Pictorial
Declarative
Procedural
class Magnox : NuclearPowerStation {
public void dropRods ()
jo biscuits 24 green
pat cakes 32 pink
Employeename
addresspromote
Jobdescription
payassign
0..*
a>b && c==d
call
CallRecord
call length
base rate: £/s
store
<CallRecord>
<caller><number>07713248</number>
Microsoft Academic
Program
Student Technology Conference 2005Spezielle Programmierung
• Domain Specific Languages (DSL)– Einer Problemdomäne zugeordnet
• Verringerung der semantischen Distanz zwischen Problem und Programm
• Es soll bewusst nicht alles möglich sein
– Oft auch: Little Languages, Mini Languages– Horizontal: SQL, Reg Ex, XSLT, HTML– Vertikal: EBNF, lex/yacc, Call/C, Frob, LexiFi,
Postscript, Tex, VHDL– Oft deklarativ
• Oft nicht „Turing complete“
Microsoft Academic
Program
Student Technology Conference 2005Beispiel Suchen: DSL
• Reg Ex Code a(b|c)
• NutzungIf RegEx.Match(t, "a(b|c)").Success Then ...
Microsoft Academic
Program
Student Technology Conference 2005DSLs machen Probleme
„überschaubar“
• Ziel von DSL ist die Artefaktgenerierung!
• Höhere Produktivität– Weniger Zeilen Code– Deklarativ statt imperativ
• Bessere Wartbarkeit– Höhere Transparenz, bessere Lesbarkeit– Modularisierung– Code Reuse
• Höhere Sicherheit– „Sandbox“
• Involvierung von Domänenexperten– Hohe Ausdrucksfähigkeit, Vokabular der Domäne steht
zur Verfügung– Leichte Erlernbarkeit
Microsoft Academic
Program
Student Technology Conference 2005Primzahlenermittlung ist
“überschaubar”…
• …wenn wir ein System haben, dass…– multiplizieren und dividieren und– Dinge wiederholt tun kann
_*__*__/__/_
_%__%_while (…) {…}while (…) {…}
C, Pascal, Fortran,…Von Neumann computer with conventional CPU
language:platform:
Microsoft Academic
Program
Student Technology Conference 2005Teilelisten ermitteln ist
“überschaubar”…
• …wenn wir ein System haben, dass…– Lange Listen speichern und schnell
traviersieren kann– Listen filtern und kombinieren kann
CREATE …CREATE …JOIN …… WHERE …
JOIN …… WHERE … SELECT …SELECT …
Relational Database SQL
platform: language:
Microsoft Academic
Program
Student Technology Conference 2005GUI-Entwicklung ist “überschaubar”…
• …wenn wir ein Systen haben, dass…– Fenster und Controls anzeigen kann und– Strukturen interaktiv modifizierbar macht
Visual programminglanguages
Interactive appplatform
platform: language:
Microsoft Academic
Program
Student Technology Conference 2005
• …wenn wir eine language dafür haben…
• …und eine runtime platform
Telefonabrechnungssysteme sind “überschaubar”…
Phone Billing Engine
call
calendarmonth
CallRecord
call length
base rate: £/s
call length
friend discount rate: £/sstore
friends calls
other calls
-
bill
billing period
store
Telephone Billing Scheme
Microsoft Academic
Program
Student Technology Conference 2005
prospectinitiated
prospective sale
empty
overflow
Sat
weekly
accumulator4
£20
1 week delay
£30
prospectcancels
salesperson’saccount31
monthly
bank a/c
pay
7
£
tablet PC
customer
customer
-facingdeveloper
animator prototype
for review
tweak
hack
Mit einer DSL arbeiten
generator phone billsystem
Microsoft Academic
Program
Student Technology Conference 2005DSL-Output
prospectinitiated
prospective sale
empty
overflow
Sat
weekly
accumulator4
£20
1 week delay
£30
prospectcancels
salesperson’saccount31
monthly
bank a/c
pay
7
£
generator phone billsystem
animator prototype
for review
generator list of parts
generator business plan
C#
XML
C#C#, Java
XML
SQL
mixed codeand configfiles
Microsoft Academic
Program
Student Technology Conference 2005“Mind The Gap” – Von der Abstraktion zum
Code
Model
Application Code
PlatformFrameworks
Model
Generated Code
Platform
Model
Application Code
PlatformFrameworks
Model
Generated Code
Platform
Model
Application Code
PlatformFrameworks
Model
Generated Code
Platform
Model
Application Code
PlatformFrameworks
Model
Generated Code
Platform
(b)(b)
Model
Application CodeDomain Specific
Framework
PlatformFrameworks
Model
Generated CodeFramework
Pattern Language
Platform
Model
Application CodeDomain Specific
Framework
PlatformFrameworks
Model
Generated CodeFramework
Pattern Language
Platform
Model
Application CodeDomain Specific
Framework
PlatformFrameworks
Model
Generated CodeFramework
Pattern Language
Platform
Model
Application CodeDomain Specific
Framework
PlatformFrameworks
Model
Generated Code
Framework
Platform
(c)(c)
Application Code
Model
PlatformFrameworks
Generated Code
Model
Platform
Application Code
Model
PlatformFrameworks
Generated Code
Model
Platform
Application Code
Model
PlatformFrameworks
Generated Code
Model
Platform
Application Code
Model
PlatformFrameworks
Generated Code
Model
Platform
(a)(a)
PlatformFrameworks
Application Code
Model
Platform
Generated Code
Model
PlatformFrameworks
Application Code
Model
Platform
Generated Code
Model
PlatformFrameworks
Application Code
Model
Platform
Generated Code
Model
PlatformFrameworks
Application Code
Model
Platform
Generated Code
Model
(d)(d)
Microsoft Academic
Program
Student Technology Conference 2005Microsofts DSL Tools für VS2005
Microsoft Academic
Program
Student Technology Conference 2005DSL Definition in VS2005
• Domain Model– Abbildung einer Problemdomäne in ein Klassenmodell– Verknüpfung von Konzepten über Beziehungen inkl.
Nebenbedingungen– Beschreibung mittels Designer
• Designer Definition– Visualisierung des Domain Model
• Wie sollen Konzepte dargestellt werden?• Wie sollen Beziehungen dargestellt werden?
– Beschreibung mittels XML Dokument• Artifact Generator
– Template basiert– Übersetzt Instanzierung des Domain Models in „Code“
• Microsofts DSLs sind immer visuell!
Microsoft Academic
Program
Student Technology Conference 2005Domain Model Designer
Microsoft Academic
Program
Student Technology Conference 2005DSL-Programmierung
Microsoft Academic
Program
Student Technology Conference 2005Microsoft DSLs I
• Application Designer
Microsoft Academic
Program
Student Technology Conference 2005Microsoft DSLs II
• System Designer
Microsoft Academic
Program
Student Technology Conference 2005Microsoft DSLs III
• Logical Datacenter Designer
Microsoft Academic
Program
Student Technology Conference 2005
• Deployment Designer
Microsoft DSLs IV
Microsoft Academic
Program
Student Technology Conference 2005Microsoft DSLs V
• Class Designer
Microsoft Academic
Program
Student Technology Conference 2005War das alles?
• Microsoft unterstützt textuelle DSL z.Z. nur schlecht– DSL Tools fokussieren auf visuelle DSLs– VSIP Babel ist umständlich zu nutzen
• C++ bzw. COM-basiert• Schlechte Dokumentation• Unterstützt nur Lex/Yacc bzw. Bison
– Common Compiler Infrastructure (CCI) nur für den akademischen Bereich verfügbar
• VS200x Add-Ins bieten einen alternativen Einstieg– DSL-Code = textueller Project Item
• Gemischtsprachige Entwicklung möglich– Add-In implementiert Übersetzer
• Übersetzung autom. oder durch Benutzer angestoßen– Ergebnis der Übersetzung steht im Projekt sofort zur Verfügung– Fehlermeldungen in Task Pane möglich– Allerdings…
• Kein Syntax Highlighting• Kein Intellisense in DSL-Code
– Ausnahme: XML-basierte DSL
Microsoft Academic
Program
Student Technology Conference 2005Beispiel einer textuellen DSL
• Kapselung von SQL Anweisungen– XML-basiert, horizontal– Deklarativ– Codeerzeugung mit Templates
• Kapselung von SQL Anweisungen– Eigene Grammatik, horizontal– Deklarativ– Codeerzeugung durch Compiler-Compiler
erzeugten Übersetzer mit Zwischensprache• „Pipelining“
Microsoft Academic
Program
Student Technology Conference 2005
adc.sqlobjects.compiler.cocor
SqlObjectsPreCompiler
sqlobjects ……end sqlobjects
adcSqlObjectsAddIn
Connect
adc.sqlobjects.compiler
Xml.SqlObjects.Compiler<sqlobjects name="…">
Architektur der Beispiel-DSL
Scanner Parser
adc.compiler.shared
ACompiler CompilerResult
sqlobjectsgrammar.ATG
Coco/R
Cocor.SqlObjects.Compiler
sqlobjects ……end sqlobjects
<sqlobjects name="…">
CodeSmith
Microsoft Academic
Program
Student Technology Conference 2005Fazit
• DSLs sind nicht nur cool, sondern hilfreich– Codereduktion– Modularisierung– Horizontal & vertikal
• DSLs sind nicht so schwer zu implementieren, wie allgemein angenommen– DSL Tools unterstützen graphische Sprachen mit enger
Integration in VS2005– XML oder Coco/R bieten Tools für die Analyse von DSL-Quelltext– CodeSmith bietet Unterstützung bei der Codeerzeugung
• DSLs können schon heute in VS.NET integriert werden!
Microsoft Academic
Program
Student Technology Conference 2005
Questions and Answers ??
??
?
Microsoft Academic
Program
Student Technology Conference 2005Ressourcen
• DSL– Microsoft DSL Tools, http://lab.msdn.microsoft.com/teamsystem/workshop/dsltools/ – Wikipedia, Domain Specific Language, http://c2.com/cgi/wiki?DomainSpecificLanguage – Wikipedia, Turing Complete, http://c2.com/cgi/wiki?TuringComplete – Paul Klint et al., Domain-Specific Languages: An Annotated Bibliography,
http://homepages.cwi.nl/~arie/papers/dslbib/ – Diomidis Spinellis, Notable Design Patterns for Domain-Specific Languages,
http://www.dmst.aueb.gr/dds/pubs/jrnl/2000-JSS-DSLPatterns/html/dslpat.html– Eric Steven Raymond, Designing Minilanguages in: The Art of Unix Programming, http://www.faqs.org/docs/artu/
• Compilerbau/Codegenerierung– Pat Terry, Comiling with C# and Java, Addison-Wesley 2005 (setzt Coco/R ein)– Kathleen Dollard, Code Generation in Microsoft .NET, apress 2004– Edward G. Nigles, Build Your Own .NET Language and Compiler, apress 2004– Codesmith, http://www.codesmithtools.com/– Coco/R, http://www.ssw.uni-linz.ac.at/Research/Projects/Coco/ – http://www.codegeneration.net/
• VS2003 Integration– Les Smith, Writing Add-ins for Visual Studio .NET, apress 2002
• Quellen für Teile des Vortrags– Joel Semeniuk, Visual Studio Team System – Feature Roundup, Microsoft,
http://download.microsoft.com/documents/uk/partner/events/presentations/downloads/2005-03-08/business1-vsts-feature-roundup.ppt
– José António Silva, DSL Tools in Visual Studio, Microsoft, http://labnet.cc.isel.ipl.pt/docs/Eventos/6-04-2005/20050405%20DSL%20Tools%20VS2005%20joseas%20ISEL.ppt
Microsoft Academic
Program
Student Technology Conference 2005Über den Referenten
• Ralf Westphal (www.ralfw.de) ist freier Softwaretechnologievermittler. Er arbeitet als Fachautor, Coach/Berater, Softwareentwickler und Sprecher auf Entwickler-Events im In- und Ausland wie dem Microsoft Technical Summit, Microsoft DevDays, ADC, BASTA!, COMDEX oder SD West. Der Schwerpunkt seiner Arbeit liegt bei der Vermittlung und Anwendung moderner Softwaretechnologien und -konzepte im Zusammenhang mit dem .NET Framework.
• Darüber hinaus ist Ralf Westphal einer der unabhängigen deutschen Microsoft Regional Directors, Produzent von .NET TV (www.dotnettv.de), Associate der ersten Stunde bei thinktecture (www.thinktecture.com) und zusammen mit Christian Weyer einer der .NET Twins (www.dotnettwins.de).
•Email: [email protected]
www.thinktecture.com
Microsoft Academic
Program
Student Technology Conference 2005
.NET kompakt, Spektrum Akademischer Verlag 2002, ISBN 3827411858
Bücher
ADO.NET Datenbankprogrammierung, Addison-Wesley 2002, ISBN 3827319978
Jetzt lerne ich ADO.NET, Markt+Technik, 2003, ISBN 3827262291(zusammen mit Christian Weyer)
In Fachzeitschriften
Publikationen
www.dotnettv.de tv.dotnetpro.de
Video