Sponsored Link •
Over five years ago I started talking about Heron on Artima.com. After several re-designs, and many side adventures, I am finally making the first Alpha release of version 1.0 of the Heron interpreter.
I've finally released the first Alpha of version 1.0 of the Heron language.
This is an open-source interpreter for Heron written in C#, that runs only on Windows. Unfortunately I do not currently support Mono, because of some dependencies on the new .NET 4.0 parallelization libraries.
Since I have been talking about Heron for so long, and this is a landmark release, I thought I might talk a bit about the history of Heron.
Heron has been under development for over five years. In fact it started as a seed of an idea during a programming languages survey course I took at McGill University nearly 15 years ago.
The original idea I had was that programming languages were in general more complicated than they needed to be. It seemed to me that there was no real reason we couldn't write pseudo-code like I found in textbooks like the famous Introduction to Algorithms. Of course I hadn't yet heard about Python or Ruby.
As I started learning new languages I kept finding reasons to give up on my programming language project, and then new reasons to start it up again. It seemed that no language quite fulfilled my quixotic desires.
About six years ago, I started work on Heron. The first version of the language was almost a dialect of C++ with better support for meta-programming. It was implemented as a Heron to C++ translator. I had a lot of trouble getting traction on the idea, and got side-tracked on another project: the Cat programming language.
Heron is a general-purpose object-oriented language that strives to be appropriate for large scale project development (at least once it is mature). Heron borrows a number of ideas from functional languages, and offers some new twists on object-oriented programming.
While Heron is being designed for larger-scale team-based software development, it should also be appropriate for simple programming tasks. I want to be able to use it do develop simple programs, which can be reused easily in larger program without modification.
The following are the most notable features of Heron
accumulate. The first three operations can be evaluated concurrently by the Heron interpreter.
Any. The universal variant can hold any value, and maintains type information about the contained value. It supports querying of the type of the contained value via the
is operator, and supports extraction of the contained value via the
as operator can be used to cast a class or interface instance to an interface instance, if the source implements the function signatures of the target interface.
meta() is executed automatically if found during compilation in the primary module. The argument to the
meta() function is an object that represents the code model (effectively the abstract syntax tree) of the Heron program.
null unless explicitly marked with the
Heron is also notable in its explicit omittance of certain common language features, which are mostly redundant because of the features listed above. Some notable omissions and a brief rationalization are:
Object base class. Since there are no downcasts, a universal base type would be not very useful. Many of the cases where such functionality is desired, the
Any type suffices.
It's a little audacious to declare a language release as version 1.0, because there is so much work to do on it always. Nonetheless I've declared the current release of Heron as the first Alpha for Version 1.0 for two reasons:
If you want more information about Heron I strongly urge you to download it and take a look at the various test programs that it comes with. You can also wonder around the web site at Google code hosting, or ask me questions here! I look forward to hearing your feedback.
|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 ( www.heron-language.com ). Christopher is the co-author of the C++ Cookbook from O'Reilly. Christopher can be reached through his home page at www.cdiggins.com.