Episode 57: Compile-Time Metaprogramming with Laurence Tratt

Episode 57: Compile-Time Metaprogramming with Laurence Tratt

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.

Det här avsnittet är hämtat från ett öppet RSS-flöde och publiceras inte av Podme. Det kan innehålla reklam.

Avsnitt(726)

Episode 165: NoSQL and MongoDB with Dwight Merriman

Episode 165: NoSQL and MongoDB with Dwight Merriman

Dwight Merriman talks with Robert about the emerging NoSQL movement, the three types of non-relational data stores, Brewer's CAP theorem, the weaker consistency guarantees that can be made in a distri...

16 Juli 201058min

Episode 164: Agile Testing with Lisa Crispin

Episode 164: Agile Testing with Lisa Crispin

This episode covers the topic of agile testing. Michael interviews Lisa Crispin as an practionier and book author on agile testing. We cover several topics ranging from the role of the tester in agile...

16 Juni 201047min

Episode 163: State of the Union

Episode 163: State of the Union

Announcement regarding the release cycle.

3 Juni 201017min

Episode 162: Project Voldemort with Jay Kreps

Episode 162: Project Voldemort with Jay Kreps

Jay Kreps talks about the open source data store Project Voldemort. Voldemort is a distributed key-value store used by LinkedIn and other high-traffic web sites to overcome the inherent scalability li...

16 Maj 20101h 13min

Episode 161: Agile Product Management with Roman Pichler

Episode 161: Agile Product Management with Roman Pichler

In this episode, we discuss with Roman Pichler how Scrum impacts product management and how agile product management differs from traditional approaches. The topics covered include product owners on l...

3 Maj 20101h

Episode 160: AspectJ and Spring AOP with Ramnivas Laddad

Episode 160: AspectJ and Spring AOP with Ramnivas Laddad

This episode is a conversation with Ramnivas Laddad about aspect-oriented programming (AOP), Aspect J, and Spring AOP. We review the fundamental concepts of AOP, discuss AspectJ (an open source compil...

19 Apr 20101h 2min

Episode 159: C++0X with Scott Meyers

Episode 159: C++0X with Scott Meyers

This episode is a conversation with Scott Meyers about the upcoming C++0x standard. We talk a bit about the reasons for creating this new standard and then cover the most important new features, inclu...

5 Apr 20101h 4min

Episode 158: Rich Hickey on Clojure

Episode 158: Rich Hickey on Clojure

This episode is a coversation with Rich Hickey about his programming language Clojure. Clojure is a Lisp dialect that runs on top of the JVM that comes with - among other things - persistent data stru...

22 Mars 201058min

Populärt inom Utbildning

historiepodden-se
rss-bara-en-till-om-missbruk-medberoende-2
det-skaver
harrisons-dramatiska-historia
nu-blir-det-historia
allt-du-velat-veta
johannes-hansen-podcast
not-fanny-anymore
roda-vita-rosen
rss-viktmedicinpodden
sa-in-i-sjalen
i-vantan-pa-katastrofen
rss-max-tant-med-max-villman
sektledare
rss-foraldramotet-bring-lagercrantz
rikatillsammans-om-privatekonomi-rikedom-i-livet
kan-jag-sa-kan-du-podden
rss-om-vi-ska-vara-arliga
rss-sjalsligt-avkladd
rss-traningsklubben