Hostiness
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
-
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. ↩
-
I use insane with all deference to those insane enough to create wonderful languages. ↩
-
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
Sam Tobin-Hochstadt
Which of the many “dreaded library problem[s]” are you referring to?
Oct 9th, 2012
fogus
@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.
Oct 9th, 2012
patrick
“The most interesting programming languages moving forward, in my opinion, are languages targeting an exiting host platform.”
Exiting -> Existing
Oct 9th, 2012
Greg
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.
Oct 9th, 2012
fogus
@Greg
Yes! Thank you for the reminder.
Oct 9th, 2012
Patrick Logan
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.
Oct 9th, 2012
fogus
@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.
Oct 9th, 2012
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.
Oct 9th, 2012
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
Oct 9th, 2012
Nils
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.
Oct 10th, 2012
fogus
@Nils
No particular reason except that I only chose a handful.
Oct 10th, 2012
Nils
Now I am relivede, I thought I’d might be betting on the wrong horse :-)
Oct 10th, 2012
Reply to “Hostiness”