Upload
vobao
View
246
Download
0
Embed Size (px)
Citation preview
Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. www.fbi.h-da.de/~b.humm. 17.12.20151
12. State-of-the-Art LOP:Languages and ToolsLanguage-Oriented Programming
Prof. Dr. Bernhard HummFaculty of Computer ScienceHochschule Darmstadt – University of Applied Sciences
Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. www.fbi.h-da.de/~b.humm. 17.12.2015
RetrospectiveImplementing a DSL - Macros
•How are macros defined in Lisp?
•When are Lisp macros expanded?
•What is the difference between Lisp functions and macros?
•What is the recommended process for implementing macros?
•How does Backquote work in Lisp?
•How to use macroexpand and macroexpand-1? What is the
difference?
•What is the law of leaky abstractions according to J. Spolsky?
•Give examples of leaking abstractions in Lisp macros
2
Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. www.fbi.h-da.de/~b.humm. 17.12.20153
This lecture in the context of the entire course
1. Introduction
2. Lisp Crash Course
3. Functional programming
4. Advanced object-oriented programming
5. Business information systems
6. Database queries
7. Logic programming
8. Logic Programming Application
9. Workflows
10. Implementing a DSL: Macros
11. State-of-the-art LOP
Agenda
• Functional programming
• Logic Programming
• Workflows
• Extensible Languages
• Multi-Language Platforms
• Language Workbenches
Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. www.fbi.h-da.de/~b.humm. Summer semester 20124
Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. www.fbi.h-da.de/~b.humm. 17.12.2015
Functional programming languages
5
Programming Language URL
APL http://aplwiki.com/
Erlang http://www.erlang.org/
F# http://fsharp.org/
Haskell https://www.haskell.org/
Lisp, Scheme, Clojure http://clojure.org/
Mathematica (Wolfram language) https://www.wolfram.com/language/
ML, OCaml https://ocaml.org/
Python https://www.python.org/
R https://www.r-project.org/
Scala http://www.scala-lang.org/
Agenda
• Functional programming
• Logic Programming
• Workflows
• Extensible Languages
• Multi-Language Platforms
• Language Workbenches
Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. www.fbi.h-da.de/~b.humm. Summer semester 20126
Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. www.fbi.h-da.de/~b.humm. 17.12.2015
Logic Programming Languages andEnvironments
7
Rules Language / Environment URL
Drools Expert http://www.drools.org/
FICO Blaze Advisor Decision Rules Management System
http://www.fico.com/en/products/fico-blaze-advisor-decision-rules-management-system
IBM WebSphere ILOG JRules
https://www-01.ibm.com/software/integration/business-rule-management/jrules-family/
Java Rules Engine API (JSR-94) https://jcp.org/en/jsr/detail?id=94
OpenRules http://www.openrules.com/index.htm
Oracle Business Rules
http://www.oracle.com/technetwork/middleware/business-rules/overview/index.html
Prolog https://en.wikipedia.org/wiki/Prolog
XSLT http://www.w3.org/TR/xslt-30/
Agenda
• Functional programming
• Logic Programming
• Workflows
• Extensible Languages
• Multi-Language Platforms
• Language Workbenches
Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. www.fbi.h-da.de/~b.humm. Summer semester 20128
Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. www.fbi.h-da.de/~b.humm. 17.12.2015
Workflow Languages and Environments
9
Rules Language / Environment URL
Activiti http://www.activiti.org/
Apache ODE http://ode.apache.org/
BPEL https://en.wikipedia.org/wiki/Business_Process_Execution_Language
BPMN http://www.omg.org/spec/BPMN/
CEITON http://www.ceiton.com/CMS/DE/company/home.html
IBM Business Process Manager http://www-01.ibm.com/software/integration/wps/
Imixs-Workflow http://www.imixs.org/
jBPM http://www.jbpm.org/
KiSSFLOW https://kissflow.com/
Microsoft Windows Workflow Foundation https://msdn.microsoft.com/en-us/library/dd489441.aspx
Pyrus https://pyrus.com/en/
SAP Business Workflow http://help.sap.de/saphelp_46c/helpdata/de/a1/172437130e0d09e10000009b38f839/frameset.htm
Agenda
• Functional programming
• Logic Programming
• Workflows
• Extensible Languages
• Multi-Language Platforms
• Language Workbenches
Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. www.fbi.h-da.de/~b.humm. Summer semester 201210
Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. www.fbi.h-da.de/~b.humm. 17.12.2015
Extensible Languages
11
Programming Language URL
Groovy http://groovy-lang.org/
Nemerle http://nemerle.org/
Lisp, Scheme https://en.wikipedia.org/wiki/Lisp_(programming_language)
Scala http://www.scala-lang.org/
Forth https://en.wikipedia.org/wiki/Forth_(programming_language)
Ruby https://www.ruby-lang.org
XL http://xlr.sourceforge.net/
Agenda
• Functional programming
• Logic Programming
• Workflows
• Extensible Languages
• Multi-Language Platforms
• Language Workbenches
Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. www.fbi.h-da.de/~b.humm. Summer semester 201212
Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. www.fbi.h-da.de/~b.humm. 17.12.2015
Java Virtual MachineJVM Languages
• Ada
• Basic
• BBx
• C
• CFML
• Common Lisp
• Java
• JavaScript
• Oberon
•PascalPerl 6
•PHP
•Prolog
•Python
•REXX
•Ruby
•Scheme
•Tcl
13
Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. www.fbi.h-da.de/~b.humm. 17.12.2015
Microsoft‘s .NET Framework CLI Languages
• A#: Ada.
• C#: similar to Java
• C++/CLI: A version of C++
• ClojureCLR: Clojure
• NetCOBOL: COBOL
• Component Pascal: Oberon
• Eiffel: Purely OO
• F#: functional
• GrGen.NET:graph rewriting
• IronPython: Python
• IronRuby: Ruby
• IronScheme: Scheme Lisp
• J#: Java
• JScript .NET: ECMAScript
• L#, Lisp#: Lisp
• Niecza: Perl 6.
• P#: Prolog
• Phalanger: PHP
• Visual Basic .NET: Basic
14
Agenda
• Functional programming
• Logic Programming
• Workflows
• Extensible Languages
• Multi-Language Platforms
• Language Workbenches
Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. www.fbi.h-da.de/~b.humm. Summer semester 201215
Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. www.fbi.h-da.de/~b.humm. 17.12.2015
Xtexthttp://www.eclipse.org/Xtext/
16
Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. www.fbi.h-da.de/~b.humm. 17.12.2015
JetBrains MPS (Meta Programming System) https://www.jetbrains.com/mps/
17
Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. www.fbi.h-da.de/~b.humm. 17.12.2015
Spoofaxhttp://metaborg.org/spoofax/
18
Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. www.fbi.h-da.de/~b.humm. 17.12.2015
MetaCase MetaEdit+http://www.metacase.com/products.html
19