I moved to a new home recently … where “recently” is actually about 6 months ago. I’m using the extra demands on my time involved in buying a house, packing up contents and unpacking at the other end, as an excuse for not making progress on this project for a while. But the excuse if over, and coding has restarted. I, at least, am happy about that.
I’ve just tagged a new version – Jamison Creek – in honour of my new home. The main advance in this release is that types are starting to take shape. I had intended to implement various flavours of numbers – integers and floats of various sizes – when I first did types, but it didn’t turn out that way: they are actually rather complex as they have subtleties that need to be worked out carefully. I needed something simpler to flesh out the infrastructure for types, so I’ve just extended the current built-in types of “number”, “string” and “Boolean” with arrays and structs.
I’m still a long way from implementing any of this but I keep thinking about the sorts of types that I want “ocean” to have, so I thought I would write stuff down in the hope that it will stop looping around my brain.
It seems that I disappeared for a while… various reasons that I won’t go into. I seem to be motivated again, thanks in part to pony.
Pony (www.ponylang.org) is a language which was the topic of a talk at linux.conf.au in January 2018. It was interesting and it motivated me, so that it good. But I don’t like pony. Why?
I thought, when I chose the name “Ocean” for my new language, that I had checked that it wasn’t obviously in use. If I had, I wasn’t very thorough.
In the first place, there is Ocean: A new systems programming language which looks like an experiment much like mine. It is far from complete and the most recent date I can find is over 2 years ago. Maybe it is still active, maybe not. If I ever progress far enough that I think I have a serious language instead of just a little toy, I would certainly revisit that project to see if there is any real conflict, but for now we are both at a stage where choosing the same name is much like choosing the same name for our children – not really a problem.
However there is also the Ocean Programming Language Definition which looks more formal. It dates from 1995 (nearly 20 years ago!) and was targeted at being a language for teaching compiler design with. It may even still be in use for that, I don’t know. How long can you hold on to a name for a language without having a portal on the web I wonder?
Finally there is the Ocean Language from Cadence Design Systems(youtube) which seems be a totally different beast – something for simulations I think. That definitely seems like a viable contended for the name.
So I should probably change the name of my language … not just yet though. It really is just a toy so there is no need to be hasty. It might be worth thinking of options though.
The first to occur to me is “Mare”, being the Latin name of “sea”, and importantly the name used for the “seas” on the Moon. It does have the problem that, when spoken aloud, it could be confused with “mere”, and while “a mere language” has some attraction, I would rather avoid confusion. Another possibility is “Oceanus”, again from the Latin and used for Oceanus Procellarum, again on the moon.
I’ll have to make a decision before my current registration of ocean-lang.org expires, but that is a couple of years yet and I may have lost interest by then…
Yesterday I ran my first “ocean” program…
I’m currently working on building a simple interpreter so I can test out the next steps of my language design. Yesterday I got it to the point where it could print out “hello world” and similar totally trivial things. So this isn’t really a statement about the development of the language, but only development of the support software. Even there it isn’t much of a statement.
Still, it is exciting. Hopefully I’ll have a blog post ready in a week or two which describes the next step in my language and provides a link to the code so you can welcome the world too.
It took much longer than I would have liked to get to where I am now. Partly the problem took a while for me to fully understand (though it seems so simple now). Partly other life issues got in the way.
However I finally have a good understanding of how to handle line break and indents in a uniform and elegant way. My parser generator can now generate parsers which use indents to resolve ambiguity and detect errors, and use line-break to terminate some things, but not other things as appropriate. All the details are in my main blog.
My third article on language issues was published a few days ago and has gathered quite a good collection of comments, some very interesting.
I really hadn’t foreseen the hate which some people seem to have towards the “leading 0 means octal” convention for number literals. This is clearly something that Ocean will need to be careful about.
International character-sets also gain a lot of attention. There are probably some subtleties that that I’ll need to be careful about, but I really want to keep it all as simple as possible… with the understanding that “just ASCII” is now impossibly simple.
I should say that the banner image is used by permission and was taken by Heather Paul: http://www.flickr.com/photos/warriorwoman531/
Original image is here.