12. State-of-the-Art LOP: Languages and Tools · State-of-the-Art LOP: Languages and Tools ......

Preview:

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

Recommended