language-oriented programming am beispiel lispsarstedt... · language oriented programming (lop)...

37
1 Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. 2009 am Beispiel Lisp Language-Oriented Programming Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik und Capgemini sd&m Research Arbeitskreis Objekttechnologie Norddeutschland HAW Hamburg, 6.7.2009

Upload: others

Post on 31-May-2020

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Language-Oriented Programming am Beispiel Lispsarstedt... · Language oriented programming (LOP) allows specifiying a solution to a problem on the appropriate level of abstraction

1 Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. 2009

am Beispiel Lisp

Language-Oriented

Programming

Prof. Dr. Bernhard Humm

Hochschule Darmstadt, FB Informatik

und Capgemini sd&m Research

Arbeitskreis Objekttechnologie Norddeutschland

HAW Hamburg, 6.7.2009

Page 2: Language-Oriented Programming am Beispiel Lispsarstedt... · Language oriented programming (LOP) allows specifiying a solution to a problem on the appropriate level of abstraction

2 Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. 2009

Agenda

� Introduction & Example

� A few words on Lisp

� DSLs for business information systems

� The big picture

� Agile development

� Conclusion

Page 3: Language-Oriented Programming am Beispiel Lispsarstedt... · Language oriented programming (LOP) allows specifiying a solution to a problem on the appropriate level of abstraction

3 Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. 2009

My Background

� Diplom-Informatiker, Universität Kaiserslautern:

– Lisp as first programming language

– Focus on artificial intelligence (AI): thesis on machinelearning

� Ph.D. Computer Science, University of Wollongong, Australia:

– Thesis on transactions in distributed object-orientedsystems

� 11 years with sd&m:

– Development of large-scale business informationsystems

– Developer, chief architect, project manager, departmentmanager, head of sd&m Research

� Hochschule Darmstadt – University of Applied Sciences

– Professor for software engineering and projectmanagement

– Focus on software architecture

Page 4: Language-Oriented Programming am Beispiel Lispsarstedt... · Language oriented programming (LOP) allows specifiying a solution to a problem on the appropriate level of abstraction

4 Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. 2009

Language-Oriented Programming

� DSL = Domain-Specific Language

Instead of simply writing your application in the

base language, you build on top of the base

language a language for writing programs like

yours, then write your program in it.

Paul Graham, Hackers & Painters, 2004

Page 5: Language-Oriented Programming am Beispiel Lispsarstedt... · Language oriented programming (LOP) allows specifiying a solution to a problem on the appropriate level of abstraction

5 Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. 2009

IDE:

Allegro Common Lisp

Express Edition

Franz Inc.

Page 6: Language-Oriented Programming am Beispiel Lispsarstedt... · Language oriented programming (LOP) allows specifiying a solution to a problem on the appropriate level of abstraction

6 Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. 2009

Page 7: Language-Oriented Programming am Beispiel Lispsarstedt... · Language oriented programming (LOP) allows specifiying a solution to a problem on the appropriate level of abstraction

7 Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. 2009

Page 8: Language-Oriented Programming am Beispiel Lispsarstedt... · Language oriented programming (LOP) allows specifiying a solution to a problem on the appropriate level of abstraction

8 Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. 2009

Agenda

� Introduction & Example

� A few words on Lisp

� DSLs for business information systems

� The big picture

� Agile development

� Conclusion

Page 9: Language-Oriented Programming am Beispiel Lispsarstedt... · Language oriented programming (LOP) allows specifiying a solution to a problem on the appropriate level of abstraction

9 Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. 2009

Lisp = List Processing

� List: the basic Lisp data structure

– (1 2 3)

– (“This is a list” “ of strings”)

– ((:key1 . value1) (:key2 . value2))

– (:key1 value1 :key2 value2)

– (((3) 2 (4)) 1 (() 5 (6)))

� Lisp Programs are data:

– (factorial 5)

– (+ 2 3 4)

– (if condition (then-operation) (else-operation))

– (defun identity (x) x)

– (defclass Customer (name address))

� Lisp Programs are represented by their syntax trees � convenient transformation of Lisp programs via macro processor

:key1 � value1:key2 � value2

1

2

3 4

5

6

Association list

Property list

Binary Tree

Function call: prefix notation

Control structures

Function definition

Class definition

Page 10: Language-Oriented Programming am Beispiel Lispsarstedt... · Language oriented programming (LOP) allows specifiying a solution to a problem on the appropriate level of abstraction

10 Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. 2009

IDE:

Allegro Common Lisp

Express Edition

Franz Inc.

Configuration data

Program code

Interactive console (REPL)

