Sponsored Link •
|
Summary
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.
Advertisement
|
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.
Two years ago, I started a complete redesign of Heron which was quite different from the original. While the syntax still resembles C++ somewhat, there is now much more influence from other languages like Scala, Scheme, JavaScript, and Python.
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
map
, reduce
, select
, and 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.
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.
Any
.
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 ?
modifier.
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.
Have an opinion? Readers have already posted 19 comments about this weblog entry. Why not add yours?
If you'd like to be notified whenever Christopher Diggins adds a new entry to his weblog, subscribe to his RSS feed.
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. |
Sponsored Links
|