archives

Best route for new language to be self-hosting


Does any particular language stand out above the crowd to be a host in which to develop general purpose languages?


I am interested because of the development of Perl6 using Haskell as a host by Autrijus (See pugs.) I expect that any of OCaml, Haskell, Scheme or Lisp would be better than using C <grin> to develop a host, but is one of those (or something else entirely) likely to be significantly better than anything else?


I expect that a good host language:

  • Has an active, friendly community.
  • Is super productive (for a skilled developer who has experience in host language).
  • Has good libraries. Especially language related libraries for say parser generators. Possibly part of language.
  • Is fast enough. Self-hosting may come after the initial childhood and growing pains of new language, so nice if the host language can be used for some time.
  • Is relatively stable. (Not hot off the press, not one-man-band, time spent learning it is usable in future, unlikely to be a pure research language)
  • Is mostly learnable in a few months by a bright developer (Hopefully that is me! My work has always been with imperative languages, but I am certain I can be quickly seduced by functional programming...).
  • Is open source (No vendor lock-in, ability to share with other developers).

I hope this is the perfect forum to get an answer to this personally vexing question!


Morris


PS: For those that wonder at the need for self-hosting (rather than just keep another language under the hood):

  • I think that to build a community of developers for any new language wants ownership of ‘their language’ that is ‘better than other languages’. You can’t have that without self-hosting (note: C is great as a host, but not great for prototyping!).
  • Reduce dependencies

PPS: I do think the world needs another language! Of course I am preaching to the converted here.

subtext: Uncovering the simplicity of programming

Some of you might be interested in subtext, a project that explores the idea of example centric programming and non-textual programs.

The basic idea is that the representation of a program is the same as its execution (possibly related to the discussion currently going on about edit-time, reasoning-time etc.)

Programs are constructed by copying and executed copy flow: the projection of changes through copies.

If all this sounds intriguing, hop over and take a look. The site hosts a couple of demos and papers that provide more details.