Ioke /.FAQ


One of the more obvious points from the slashdot posting is that people have a tendency to easily misunderstand what I’m doing here. I’ll paraphrase some of the more common questions/comments from the /. thread and write a little bit about Ioke. This should maybe make some things clearer.

The name?

I didn’t know that the name would cause so many comments, but apparently it did. I personally am quite fond of the name because it can contain lots of different interpretations. The main derivations that go into the name was part including Io in the name, since Io is the main influence on the language. And partly, I liked the symmetry with the Nordic (not only Norse) trickster god Loke (which is generally written Loki in English). Some commenters thought the name was pronounced like ‘joke’. That’s not true. The pronunciation I use is three syllables: ii-oo-kee. Some felt it is a stupid name. I can only disagree – it’s a name that has multiple meanings in multiple languages. I like language trickery, both at the level of programming languages, and at the level of human languages, and I enjoy that this is reflected in the name of the programming language. And the fact that it generates some discussion is actually a testament that the name was well chosen

The JVM?

This is probably the most common misunderstanding, and it’s not at all specific to Ioke – in fact, it’s one of the most common questions about JRuby too, although I think finally this is starting to abate. There are several questions involved in this. The first – why not use Java on the JVM – there isn’t any big difference anyway, right? Well, wrong. I believe that languages are fundamentally different. (Yeah, Turing equivalence, blah blah, greenspuns tenth law, blah blah, I know all those arguments.) My point is, programming languages matter; it’s obvious that they do.

So the second question about the JVM hinges on a misunderstanding what the JVM actually gives you. Or rather, the misunderstanding is that you don’t get much from running on the JVM, except that your language will be much slower than something you coded in C – which obviously is the only manly language you can use. I call this a misunderstanding, and it comes from two camps. The first one is the camp of people who never implemented a modern language from scratch. These people doesn’t know what’s actually necessary to create a language implementation, and thus doesn’t understand how the JVM can help. Many fall into this fallacy without realizing it themselves.

The second camp is language implementors who doesn’t know what a good piece of engineering the JVM actually is, how fast Hotspot can be and how good the GC really is.

Just to give you a quick summary if you are in any of these two camps: The JVM provides – among other things – 4 (soon to be 5) kick ass garbage collectors, that are generally considered among the best in the world. It provides a thread implementation that’s been tuned for 15 years, including giving access to very capable implementations of concurrency and threading primitives. It provides a collection of libraries that is unmatched in size (including JDBC adapters for up to a few hundred different databases) – much of it open source. It provides application servers that give you all the services you would ever need. It provides interoperability with the low level native features when you need it, but you generally doesn’t need it. Of course, the JVM runs on a very wide range of platforms, and in most cases nothing need to be done to port your language to a new operating system.

And it provides an optimizing just-in-time compiler that will profile your code and dynamically optimize and deoptimize the parts of your code to get the best performance.

All of this, you get for free, when choosing to build something for the Java platform. And there’s lots more. Anyway. So why am I not interested in building my own garbage collector? Or my own thread scheduler?

I said something in the InfoQ Ioke interview, that I probably should have phrased a bit differently. Specifically, this part:

…and I don’t understand why people who create languages want to write their own GC…

What I really mean is that too me, when I think about creating a language, I first want to get everything working, including the GC, as quick as possible. When designing a language, the GC is something that should just be there, doing it’s job. Writing a GC is definitely a noble endeavor, but it’s not the main point for most languages – so if you don’t have to do it, it makes it easier to focus on the language design and the core of the implementation.

This all means that the JVM is a fantastic place for Ioke, in my opinion.

Why not Lisp/Smalltalk?

This question was mostly in the form of – paraphrased here – “If you’d like a language with the features you describe, why don’t you just use Lisp or Smalltalk?”. I think the one reason for this is the idea that Lisp and/or Smalltalk are the best versions of these kinds of languages you can ever create, and anything else will be inferior. That might be true, but it’s probably not true. I don’t think that Lisp or Smalltalk is the ultimate language. They show the way, but it’s not the end. I don’t seriously believe that Ioke will be better than any Lisp or Smalltalk, but it might happen. I like it very much right now.

At the same time, Ioke is very close to falling into the Lisp black hole. It doesn’t have S-expressions, but I could definitely argue for it being a dialect of Lisp. That’s not really interesting to do at this point, though. It doesn’t look like Lisp, but it feels like it. The other arguments for why not Lisp/Smalltak I’ve lumped together under the next heading

Why another language?

This question is basically this – there are so many good languages out there already, why create a new language? Or, there are so many languages, why do you think you can create something better? Or, oh no, not another language with stupid features that I will have to maintain. Or, if you like Lisp/Smalltalk/Ruby/Io so much, why don’t you use it instead?

