DM820 Advanced T opics in Programming Languages Peter - - PowerPoint PPT Presentation

dm820 advanced t opics in programming languages peter
SMART_READER_LITE
LIVE PREVIEW

DM820 Advanced T opics in Programming Languages Peter - - PowerPoint PPT Presentation

DM820 Advanced T opics in Programming Languages Peter Schneider-Kamp petersk@imada.sdu.dk http://imada.sdu.dk/~petersk/DM820/ MULTI-PARADIGM & CONSTRAINT PROGRAMMING 2 June 2009 Programming Paradigms Actor programming


slide-1
SLIDE 1

DM820 Advanced T

  • pics in

Programming Languages Peter Schneider-Kamp

petersk@imada.sdu.dk

  • http://imada.sdu.dk/~petersk/DM820/
slide-2
SLIDE 2

MULTI-PARADIGM & CONSTRAINT PROGRAMMING

June 2009 2

slide-3
SLIDE 3

Programming Paradigms

§ Actor programming § Concurrent programming § Constraint programming § Dataflow programming § Declarative programming § Distributed programming § Functional programming § Generic programming § Imperative programming § Logic Programming § Metaprogramming § Object-oriented programming § Rule-based programming § Visual programming

June 2009 3

slide-4
SLIDE 4

Multi-Paradigm Languages

§ Many languages use more than one paradigm: § Java: imperative, object-oriented, reflective, generic § Python: imperative, object-oriented, reflective, functional § C#: imperative, object-oriented, functional, reflective, generic § These combinations are quite straightforward § Multi-paradigm languages combine less obviously combinable programming paradigms: § Curry: constraint, functional, logic, concurrent § Oz: imperative, object-oriented, functional, logic, constraint, distributed, concurrent § How to combine functional and logic programming? § How to integrate constraint programming?

June 2009 4

slide-5
SLIDE 5

Declarative Programming

§ Imperative programming: § commands for HOW to achieve a goal § Declarative programming: § Express WHAT exactly should be achieved § Functional programming (lambda calculus) § Logic programming (predicate calculus) § Constraint programming (constraint satisfaction)

June 2009 5

slide-6
SLIDE 6

Constraint Programming

§ Just provide constraints on a solution § Let the computer figure out how to find solutions § Example (constraint logic programming): puzzle([S,E,N,D] + [M,O,R,E] = [M,O,N,E,Y]) :- Vars = [S,E,N,D,M,O,R,Y], Vars ins 0..9, all_different(Vars), S*1000 + E*100 + N*10 + D + M*1000 + O*100 + R*10 + E #= M*10000 + O*1000 + N*100 + E*10 + Y, M #\= 0, S #\= 0, label(Vars).

June 2009 6

slide-7
SLIDE 7

Example: Curry

§ Belongs to the class of constraint functional logic languages § Syntax very close to Haskell § Named after mathematician Haskell B. Curry § Implementation developed in Portland, Aachen, Kiel (PAKCS) § Applications: § Bibliographic database, Wine manager, Recipe database § Music composition § Web-based learning, Web server scripting § Ecological simulation § Course assignment, Study program management § Graph grammar parsers § …

June 2009 7

slide-8
SLIDE 8

Hands-On

§ Functional programming § Logic programming § Mixed functional-logic programming § Send + more = money

June 2009 8