read


read
or learn more

Hostiness

Oct 9, 2012

The most interesting programming languages moving forward, in my opinion, are languages targeting an existing host platform. Regardless of your opinion of the following languages, I think that the reason for their buzz, power and (eventual?) success is due to their embrace of their host targets:

  • Elixir is a programming language targeting the Erlang virtual machine.
  • CoffeeScript is a language that compiles down to JavaScript
  • Clojure is a Lisp that targets the Java Virtual Machine and JavaScript
  • Visi is a language that targets the cloud via a Haskell and Objective C-based runtime
  • Roy is a statically typed language that targets JavaScript
  • JRuby is a Ruby variant on the JVM
  • Cobra is an OO language with builtin support for contracts and unit tests targeting .NET and Mono
  • Shen is a beautiful statically (optional) typed Lisp variant targeting Common Lisp, JavaScript, the JVM and possibly more targets

There are more of course, but these represent a nice sample of the most exciting offerings. Where they differ from other languages is that they embrace established, well maintained and/or popular systems. That is, they leverage a host platform to their advantage.

Moving into the future I believe one would need to be gutsy, ill-informed or insane (or a mix of the three) to create a language runtime from scratch. That’s not to say that it shouldn’t ever happen, in fact for “systems” languages like Rust and Go it makes a lot of sense to start from whole cloth. However, for higher-level languages leveraging an existing runtime is a huge win. One has only a finite amount of time to burn, and it’s a weighty choice to want to spend it recreating1 garbage collectors, virtual machines and the like. That’s not to say that there’s no room for improvement in those areas, but I think at this point it’s easier to make a mark in programming languages or compilation techniques than in garbage collection or VMs.

So if I were insane2 enough to create a programming language for use by others, I would, without hesitation pick one of the following hosts:

  • Factor: the concatenative programming language has a stunning compiler and runtime
  • GHC: the Haskell compiler and extensions with the appropriate runtime libraries
  • Java Virtual Machine: world-beating megatech
  • JavaScript itself or a specific JavaScript targets like Node.js or V8
  • Erlang’s virtual machine
  • A Common Lisp implementation
  • Racket via its #lang feature

There are other targets of note,3 especially LLVM, Parrot, LuaJit, PyPy and Camlp5 but I’m not terribly familiar with the way that they solve the “library problem”.

I’m not likely to create a programming language at any point this decade, but langdev is one of those topics that I love to think about.

:F


  1. That’s not to say that you shouldn’t try. I think every programmer should try to write a garbage collector or a virtual machine. It builds character. 

  2. I use insane with all deference to those insane enough to create wonderful languages. 

  3. If you’re not inclined to limit yourself to full-blown hosts, then there are langdev elements such as garbage collectors, shells, parsers and the like available as libraries. 

12 Comments, Comment or Ping

  1. Sam Tobin-Hochstadt

    Which of the many “dreaded library problem[s]” are you referring to?

  2. @sam

    I’m only referring to the existence of libraries at all. As for Racket, it should not be included in that “first five”. I miscounted. :-( I’ve rephrased for more clarity.

  3. patrick

    “The most interesting programming languages moving forward, in my opinion, are languages targeting an exiting host platform.”

    Exiting -> Existing

  4. Don’t forget Cobra! http://cobra-language.com For now it targets .NET/Mono, but they’re working on JVM and Objective-C. Python-like syntax, great built-in support for contracts and unit tests.

  5. @Greg

    Yes! Thank you for the reminder.

  6. Racket has a lot of momentum as a Scheme-based language platform. I like the Gambit-C Scheme runtime as a Scheme-based language platform though… especially for “morally C” applications, to use @lukego ‘s term.

  7. @Patrick

    I really really <3 Racket. After seeing Flatt’s presentation at Strange Loop I’ve grown to love it even more. I would love to see it get more “air-time” so to speak.

  8. Thom Chiovoloni

    Haxe http://haxe.org/ falls into this category as well, though it targets multiple platforms. Arguably, it could also be worthwhile to target as a host as well, given that you’d get so many platforms for free. Though, this certainly doesn’t directly tackle the library problem you mention.

  9. Neale Swinnerton

    Any thoughts on X10 (the IBM language, not the home automation system)?

    focus is on concurrency for massively multi-core systems

    generates C++ or java source (presumably it could generate java byte code directly).

    http://x10-lang.org/home/introduction1.html

  10. Any particular reason, why you did not include Scala in your list? It is a language targeting the JVM and is getting quite some attention (in the Java universe) right now.

  11. @Nils

    No particular reason except that I only chose a handful.

  12. Now I am relivede, I thought I’d might be betting on the wrong horse :-)

Reply to “Hostiness”