Page 11: Language-Oriented Programming am Beispiel Lispsarstedt... · Language oriented programming (LOP) allows specifiying a solution to a problem on the appropriate level of abstraction

11 Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. 2009

Agenda

� Introduction & Example

� A few words on Lisp

� DSLs for business information systems

– A query language

– A rules language

– A workflow language

� The big picture

� Agile development

� Conclusion

Page 12: Language-Oriented Programming am Beispiel Lispsarstedt... · Language oriented programming (LOP) allows specifiying a solution to a problem on the appropriate level of abstraction

12 Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. 2009

Excursus: The Quasar reference architecture for business information systems

class Quasar Architecture

«Abstract T Compo...

Client Management

«A Component»

Dialog

«A Component»

Application

Component

«Abstract T Compo...

Application Kernel

Facade

«Abstract T Compo...

Authorization

«Abstract T Compo...

Transaction

«Abstract T Compo...

Persistence

«Abstract T Compo...

Workflow

Management

«A Component»

Workflow

«A Component»

Batch

«Abstract T Compo...

Batch Management

pkg Application Components

A-Component 3

UseCase 3.1 UseCase 3.2

A-Controller

3.1

A-Controller

3.2

A-Controller

3.3

A-Entity 3.1 A-Entity 3.2 A-Entity 3.3

Services (Use Cases)

Entity Managers (DAOs, Controllers)

Entities

Application data types

Workflows

Dialogs

Queries

Page 13: Language-Oriented Programming am Beispiel Lispsarstedt... · Language oriented programming (LOP) allows specifiying a solution to a problem on the appropriate level of abstraction

13 Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. 2009

Example:A simple DSL for application data types

Page 14: Language-Oriented Programming am Beispiel Lispsarstedt... · Language oriented programming (LOP) allows specifiying a solution to a problem on the appropriate level of abstraction

14 Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. 2009

Example:A simple DSL for entity types

Page 15: Language-Oriented Programming am Beispiel Lispsarstedt... · Language oriented programming (LOP) allows specifiying a solution to a problem on the appropriate level of abstraction

15 Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. 2009

Criteria for a good DSL

� A DSL consists of:

– Syntax – needs an editor to program in

– Semantics – needs a compiler and a runtime environment to execute

� Good Syntax is:

– Concise

– Easy and intuitively to understand

� Semantics should be:

– Expressive / powerful

– Efficient implementation

� Example DSLs:

– Query language

– Rules language

– Workflow language

Page 16: Language-Oriented Programming am Beispiel Lispsarstedt... · Language oriented programming (LOP) allows specifiying a solution to a problem on the appropriate level of abstraction

16 Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. 2009

Agenda

� Introduction & Example

� A few words on Lisp

� DSLs for business information systems

– A query language

– A rules language

– A workflow language

� The big picture

� Agile development

� Conclusion

Page 17: Language-Oriented Programming am Beispiel Lispsarstedt... · Language oriented programming (LOP) allows specifiying a solution to a problem on the appropriate level of abstraction

17 Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. 2009

A general object database query language

Local variable Persistent classAuxiliary variable – not

needed in result set

Conjunctive clauses

Any form of Lisp expression allowed. Here: object navigation

Page 18: Language-Oriented Programming am Beispiel Lispsarstedt... · Language oriented programming (LOP) allows specifiying a solution to a problem on the appropriate level of abstraction

18 Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. 2009

Agenda

� Introduction & Example

� A few words on Lisp

� DSLs for business information systems

– A query language

– A rules language

– A workflow language

� The big picture

� Agile development

� Conclusion

Page 19: Language-Oriented Programming am Beispiel Lispsarstedt... · Language oriented programming (LOP) allows specifiying a solution to a problem on the appropriate level of abstraction

19 Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. 2009

Excursus on semantic web technology:RDF(S) – Resource Description Framework (Schema)

Huber 65.000has-income

Huber Personrdf:type

Person rdfs:classrdf:type

has-income rdf:Propertyrdf:type

has-income Personrdfs:domain

has-income xs:integerrdfs:range

Subject Predicate ObjectStatement

Page 20: Language-Oriented Programming am Beispiel Lispsarstedt... · Language oriented programming (LOP) allows specifiying a solution to a problem on the appropriate level of abstraction

20 Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. 2009

XML syntax for RDF(S):no appropriate langauge for representating knowledge

Meaning:

Course CIT2112 is taught byteachers 949111, 9493252, and

949318

Source: Antoniou, van Harmelen:„A Semantic Web Primer“

