GIGO: words unreadable aloud
Mishrogo Weedapeval
 

 

  Saturday 20 April 2002
Multi-level Language Marketing

I mentioned Greg Ewing's Pyrex language for writing Python-like code that can be easily transformed into the kind of C you need to write to extend the Python interpreter. Today, the Lambda Weblog also has a Pyrex reference.

It brings up some interesting associations:

  • Rice University's Programming Language Technologies group created one of the more popular scheme implementations, PLT scheme, with its DrScheme IDE and a couple of scheme variants. In particular, its use for teaching involves the presentation of several closely related languages, which gradually increase in complexity as you learn.

  • SGI's Pro64 compiler was open sourced and then canceled, but it did produce a nice description of a multi-level intermediate language called WHIRL (pdf link). (That's my copy that I downloaded a year or more ago -- I couldn't easily find another copy on the Web.) This describes five levels of intermediate representation (I.R.) -- the compiler starts with the source, and transforms (lowers) the IR until it has something from which it is easy to generate good code. Different optimizations can be done at each IR level.

  • Jython -> Java -> JNI/C

  • Python -> Pyrex -> C

Now, I think functional programming is pretty fun and I like Haskell, but the performance of Haskell programs and compilers today ... sucks. So I wonder if anyone is working on a multi-level approach to FP, similar to what SGI's compiler did with WHIRL, or what Pyrex programmers do.

See http://lambda.weblogs.com/discuss/msgReader$3187?mode=topic
11:17:17 AM   comment/     



Click here to visit the Radio UserLand website. Click to see the XML version of this web page. © Copyright 2007 Doug Landauer .
Last update: 07/2/6; 12:04:59 .
Click here to send an email to the editor of this weblog.

April 2002
Sun Mon Tue Wed Thu Fri Sat
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30        
Mar   May

Previous/Next