Tag: dsls

Episode 171: Scala Update with Martin Odersky

Filed in Episodes by on February 2, 2011 7 Comments
Episode 171: Scala Update with Martin Odersky

This episode is an update on the developments around the Scala language.

Continue Reading »

Episode 152: MISRA with Johan Bezem

Filed in Episodes by on December 28, 2009 2 Comments
Episode 152: MISRA with Johan Bezem

Our guest Johan Bezem explains the idea behind and the benefits of MISRA. MISRA defines guidelines for C and C++ programming in order to ensure quality. While it got started for embedded automotive development, it is more generally applicable.

Continue Reading »

Episode 96: Interview Krzysztof Czarnecki

Filed in Episodes by on May 8, 2008 2 Comments
Episode 96: Interview Krzysztof Czarnecki

This episode is the long-awaited (and much requested) interview with Krzysztof Czarnecki, the author, together with Ulrich Eisenecker, of the book Generative Programming.

In the interview we discussed the state of generative programming today and related it to model-driven development and DSLs. We then talked a little bit about product lines in general. We then discussed his current field of research, which currently focusses on framework-specific modeling languages and non-trivial roundtrip engineering.

Continue Reading »

Episode 57: Compile-Time Metaprogramming

Filed in Episodes by on May 27, 2007 0 Comments
Episode 57: Compile-Time Metaprogramming

This episode is about compile-time metaprogramming, and specifically, about implementing DSLs via compile-time metaprogramming. Our guest, Laurence Tratt, illustrates the idea with his (research) programming language called Converge.

We started by talking about the importance of a custom syntax for DSL and took a brief look at the definition of DSLs by a chap called Paul Hudak. We then briefly covered the disctinction between internal and external DSLs.

More to the point of this episode, we discussed the concept of compile-time metaprogramming, and the language features necessary to achieve it: in converge, these concepts are called splice, quasi-quote and insertion. We then looked at how the Converge compiler works, and at the additional features that are required to implement DSLs based on the metaprogramming features mentioned above. Using an example, we then walked through how to implement a simple DSL.

Looking at some of the more technical details, we discussed the difference between the parse tree and the abstract syntax tree and at different kinds of parsers – specifically, the Earley parser used by Converge. In multi-stage languages (i.e. languages that execute programs and meta programs) error reporting is important, but non trivial. We discussed how this is done in Converge. We finally looked at how to integrate Converge’s expression language into your DSL and how to package DSL definition for later use.

The last segment look at the process of implementing a DSL in converge and about some of the history and practical experience with Converge. Lessons learned from building Converge wrap up the episode.

Continue Reading »

Episode 52: DSL Development in Ruby

Filed in Episodes by on April 7, 2007 0 Comments
Episode 52: DSL Development in Ruby

In this episode, we’re talking to Obie Fernandez about agile DSL development in Ruby. We started our discussion by defining what a DSL is, the difference between internal and external DSLs as well as the importance of the flexibly syntax of the host language in order to make DSLs worthwhile. We then looked at a couple of real world examples for DSLs, specifically, at Business Natural Languages. We then progressed to the main part of the discussions, which centered around the features of Ruby that are important for building DSLs. These include the flexible handling of parentheses, symbols, blocks as well as literal arrays and hashes. We then discussed Ruby’s meta programming feautures and how they are important for building DSLs: instantiation, method_missing callback, class macros, top level
functions and sandboxing. Features like eval, class_eval, instance_eval and define_method are also important for DSLs in
Ruby, as well as using alias_method for simple AOP.

Continue Reading »