Enviar búsqueda
Cargar
Typ-sichere DSLs
•
Descargar como PPTX, PDF
•
0 recomendaciones
•
770 vistas
Werner Keil
Seguir
Mit Xtext/TS, Xtend, Groovy und anderen Sprachen
Leer menos
Leer más
Tecnología
Denunciar
Compartir
Denunciar
Compartir
1 de 29
Descargar ahora
Recomendados
Regionstrategi för Sydösterbotten
Regionstrategi för Sydösterbotten
Ab Företagshuset Dynamo Yritystalo Oy
Social Media in 15 Minutes at Netsmart Connections 2010
Social Media in 15 Minutes at Netsmart Connections 2010
Webbed Marketing
Introduction wss-3-and-moss-2007-12324
Introduction wss-3-and-moss-2007-12324
Mogili Venkatababu
изумрудный дом
изумрудный дом
dlisyev
Top 10 Internet Trends 2001
Top 10 Internet Trends 2001
Jürg Stuker
JavaFX Real-World Apps
JavaFX Real-World Apps
Alexander Casall
Python in der Luft- und Raumfahrt
Python in der Luft- und Raumfahrt
Andreas Schreiber
Einführung in .NET
Einführung in .NET
Andreas Heil
Recomendados
Regionstrategi för Sydösterbotten
Regionstrategi för Sydösterbotten
Ab Företagshuset Dynamo Yritystalo Oy
Social Media in 15 Minutes at Netsmart Connections 2010
Social Media in 15 Minutes at Netsmart Connections 2010
Webbed Marketing
Introduction wss-3-and-moss-2007-12324
Introduction wss-3-and-moss-2007-12324
Mogili Venkatababu
изумрудный дом
изумрудный дом
dlisyev
Top 10 Internet Trends 2001
Top 10 Internet Trends 2001
Jürg Stuker
JavaFX Real-World Apps
JavaFX Real-World Apps
Alexander Casall
Python in der Luft- und Raumfahrt
Python in der Luft- und Raumfahrt
Andreas Schreiber
Einführung in .NET
Einführung in .NET
Andreas Heil
Entity Framework hinter den Kulissen
Entity Framework hinter den Kulissen
André Krämer
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher Software
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher Software
Andreas Schreiber
Modell der Zusammenarbeit. Migration von Progress 4GL nach C#.NET
Modell der Zusammenarbeit. Migration von Progress 4GL nach C#.NET
Куранкова Татьяна
.NET und jetzt!
.NET und jetzt!
Peter Hecker
PLUX.NET – SOFTWAREKOMPOSITION DURCH PLUG & PLAY
PLUX.NET – SOFTWAREKOMPOSITION DURCH PLUG & PLAY
Förderverein Technische Fakultät
".NET und jetzt!" C# in 21 Tagen oder doch besser Best Practices
".NET und jetzt!" C# in 21 Tagen oder doch besser Best Practices
GFU Cyrus AG
Entity Framework Core - Der Umstieg auf Core
Entity Framework Core - Der Umstieg auf Core
NETUserGroupBern
Cloud Native und Java EE: Freund oder Feind?
Cloud Native und Java EE: Freund oder Feind?
Josef Adersberger
Cloud Native & Java EE: Freund oder Feind?
Cloud Native & Java EE: Freund oder Feind?
QAware GmbH
Java User Group Düsseldorf - Vortrag der iks am 13. März 2008
Java User Group Düsseldorf - Vortrag der iks am 13. März 2008
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
Oracle Text 12c New Features
Oracle Text 12c New Features
Ulrike Schwinn
profil_2017
profil_2017
Volker Karlmeier
Technologieraum übergreifende Programmierung
Technologieraum übergreifende Programmierung
Falk Hartmann
Java und Python - Das Beste aus beiden Welten nutzen
Java und Python - Das Beste aus beiden Welten nutzen
Andreas Schreiber
Python, Plone und Zope in der Luft- und Raumfahrtforschung
Python, Plone und Zope in der Luft- und Raumfahrtforschung
Andreas Schreiber
Event Driven Architecture - OPITZ CONSULTING - Schmutz - Winterberg
Event Driven Architecture - OPITZ CONSULTING - Schmutz - Winterberg
OPITZ CONSULTING Deutschland
LAIK: A Library for Fault Tolerant Distribution of Global Data
LAIK: A Library for Fault Tolerant Distribution of Global Data
Dai Yang
Große Applikationen mit AngularJS
Große Applikationen mit AngularJS
Sebastian Springer
Lightweight AOP with CDI and JPA
Lightweight AOP with CDI and JPA
mh0708
Bitte ein Maß - JSR-363 - Units of Measurement API - IoTDay 2014
Bitte ein Maß - JSR-363 - Units of Measurement API - IoTDay 2014
Werner Keil
Securing eHealth, eGovernment and eBanking with Java - DWX '21
Securing eHealth, eGovernment and eBanking with Java - DWX '21
Werner Keil
OpenDDR and Jakarta MVC - JavaLand 2021
OpenDDR and Jakarta MVC - JavaLand 2021
Werner Keil
Más contenido relacionado
Similar a Typ-sichere DSLs
Entity Framework hinter den Kulissen
Entity Framework hinter den Kulissen
André Krämer
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher Software
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher Software
Andreas Schreiber
Modell der Zusammenarbeit. Migration von Progress 4GL nach C#.NET
Modell der Zusammenarbeit. Migration von Progress 4GL nach C#.NET
Куранкова Татьяна
.NET und jetzt!
.NET und jetzt!
Peter Hecker
PLUX.NET – SOFTWAREKOMPOSITION DURCH PLUG & PLAY
PLUX.NET – SOFTWAREKOMPOSITION DURCH PLUG & PLAY
Förderverein Technische Fakultät
".NET und jetzt!" C# in 21 Tagen oder doch besser Best Practices
".NET und jetzt!" C# in 21 Tagen oder doch besser Best Practices
GFU Cyrus AG
Entity Framework Core - Der Umstieg auf Core
Entity Framework Core - Der Umstieg auf Core
NETUserGroupBern
Cloud Native und Java EE: Freund oder Feind?
Cloud Native und Java EE: Freund oder Feind?
Josef Adersberger
Cloud Native & Java EE: Freund oder Feind?
Cloud Native & Java EE: Freund oder Feind?
QAware GmbH
Java User Group Düsseldorf - Vortrag der iks am 13. März 2008
Java User Group Düsseldorf - Vortrag der iks am 13. März 2008
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
Oracle Text 12c New Features
Oracle Text 12c New Features
Ulrike Schwinn
profil_2017
profil_2017
Volker Karlmeier
Technologieraum übergreifende Programmierung
Technologieraum übergreifende Programmierung
Falk Hartmann
Java und Python - Das Beste aus beiden Welten nutzen
Java und Python - Das Beste aus beiden Welten nutzen
Andreas Schreiber
Python, Plone und Zope in der Luft- und Raumfahrtforschung
Python, Plone und Zope in der Luft- und Raumfahrtforschung
Andreas Schreiber
Event Driven Architecture - OPITZ CONSULTING - Schmutz - Winterberg
Event Driven Architecture - OPITZ CONSULTING - Schmutz - Winterberg
OPITZ CONSULTING Deutschland
LAIK: A Library for Fault Tolerant Distribution of Global Data
LAIK: A Library for Fault Tolerant Distribution of Global Data
Dai Yang
Große Applikationen mit AngularJS
Große Applikationen mit AngularJS
Sebastian Springer
Lightweight AOP with CDI and JPA
Lightweight AOP with CDI and JPA
mh0708
Bitte ein Maß - JSR-363 - Units of Measurement API - IoTDay 2014
Bitte ein Maß - JSR-363 - Units of Measurement API - IoTDay 2014
Werner Keil
Similar a Typ-sichere DSLs
(20)
Entity Framework hinter den Kulissen
Entity Framework hinter den Kulissen
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher Software
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher Software
Modell der Zusammenarbeit. Migration von Progress 4GL nach C#.NET
Modell der Zusammenarbeit. Migration von Progress 4GL nach C#.NET
.NET und jetzt!
.NET und jetzt!
PLUX.NET – SOFTWAREKOMPOSITION DURCH PLUG & PLAY
PLUX.NET – SOFTWAREKOMPOSITION DURCH PLUG & PLAY
".NET und jetzt!" C# in 21 Tagen oder doch besser Best Practices
".NET und jetzt!" C# in 21 Tagen oder doch besser Best Practices
Entity Framework Core - Der Umstieg auf Core
Entity Framework Core - Der Umstieg auf Core
Cloud Native und Java EE: Freund oder Feind?
Cloud Native und Java EE: Freund oder Feind?
Cloud Native & Java EE: Freund oder Feind?
Cloud Native & Java EE: Freund oder Feind?
Java User Group Düsseldorf - Vortrag der iks am 13. März 2008
Java User Group Düsseldorf - Vortrag der iks am 13. März 2008
Oracle Text 12c New Features
Oracle Text 12c New Features
profil_2017
profil_2017
Technologieraum übergreifende Programmierung
Technologieraum übergreifende Programmierung
Java und Python - Das Beste aus beiden Welten nutzen
Java und Python - Das Beste aus beiden Welten nutzen
Python, Plone und Zope in der Luft- und Raumfahrtforschung
Python, Plone und Zope in der Luft- und Raumfahrtforschung
Event Driven Architecture - OPITZ CONSULTING - Schmutz - Winterberg
Event Driven Architecture - OPITZ CONSULTING - Schmutz - Winterberg
LAIK: A Library for Fault Tolerant Distribution of Global Data
LAIK: A Library for Fault Tolerant Distribution of Global Data
Große Applikationen mit AngularJS
Große Applikationen mit AngularJS
Lightweight AOP with CDI and JPA
Lightweight AOP with CDI and JPA
Bitte ein Maß - JSR-363 - Units of Measurement API - IoTDay 2014
Bitte ein Maß - JSR-363 - Units of Measurement API - IoTDay 2014
Más de Werner Keil
Securing eHealth, eGovernment and eBanking with Java - DWX '21
Securing eHealth, eGovernment and eBanking with Java - DWX '21
Werner Keil
OpenDDR and Jakarta MVC - JavaLand 2021
OpenDDR and Jakarta MVC - JavaLand 2021
Werner Keil
How JSR 385 could have Saved the Mars Climate Orbiter - Zurich IoT Day 2021
How JSR 385 could have Saved the Mars Climate Orbiter - Zurich IoT Day 2021
Werner Keil
OpenDDR and Jakarta MVC - Java2Days 2020 Virtual
OpenDDR and Jakarta MVC - Java2Days 2020 Virtual
Werner Keil
NoSQL Endgame - Java2Days 2020 Virtual
NoSQL Endgame - Java2Days 2020 Virtual
Werner Keil
JCON 2020: Mobile Java Web Applications with MVC and OpenDDR
JCON 2020: Mobile Java Web Applications with MVC and OpenDDR
Werner Keil
How JSR 385 could have Saved the Mars Climate Orbiter - JFokus 2020
How JSR 385 could have Saved the Mars Climate Orbiter - JFokus 2020
Werner Keil
Money, Money, Money, can be funny with JSR 354 (Devoxx BE)
Money, Money, Money, can be funny with JSR 354 (Devoxx BE)
Werner Keil
Money, Money, Money, can be funny with JSR 354 (DWX 2019)
Money, Money, Money, can be funny with JSR 354 (DWX 2019)
Werner Keil
NoSQL: The first New Jakarta EE Specification (DWX 2019)
NoSQL: The first New Jakarta EE Specification (DWX 2019)
Werner Keil
How JSR 385 could have Saved the Mars Climate Orbiter - Adopt-a-JSR Day
How JSR 385 could have Saved the Mars Climate Orbiter - Adopt-a-JSR Day
Werner Keil
JNoSQL: The Definitive Solution for Java and NoSQL Databases
JNoSQL: The Definitive Solution for Java and NoSQL Databases
Werner Keil
Eclipse JNoSQL: The Definitive Solution for Java and NoSQL Databases
Eclipse JNoSQL: The Definitive Solution for Java and NoSQL Databases
Werner Keil
Physikal - Using Kotlin for Clean Energy - KUG Munich
Physikal - Using Kotlin for Clean Energy - KUG Munich
Werner Keil
Physikal - JSR 363 and Kotlin for Clean Energy - Java2Days 2017
Physikal - JSR 363 and Kotlin for Clean Energy - Java2Days 2017
Werner Keil
Performance Monitoring for the Cloud - Java2Days 2017
Performance Monitoring for the Cloud - Java2Days 2017
Werner Keil
Eclipse Science F2F 2016 - JSR 363
Eclipse Science F2F 2016 - JSR 363
Werner Keil
Java2Days - Security for JavaEE and the Cloud
Java2Days - Security for JavaEE and the Cloud
Werner Keil
Apache DeviceMap - Web-Dev-BBQ Stuttgart
Apache DeviceMap - Web-Dev-BBQ Stuttgart
Werner Keil
The First IoT JSR: Units of Measurement - JUG Berlin-Brandenburg
The First IoT JSR: Units of Measurement - JUG Berlin-Brandenburg
Werner Keil
Más de Werner Keil
(20)
Securing eHealth, eGovernment and eBanking with Java - DWX '21
Securing eHealth, eGovernment and eBanking with Java - DWX '21
OpenDDR and Jakarta MVC - JavaLand 2021
OpenDDR and Jakarta MVC - JavaLand 2021
How JSR 385 could have Saved the Mars Climate Orbiter - Zurich IoT Day 2021
How JSR 385 could have Saved the Mars Climate Orbiter - Zurich IoT Day 2021
OpenDDR and Jakarta MVC - Java2Days 2020 Virtual
OpenDDR and Jakarta MVC - Java2Days 2020 Virtual
NoSQL Endgame - Java2Days 2020 Virtual
NoSQL Endgame - Java2Days 2020 Virtual
JCON 2020: Mobile Java Web Applications with MVC and OpenDDR
JCON 2020: Mobile Java Web Applications with MVC and OpenDDR
How JSR 385 could have Saved the Mars Climate Orbiter - JFokus 2020
How JSR 385 could have Saved the Mars Climate Orbiter - JFokus 2020
Money, Money, Money, can be funny with JSR 354 (Devoxx BE)
Money, Money, Money, can be funny with JSR 354 (Devoxx BE)
Money, Money, Money, can be funny with JSR 354 (DWX 2019)
Money, Money, Money, can be funny with JSR 354 (DWX 2019)
NoSQL: The first New Jakarta EE Specification (DWX 2019)
NoSQL: The first New Jakarta EE Specification (DWX 2019)
How JSR 385 could have Saved the Mars Climate Orbiter - Adopt-a-JSR Day
How JSR 385 could have Saved the Mars Climate Orbiter - Adopt-a-JSR Day
JNoSQL: The Definitive Solution for Java and NoSQL Databases
JNoSQL: The Definitive Solution for Java and NoSQL Databases
Eclipse JNoSQL: The Definitive Solution for Java and NoSQL Databases
Eclipse JNoSQL: The Definitive Solution for Java and NoSQL Databases
Physikal - Using Kotlin for Clean Energy - KUG Munich
Physikal - Using Kotlin for Clean Energy - KUG Munich
Physikal - JSR 363 and Kotlin for Clean Energy - Java2Days 2017
Physikal - JSR 363 and Kotlin for Clean Energy - Java2Days 2017
Performance Monitoring for the Cloud - Java2Days 2017
Performance Monitoring for the Cloud - Java2Days 2017
Eclipse Science F2F 2016 - JSR 363
Eclipse Science F2F 2016 - JSR 363
Java2Days - Security for JavaEE and the Cloud
Java2Days - Security for JavaEE and the Cloud
Apache DeviceMap - Web-Dev-BBQ Stuttgart
Apache DeviceMap - Web-Dev-BBQ Stuttgart
The First IoT JSR: Units of Measurement - JUG Berlin-Brandenburg
The First IoT JSR: Units of Measurement - JUG Berlin-Brandenburg
Typ-sichere DSLs
1.
Typ-sichere DSLs Mit Xtext/TS,
Xtend, Groovy und anderen Sprachen Werner Keil Eclipse DemoCamp Berlin 20. Juni 2012
2.
Zielsetzung
ARITHMETISCHE ODER DATENTYP FEHLER BEI DSL NUTZUNG VERMEIDEN 2 © 2007-2012 Creative Arts & Technologies
3.
Überblick • Einleitung
• Was ist eine DSL? • Interne und Externe DSLs • Type-Sicherheit • Einheiten im Gesundheitswesen • Unit-API, UOMo • UCUM, HL7, Groovy in der Gesundheitsbranche • Andere Sprachen • Jython/WLST • Xtext/Xbase/Xtend • Scala, Fantom, F# • Demo • Q&A 3 © 2007-2012 Creative Arts & Technologies
4.
Was bin Ich? Werner
Keil • Consultant – Coach • Creative Cosmopolitan • Open Source Evangelist • Software Architect • Java Godfather • UOMo Lead • … Twitter @wernerkeil 4 © 2007-2012 Creative Arts & Technologies
5.
Was ist eine
DSL? • Eine DSL ist eine Computersprache (Spezification, Modellierung, Programmierung,…) angepasst an eine bestimmte Domäne. Doch was ist eine Domäne? (siehe nächste Seite;-) • DSL Beispiele: SQL, CSS, Sawzall (Google) • Gewinn von Aussagekraft und Benutzerfreundlichkeit (kann u.U. Bis zur Entwicklung durch Endbenutzer führen) • Gewinn von Produktivität • Geringerer Wartungsaufwand und -kosten 5 © 2007-2012 Creative Arts & Technologies
6.
Was ist eine
Domäne? Real-Time Business Systems Systems Requirements Specification Aircraft Patient Insurance control Management Management Implementation systems Systems Systems Deployment 6 © 2007-2012 Creative Arts & Technologies
7.
Internal Domain Specific
Languages • Sprachen mit Hilfe syntaktischer Elemente der darunter liegenden Sprache/Umgebung • Im Fall von Java, eine DSL verwendet Java Klassen und Methoden • Bei anderen JVM-basierenden Sprachen ist es in der Regel ähnlich, meist wird Java Code oder Klassen generiert 7 © 2007-2012 Creative Arts & Technologies
8.
External Domain Specific
Languages • Externe DSLs • Geschriebern in einer eigenen Sprache als der darunterliegenden (Host) Sprache der Anwendung • Umgewandelt mit Hilfe eines Compilers, Parsers oder Interpreters • Kann auch enthalten • XML Konfigurationsdateien • Textdateien zur Konfiguration • Eigene Sprachen (Meta-DSLs) 8 © 2007-2012 Creative Arts & Technologies
9.
Typ-Sicherheit • Java hat
keine stark typisierten Primitiven Datentypen (wie etwa Ada). • Zwecks Performance nutzen die meisten Entwickler Primitive Datentypen an Stelle der entsprechenden Objekt-Typen. • Primitive Datentypen in Argumenten führen oft zu Namensverwirrung (Methoden mit ident wirkender Signatur) 9 © 2007-2012 Creative Arts & Technologies
10.
Was haben diese
Vorfälle gemeinsam? • Patriot Missile Ungenaue Berechnung der Zeit, die seit dem Start verging verursachte den Absturz. • Ariane 5 Explosion Floating point Zahl die in einen Wert umgewandelt wurde, der den verfügbaren 16 bit signed integer überstieg. 10 © 2007-2012 Creative Arts & Technologies
11.
Was haben diese
Vorfälle gemeinsam? • Gimli Glider (Beinahe Disaster) Treibstoffmenge falsch berechnet wegen Fehlinterpretation des gerade eingeführten Metrischen Systems in Kanada, statt des Britischen Imperial System of Units • Mars Orbiter Vorläufige Erkenntnisse deuten darauf hin, dass ein Team Englische Einheiten (e.g. inches, feet and pounds) benutzte, während andere Teams Metrische Einheiten zur Steuerung der Raumsonde nutzten. • NASA lost a $125 million Mars orbiter because a Lockheed Martin engineering team used English units of measurement while the agency's team used the more conventional metric system for a key spacecraft operation • A credible source disclosed, there was a manual step with an outsourced person to convert these calculations between the different teams, and NASA budget cuts caused them to fire him and have the wrong, unpatched data transmitted!!! • This also underlines the added risk when 3rd party contractors are involved or projects are developed Offshore 11 © 2007-2012 Creative Arts & Technologies
12.
Unit Tests helfen
hier selten… Dem Namen zum Trotz • Alle Beispiele illustrieren 3 Kategorien von Fehlern, die man mit Unit Tests nur schwer aufspüren kann: • Schnittstellen-Fehler (z.B. millisecond/second, radian/degree, meters/feet). • Arithmetische Fehler (z.B. overflow). • Konvertierungsfehler. 17 © 2007-2012 Creative Arts & Technologies
13.
SQL Beispiel mit
Fehlern StringBuilder sql = new StringBuilder(); sql.append("SELECT o.sum,(SELECT first_name,last_name"); sql.append(" FROM person p"); sql.append(" WHERE o.person_id=p.id) AS client"); sql.append(" FROM order o"); sql.append("WHERE o.id = "+orderId); sql.append(" AND o.status_code IN (?,?)"); PreparedStatement stmt = conn.prepareStatement(sql.toString()); stmt.setString(1, "PAID"); //... 19 © 2007-2012 Creative Arts & Technologies
14.
Typ-sicheres SQL Beispiel
Person p = new Person(); List<Tuple<String, Integer, Date>> rows = new QueryBuilder(datasource) .from(p) .where(gt(p.height, 170)) .select(p.name, p.height, p.birthday) .list(); for (Tuple<String, Integer, Date> row : rows) { String name = row.v1; Integer height = row.v2; Date birthday = row.v3; System.out.println( name + " " + height + " " + birthday); } 20 © 2007-2012 Creative Arts & Technologies
15.
Unit-API | Operationen
Ergebnis mit Gleicher Dimension Anderer Dimension Binäre Operationen Binäre Operationen add(double) od. (long) root(int) multiply(double) od. (long) power(int) divide(double) od. (long) multiply(Unit) compound(Unit) divide(Unit) Unäre Operationen inverse()
16.
UOMo UCUM
Unified Code for Units of Measure Unified Code for Units of Measure ist inspiriert und stark beeinflusst von • ISO 2955-1983 • ANSI X3.50-1986 • HL7's Erweiterungen namens ISO+ 25 © 2007-2012 Creative Arts & Technologies
17.
HL7 DSL
def mySegment = ... // assignment to another NK1 segment instance def group = message.PATIENT_RESULT(0).PATIENT group.NK1(0) = 'abc' // syntax error! msg1.NK1(0) = mySegment // syntax error! msg1.NK1(0).from(mySegment) // works! def nk1 = message.PATIENT_RESULT(0).PATIENT.NK1(0) def otherNk1 = message.PATIENT_RESULT(0).PATIENT.NK1(0) nk1[4] = otherNk1[4] // copy address nk1[4][4] = otherNk1[4][4] // copy state or province only nk1[4][4].from(otherNk1[4][4])// equivalent nk1[4][4] = 'NY' // set state or province directly 26 © 2007-2012 Creative Arts & Technologies
18.
Healthcare DSL mit
Groovy DEMO
19.
Jython
/** * Java calculator class that contains two simple methods */ public class Calculator { public Calculator(){ } public double calculateTip(double cost, double tipPercentage) { return cost * tipPercentage; } public double calculateTax(double cost, double taxPercentage) { return cost * taxPercentage; } } 28 © 2007-2012 Creative Arts & Technologies
20.
Jython (2)
import Calculator from java.lang import Math class JythonCalc(Calculator): def __init__(self): pass def calculateTotal(self, cost, tip, tax): return cost + self.calculateTip(tip) + self.calculateTax(tax) if __name__ == "__main__": calc = JythonCalc() cost = 23.75 tip = .15 tax = .07 print "Starting Cost: ", cost print "Tip Percentage: ", tip print "Tax Percentage: ", tax print Math.round(calc.calculateTotal(cost, tip, tax)) 29 © 2007-2012 Creative Arts & Technologies
21.
Jython (3)
Result Starting Cost: 23.75 Tip Percentage: 0.15 Tax Percentage: 0.07 29 30 © 2007-2012 Creative Arts & Technologies
22.
Xtext Examples
DEMO
23.
Scala, Fantom, F# •
Scala • Functional programming language. Type-safe, as the company driving it was called. • Very popular for DSLs • Fantom • Functional programming language • Units of Measurement support built in. • Runs on both JVM and CLR • F# • Functional programming language • Units of Measurement support built in. 33 © 2007-2012 Creative Arts & Technologies
24.
Scala und Fantom
Beispiele DEMO
25.
Links
Eclipse – Project UOMo http://www.eclipse.org/uomo/ Units of Measurement API http://www.unitsofmeasurement.org UCUM http://www.unitsofmeasure.org
26.
Links (2)
OpenHealth Project http://www.openhealth.org Groovy DSL Example http://groovy.dzone.com/news/domain- specific-language-unit- Jython http://www.jython.org
27.
Links (3)
Xtext http://www.eclipse.org/xtext Scala DSLs http://www.scala-lang.org/node/1403 Fantom http://fantom.org/
28.
Fragen Q&A
29.
Kontakt
werner@catmedia.us oder uomo@catmedia.us Twitter: @wernerkeil Hashtag #EclipseUOMo
Descargar ahora