I think all of these reactions are quite new. People haven’t done that many language projects from scratch, and posted about it like I do. At least I don’t think so. Of course, the Kambrian explosion during the 70’s happened in an environment where sharing was natural, and things were quite public. But there seems to have been a different feeling about new languages at that point.

So, why create a new language? First: why not? I’m creating Ioke for myself. If anyone else likes it, that would great, but it’s not the goal. The goal is to see if I can create a language that I like better than all the alternatives, and while I’m doing that see if I can write and discuss all the decisions I make in the process. I would have loved to see someone else do something like this, but I haven’t seen it. Most language creation seem to happen in a closed environment, at least initially. And it’s those first steps that I find really intriguing. So no, I don’t think I can create something better. But there’s always the possibility. And I learn something in the process.

Of course, the language will not become popular. There’s virtually no chance of it, and that’s fine too. And it means you won’t have to use it, or maintain it.

And to the last question – yeah, I like these languages, but I like different parts of them, and they all have things I don’t like. All languages are tradeoffs on different scales, and I would like to see a language that does the tradeoffs that I feel make sense

Announcing it too early?

This was an interesting point. I didn’t think I announced anything – except that I’ve started this project, and want to see how it turns out. As I said earlier, no one is going to force any one to use Ioke.

Lack of beard

This is really bad, actually. Probably the most real detriment to Ioke, of all these points, is the fact that I don’t have a beard. A language designer without a beard won’t work. Of course, the obvious example of Matz is a counter point to it, so maybe there is hope for me anyway. Because growing a beard is something I will not do. =)

In conclusion: Ioke is a language I’m creating for myself. If anyone else likes it, that’s great! But I’m not really announcing anything, when I’m talking about Ioke in this blog. Rather, I’m sharing my experiences, and if anyone’s not interested it’s actually very simple: don’t read this blog.


14 Comments, Comment or Ping

  1. I, for one, will refuse to look into Ioke before the beard issue is taken care of. You can grow a real one or fake it, I don’t care but ALL REAL LANGUAGES ARE IMPLEMENTED BY PEOPLE WITH BEARDS!

    Now, back to my semantic web work with tools from Ivan Herman.

    November 13th, 2008

  2. Well said.

    It’s great that you’re not taking all these points seriously. Whilst making ioke design decisions, please ignore everyone except for yourself, and those you respect (and sometimes even ignore them).

    Oh, and if you do decide to grow a beard, I wholeheartedly recommend using Mr Twit’s utility beard as the ideal rather than the generic and bland UNIX-beard.

    November 13th, 2008

  3. Curious Pedestrian

    Hello,
    I read somewhere that you have been considering V8 VM for Ioke. Could you please share more thought on why don’t you target other VM, like LuaJIT VM or Parrot?

    November 13th, 2008

  4. “And partly, I liked the symmetry with the Nordic (not only Norse) trickster god Loke”

    I’m glad you mentioned that, because for the longest time I thought the language WAS called Loke, but with a lower-case L. =)

    November 13th, 2008

  5. Josh

    Um, Ola? Last I checked Matz does have at least some facial hair… You might want to at least think about a soul patch ;-)

    November 13th, 2008

  6. matthias

    Right, Matz _has_ facial hair. So, obviously you won’t succeed.

    But, I have a beard … I should design a language …

    November 13th, 2008

  7. I agree! I’m pretty sure Matz has some face-fur these days. At least, he does in the Ruby 1.9 Tech Talk over at Google…

    November 13th, 2008

  8. Will M

    Hmm… I’ve been following along with these posts, and I always pronounced Ioke as “eye oak”, rhyming it with “yoke”. In my head, at least. I’ve never said it out loud.

    November 13th, 2008

  9. Kosta

    Hi!

    Maybe its a bit offtopic but I wanted to join your mailing lists, but Kenai wont send me the confirmation email (no, its not in my spam folder). Now where do I send all my incredibly smart input on how you should design your language the way that *I* want?

    You really should listen to me, I have a beard!

    Kosta

    November 14th, 2008

  10. Kosta

    Ok, nevermind, got it working using SDN…

    November 14th, 2008

  11. ste

    You could add another question to the list: “why are you basing Ioke on Io?” (for the record, I love Io almost as much as Ruby)

    November 18th, 2008

  12. Mattias

    Vill inte vara en besserwisser, men Norse == Nordic inte norskt…

    http://en.wikipedia.org/wiki/Norse

    Verkar bli ett intressant språk, jobba på :)

    November 21st, 2008

  13. Jason Grossman

    I’ve got the same problem with joining the mailing lists: Kenai won’t send me a confirmation email. And I don’t know what SDN is (@Kosta).

    While I’m here: this seems like a really interesting language. Although I agree with other commenters that you’re wasting your time without a beard.

    December 26th, 2008

  1. Ioke /.FAQ - Mac.6.cn - November 13, 2008

Reply to “Ioke /.FAQ”