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):
- Introduction
- Lisp crash course
- Language-Oriented Programming - The big picture
- Functional programming
- Advanced object-oriented programming
- Business information systems
- Database queries
- Logic programming
- Business Rules
- Workflows
- Designing and Implementing DSLs
- State-of-the-art LOP tools
- 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:
- Introduction
- Lisp crash course
- More Lisp exercises
- Functional programming
- Advanced object-oriented programming
- Business information systems
- Database queries
- Logic programming
- Business rules
- Workflows
- Designing and Implementing DSLs
- State-of-the-art LOP
- Questions and Answers
Infrastructure, Material
- Installation Manual
- Subversion Repository: https://subversion.h-da.de/svn/fbi/lop/
I recommend the following references:
- Peter Seibel: Practical Common Lisp
- Martin Fowler: Language Workbenches: The Killer-App for Domain Specific Languages? martinfowler.com/articles/languageWorkbench.html
Oral examination
There will be oral examinations on Feb 3 and Feb 12, 2016 in D15/305. -> Exame Schedule