The Artima Developer Community
Sponsored Link

Heron-Centric: Ruminations of a Language Designer
Designing a Language for Library Developers
by Christopher Diggins
October 10, 2005
The design of Heron is more inspired by the problems faced by library developers than software developers.


Greg Jorgensen asked me recently:

I'm curious to know what kinds of programming problems you have that would prompt you to design and implement your own language. I get the impression from your postings that none of the available languages are sufficiently powerful to do what you want to do with them. I understand getting frustrated with the shortcomings of specific languages, but when I'm able to choose among even the small number of languages I am proficient with I can usually pick one that makes me happy and gets the job done.

I am genuinely curious to know if you decided to create your own language because you can't solve your development problems with an existing language, or if Heron is more of an intellectual exercise. What is it about modern programming languages that you find "eternally frustrating?" Is the frustration from real development projects you can't implement? Can you give an example of a real application that will be enabled by Heron, but not by C++, Java, Smalltalk, Scheme, Ruby, take your pick?

I couldn't answer the question satisfactorily and I got a bit defensive (sorry about that Greg). I just realized that question was discordant with my way of thinking because I am not developing Heron so much for application developers as I am for library developers. I have had a successful career developing applications in Delphi and C++. In general I have no problems writing software in these languages and many others (my current favourite language incidentally is Scala). However when I tried to develop better libraries in C++ or Delphi or Scala is when I started to run into very hard limitations of the language (for instance writing efficient numerical programming libraries, constrained value primitives, SI types, AOP designs, reference counted pointers, optimized dictionary classes, policy based designs, meta-programming, etc.).

When writing libraries you tend to think about code quite a bit differently than when you are writing an application. You end up being more concerned with efficiency, flexibility, facility and extensibility. One of my primary goals with Heron is to create a language which will make it much easier for myself and others to develop interesting and useful libraries. I believe that the success of a language for the most part is decided by the quality and variety of libraries which come with it, and if Heron makes it easier for me to develop high-quality libraries then I think it has a fighting chance.

PS : My apologies to everyone to whom I have been defensive or flippant over the last year. I am trying to work these kinks out of my operating system. I recently had a personal revelation that I take suggestions and criticisms far too personally, and interpret them as direct attacks on my character. I am now making a sincere effort to be much more open-minded.

Talk Back!

Have an opinion? Readers have already posted 47 comments about this weblog entry. Why not add yours?

RSS Feed

If you'd like to be notified whenever Christopher Diggins adds a new entry to his weblog, subscribe to his RSS feed.

About the Blogger

Christopher Diggins is a software developer and freelance writer. Christopher loves programming, but is eternally frustrated by the shortcomings of modern programming languages. As would any reasonable person in his shoes, he decided to quit his day job to write his own ( ). Christopher is the co-author of the C++ Cookbook from O'Reilly. Christopher can be reached through his home page at

This weblog entry is Copyright © 2005 Christopher Diggins. All rights reserved.

Sponsored Links


Copyright © 1996-2018 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use