Language-Oriented Programming (WS 15/16)

  

Object-oriented programming, service-oriented computing, aspect-oriented programming - all well-known. But what is this thing called "language-oriented programming"?

A programming paradigm which may be paraphrased as "programming with domain-specific languages (DSLs)". The idea is simple and as old as high-level programming languages: If you have a complex problem to solve choose the language most adequate for the problem and solve it in this language. If such a language does not yet exist then design and implement a suitable language first before solving the problem.

DSLs are most popular nowadays - not only due to OMG's "Model-Driven Architecture (MDA)" initiative. But code generation is just a halfway step towards the right direction.

In this course we want to go much further: using a rules language for developing complex rating logic, using a business process language for implementing workflows, and designing new DSLs where existing languages do not suffice.

As the base programming language we will be using Lisp, a language most suitable for implementing DLSs. But you will also experiment with many different languages and environments.

Also refer to the module description in the module handbook.

Lecture

Lectures and lab sessions will be interwoven. The lecture is structured as follows (current and older lectures for download):

  1. Introduction
  2. Lisp crash course
  3. Language-Oriented Programming - The big picture
  4. Functional programming
  5. Advanced object-oriented programming
  6. Business information systems
  7. Database queries
  8. Logic programming
  9. Business Rules
  10. Workflows
  11. Designing and Implementing DSLs
  12. State-of-the-art LOP tools
  13. Questions and Answers

 

Lectures will be video recorded and can be watched at: https://lernen.h-da.de/course/view.php?id=4295 . Enrolment key:  lopws15-16 . Login with  h-da user name und password.

Laboratory

In the lab sessions, you will gain practical experience in programming in different language styles and DSLs as well as implementing and enhancing DSLs. Throughout the semester, you will be implementing a prototype application in  team using different languages.

Please, bring your own notebook if you own one. You need h_da WLAN access.

Assignments:

  1. Introduction
  2. Lisp crash course
  3. More Lisp exercises
  4. Functional programming
  5. Advanced object-oriented programming
  6. Business information systems
  7. Database queries
  8. Logic programming
  9. Business rules
  10. Workflows
  11. Designing and Implementing DSLs
  12. State-of-the-art LOP 
  13. Questions and Answers

Infrastructure, Material

 

I recommend the following references:

 

Oral examination

There will be oral examinations on Feb 3 and Feb 12, 2016 in D15/305. -> Exame Schedule