<<< Previous speaker Next speaker >>>

Nat Pryce, ThoughtWorks

No picture of  Nat  Pryce

Nat Pryce works at ThoughtWorks as a consultant advising in software development process and practices. Previously he developed systems to cover sporting events on the web, wireless and other digital media. He received a PhD for his research into middleware for multimedia.

He co-authored an OOPSLA experience report on test driven development with mock objects. He is a developer of jMock, nMock and the SceneBeans animation framework, all of which employ the technique of embedding a domain specific language in a traditional programming language.

Presentation: "Embedding Domain-Specific Languages in Java and C#"

Track:   Domain Specific Languages

Time: Wednesday 14:30 - 15:30

Location: SAS Suecia


Paraphrasing Philip Greenspun, every significant program contains an ad-hoc, informally-specified implementation of one or more domain-specific languages. This is familiar in dynamic language communities; as Dick Gabriel says, lispers first write a language then use that language to write the application. However, the idea that programmers are language designers is much less recognised in the static language communities where most of us work.

We believe that a program's domain-specific languages should be made explicit as part of the development process, so that they are visible and can be made easier to use. Often this has to be done within the programming language of the application, rather than as a separate language. The relevant techniques should be part of the arsenal of every mature software professional.

This talk will explore how to design and implement domain-specific languages within conventional languages such as Java and C#. In particular, we are interested in working within the underlying language's features, such as its type system, rather than hosting a different language like Jython or Groovy. As a motivation, we will describe the evolution of the jMock library (http://www.jmock.org), for which we developed an embedded language to express constraints on an object under test and compare it to nMock, an equivalent library in C#.

Password protected Download slides