This is a VUB project for the course declarative programming under supervision of Dr. Geraint Wiggins and Mr. Steven Homer.
Language-Oriented Programming (LOP) is a software development paradigm that sees languages as the fundamental building blocks of software, as opposed to, for instance, objects in object- oriented programming and functions in functional programming. In LOP, the idea is to design a domain specific language (DSL) that describes the problem space well, and then solve the problem using that DSL. Once you start looking, DSLs are everywhere. For instance, HTML and CSS can be thought of as DSLs that describe the structure of a web page and its style, respectively; SQL can be thought of as a DSL to describe database queries; one could argue that even mathematical notation is a sort of DSL. In this project, we will see how a simple DSL can be used to specify the layout of a poster. Don’t worry, the poster markup language is already designed for you!
At a high-level, two things are important when designing a poster. The first is the content of the poster. This includes the title and headers, figures and images, textual content and so on. The other is the layout of these assets on the poster itself. Normally when designing a poster, all of the assets are manually placed by the designer in order to create the layout. This can become very tedious for the designer, endless shifting elements around until they are just right. Instead, we will use a markup language to declaratively specify how the assets should be arranged relative to each other, and let our system generate a good layout that conforms to our specification.