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

19
Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. www.fbi.h-da.de/~b.humm. 17.12.2015 1 12. State-of-the-Art LOP: Languages and Tools Language-Oriented Programming Prof. Dr. Bernhard Humm Faculty of Computer Science Hochschule Darmstadt – University of Applied Sciences

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

Page 1: 12. State-of-the-Art LOP: Languages and Tools · State-of-the-Art LOP: Languages and Tools ... •What is the difference between Lisp functions and macros? ... •C •CFML •Common

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

Page 2: 12. State-of-the-Art LOP: Languages and Tools · State-of-the-Art LOP: Languages and Tools ... •What is the difference between Lisp functions and macros? ... •C •CFML •Common

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

Page 3: 12. State-of-the-Art LOP: Languages and Tools · State-of-the-Art LOP: Languages and Tools ... •What is the difference between Lisp functions and macros? ... •C •CFML •Common

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

Page 4: 12. State-of-the-Art LOP: Languages and Tools · State-of-the-Art LOP: Languages and Tools ... •What is the difference between Lisp functions and macros? ... •C •CFML •Common

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

Page 5: 12. State-of-the-Art LOP: Languages and Tools · State-of-the-Art LOP: Languages and Tools ... •What is the difference between Lisp functions and macros? ... •C •CFML •Common

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/

Page 6: 12. State-of-the-Art LOP: Languages and Tools · State-of-the-Art LOP: Languages and Tools ... •What is the difference between Lisp functions and macros? ... •C •CFML •Common

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

Page 7: 12. State-of-the-Art LOP: Languages and Tools · State-of-the-Art LOP: Languages and Tools ... •What is the difference between Lisp functions and macros? ... •C •CFML •Common

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/

Page 8: 12. State-of-the-Art LOP: Languages and Tools · State-of-the-Art LOP: Languages and Tools ... •What is the difference between Lisp functions and macros? ... •C •CFML •Common

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

Page 9: 12. State-of-the-Art LOP: Languages and Tools · State-of-the-Art LOP: Languages and Tools ... •What is the difference between Lisp functions and macros? ... •C •CFML •Common

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

Page 10: 12. State-of-the-Art LOP: Languages and Tools · State-of-the-Art LOP: Languages and Tools ... •What is the difference between Lisp functions and macros? ... •C •CFML •Common

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

Page 11: 12. State-of-the-Art LOP: Languages and Tools · State-of-the-Art LOP: Languages and Tools ... •What is the difference between Lisp functions and macros? ... •C •CFML •Common

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/

Page 12: 12. State-of-the-Art LOP: Languages and Tools · State-of-the-Art LOP: Languages and Tools ... •What is the difference between Lisp functions and macros? ... •C •CFML •Common

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

Page 13: 12. State-of-the-Art LOP: Languages and Tools · State-of-the-Art LOP: Languages and Tools ... •What is the difference between Lisp functions and macros? ... •C •CFML •Common

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

Page 14: 12. State-of-the-Art LOP: Languages and Tools · State-of-the-Art LOP: Languages and Tools ... •What is the difference between Lisp functions and macros? ... •C •CFML •Common

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

Page 15: 12. State-of-the-Art LOP: Languages and Tools · State-of-the-Art LOP: Languages and Tools ... •What is the difference between Lisp functions and macros? ... •C •CFML •Common

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

Page 16: 12. State-of-the-Art LOP: Languages and Tools · State-of-the-Art LOP: Languages and Tools ... •What is the difference between Lisp functions and macros? ... •C •CFML •Common

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

Page 17: 12. State-of-the-Art LOP: Languages and Tools · State-of-the-Art LOP: Languages and Tools ... •What is the difference between Lisp functions and macros? ... •C •CFML •Common

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

Page 18: 12. State-of-the-Art LOP: Languages and Tools · State-of-the-Art LOP: Languages and Tools ... •What is the difference between Lisp functions and macros? ... •C •CFML •Common

Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. www.fbi.h-da.de/~b.humm. 17.12.2015

Spoofaxhttp://metaborg.org/spoofax/

18

Page 19: 12. State-of-the-Art LOP: Languages and Tools · State-of-the-Art LOP: Languages and Tools ... •What is the difference between Lisp functions and macros? ... •C •CFML •Common

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