Page 21: Language-Oriented Programming am Beispiel Lispsarstedt... · Language oriented programming (LOP) allows specifiying a solution to a problem on the appropriate level of abstraction

21 Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. 2009

Simplify URI syntax

<http://www.fbi.h-da.de/insurance#Franz><http://www.fbi.h-da.de/insurance#has-disease> <http://www.fbi.h-da.de/insurance#Heart-Stroke>

(add-triple !ins:Franz !ins:has-disease !ins:Heart-Stroke)

Page 22: Language-Oriented Programming am Beispiel Lispsarstedt... · Language oriented programming (LOP) allows specifiying a solution to a problem on the appropriate level of abstraction

22 Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. 2009

Provide means for declaring classes and instances

(ADD-TRIPLE !ins:Person !rdf:type !rdfs:class)(ADD-TRIPLE !ins:Person !rdfs:comment (LITERAL "Natural Person")) NIL

(ADD-TRIPLE !ins:Person !rdfs:seeAlso !ins:Profession))

(ADD-TRIPLE !ins:Huber !rdf:type !ins:Person)

(add-class !ins:Person :comment "Natural Person" :see-also !ins:Profession)

(add-instance !ins:Huber !ins:Person)

Page 23: Language-Oriented Programming am Beispiel Lispsarstedt... · Language oriented programming (LOP) allows specifiying a solution to a problem on the appropriate level of abstraction

23 Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. 2009

Provide means for declaring properties

(ADD-TRIPLE !ins:has-desease !rdf:type !rdf:Property)(ADD-TRIPLE !ins:has-desease !rdfs:domain !ins:Person)(ADD-TRIPLE !ins:has-desease !rdfs:range !ins:Disease)

(add-triple !ins:Franz !ins:has-disease !ins:Heart-Stroke)

(add-property !ins:Person !ins:has-desease !ins:Disease)

(add-triple !ins:Franz !ins:has-disease !ins:Heart-Stroke)

Page 24: Language-Oriented Programming am Beispiel Lispsarstedt... · Language oriented programming (LOP) allows specifiying a solution to a problem on the appropriate level of abstraction

24 Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. 2009

A rules language oriented on Prolog

Facts

Rules:Head <- goal1 … goaln

Interactive Query

Unification of variables and terms

Variables

Page 25: Language-Oriented Programming am Beispiel Lispsarstedt... · Language oriented programming (LOP) allows specifiying a solution to a problem on the appropriate level of abstraction

25 Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. 2009

Agenda

� Introduction & Example

� A few words on Lisp

� DSLs for business information systems

– A query language

– A rules language

– A workflow language

� The big picture

� Agile development

� Conclusion

Page 26: Language-Oriented Programming am Beispiel Lispsarstedt... · Language oriented programming (LOP) allows specifiying a solution to a problem on the appropriate level of abstraction

26 Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. 2009

A Workflow Language

Contract signingPolicy preparation

RatingCustomer Identification

Receive

Customer

Request

XOR

Create

Customer

Account

Rate

CustomerXOR

no

yes

Check

whether

Account exists

XOR

Manually rate

customerRate-manually XOR

Prepare policy

Inform

customer on

rejection

reject

accept

reject

XOR reject

XOR

accept

accept

Send polic to

customer

Receive

signed

policy

Binding period

passed

XOR

Finalize Policy

No Policy

Policy signed

Policy not signed

Page 27: Language-Oriented Programming am Beispiel Lispsarstedt... · Language oriented programming (LOP) allows specifiying a solution to a problem on the appropriate level of abstraction

27 Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. 2009

Synchronous invocation of service

Named workflow

Manual activities can be accessedvia worklist dialogs

Voucher mechanism: waits untilvalue has been set

Worflows are services that can beinvoked

Asynchronous invocation of service

Page 28: Language-Oriented Programming am Beispiel Lispsarstedt... · Language oriented programming (LOP) allows specifiying a solution to a problem on the appropriate level of abstraction

28 Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. 2009

Waiting for external events

Waiting for timing conditions

Page 29: Language-Oriented Programming am Beispiel Lispsarstedt... · Language oriented programming (LOP) allows specifiying a solution to a problem on the appropriate level of abstraction

29 Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. 2009

Agenda

� Introduction & Example

� A few words on Lisp

� DSLs for business information systems

� The big picture

� Agile development

� Conclusion

Page 30: Language-Oriented Programming am Beispiel Lispsarstedt... · Language oriented programming (LOP) allows specifiying a solution to a problem on the appropriate level of abstraction

30 Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. 2009

Domain-specific languages (DSL) or different general-purpose languages (GPL) may be derived from a base language (BL)

Base Language (BL)e.g., Common Lisp

S-Expressions

Test DSLe.g., LispUnit

Configuration DSLe.g., Scribble, XML

BIS DSL FamilyE.g., Quasar

Project-specific DLSe.g., GUI style guide

BIS = Business Information Systems.

Reference architecture includes dialogs,

components, services, entity managers,

entities, data types

Object-oriented GPLe.g., CLOS + extensions

Functional GPLe.g., Scheme

Query DSL

Business Process DSL

Rules DSLe.g., Prolog

Language

Based on

Legend:

Page 31: Language-Oriented Programming am Beispiel Lispsarstedt... · Language oriented programming (LOP) allows specifiying a solution to a problem on the appropriate level of abstraction

31 Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. 2009

Language design and application design are relevant for application development

M0: Instance

M1: Model

M2: Meta-Model

M3: Meta-Meta-Model

Objects(Runtime)

Applications(Design & Implementation)

Languages(GPL, DSL)

(Language-Design)

Base-Language

Entity Customer

Insurance.entity.lisp

Entity.lang.lisp

Common Lisp S-Expressions

(Customer

:id 42 :name “Smith“

)

(define-entity Customer

(id name address)

)

(defmacro define-entity

(name attributes) …

)

S-Expr ::= Atom | (S-Expr*)

Atom ::= …

Level Content Example

Rele

vant fo

rapplic

ation

develo

pm

ent

Page 32: Language-Oriented Programming am Beispiel Lispsarstedt... · Language oriented programming (LOP) allows specifiying a solution to a problem on the appropriate level of abstraction

32 Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. 2009

The language stack describes the configuration of language versions (GPL, DSL) based on each other

Base Language

GP OO Language

BIS Entity Language

Project-specificextension

Common Lisp S-ExpressionsVersion x.y.z

CLOS + extensionsVersion x.y.z

Quasar EntityVersion x.y.z

Insurance EntityVersion x.y.z

Language C

onfig

ura

tion

Page 33: Language-Oriented Programming am Beispiel Lispsarstedt... · Language oriented programming (LOP) allows specifiying a solution to a problem on the appropriate level of abstraction

33 Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. 2009

Agenda

� Introduction & Example

� A few words on Lisp

� DSLs for business information systems

� The big picture

� Agile development

� Conclusion

Page 34: Language-Oriented Programming am Beispiel Lispsarstedt... · Language oriented programming (LOP) allows specifiying a solution to a problem on the appropriate level of abstraction

34 Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. 2009

Incremental language design allows scaling the language to the problem domain.Incremental application development allows stepwise increase of quality

…Query LanguageBusiness Process

Language

Horizontal scalabiliy via languages (GPL, DSL):Incremental language design

Ad-hoc

Production-ready

Integratable

PrototypicalV

ert

icalscala

bili

yvia

qualit

yle

vels

:In

cre

menta

lapplic

ation

develo

pm

ent.

Confo

rmance

checks

ensure

qualit

yle

vels

Page 35: Language-Oriented Programming am Beispiel Lispsarstedt... · Language oriented programming (LOP) allows specifiying a solution to a problem on the appropriate level of abstraction

35 Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. 2009

Example for vertical scalability: Successively adding typing, documentation, error handling, pre- / post-conditions etc.

Vert

icalscala

bili

yvia

qualit

yle

vels

Confo

rmance

checks

for

typin

g, docum

enta

tion

etc

.

Ad-hoc:� Untyped

� Undocumented� No error handling� No implementation

Parameter typing

Full documentation

Pre- and Postconditions

Error specification

Page 36: Language-Oriented Programming am Beispiel Lispsarstedt... · Language oriented programming (LOP) allows specifiying a solution to a problem on the appropriate level of abstraction

36 Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. 2009

Agenda

� Introduction & Example

� A few words on Lisp

� DSLs for business information systems

� The big picture

� Agile development

� Conclusion

Page 37: Language-Oriented Programming am Beispiel Lispsarstedt... · Language oriented programming (LOP) allows specifiying a solution to a problem on the appropriate level of abstraction

37 Prof. Dr. Bernhard Humm, Darmstadt University of Applied Sciences. 2009

Conclusion and discussion

� Language oriented programming (LOP)

allows specifiying a solution to a problem

on the appropriate level of abstraction

� Lisp is well suited for LOP

� Programming of a high level of abstraction

is useful

� Defining languages is hard

� Language versioning is a problem

� Lisp is not widely adopted in industry

� Every complex abstration is leaky

(Spolsky)

BUT

BUT

BUT

What is your opinion?