Subject: Languages From Hell -- your favorite one could walk again!
Newsgroups: comp.compilers,alt.folklore.computers,comp.lang.misc,comp.unix.wizards

I'm looking for specifications of archaic computer languages.

I write language implementations for fun.  After having written C-INTERCAL and
IEEE PILOT, I have decided that I would like to assemble a sort of living
museum and rogue's gallery of the languages time forgot --- an educational
selection of the freaks, oddities, and horrors from the history of computer
language design.

In addition to my implementations of INTERCAL and PILOT, I have collected
implementations of FOCAL and Trac.  All the code is available for FTP at
locke.ccil.org:pub/retro.  A friend of mind is working on an Algol-60-to-C
translator, and I have been sent a partial BLISS implementation which I may
complete if nothing better offers.

My offer: if you'll send me a redistributable softcopy specification or
manual for a language *you* think is sufficiently perverse to be interesting
and/or of great historical significance, and I agree with you, then I will
implement it!  

Both of the existing Raymond retrocompilers are well documented, including
tour papers that discuss the internals.  Both translate to C as an intermediate
language and call the local C to do code generation, assuring both easy
retargetability and high quality of generated code.  Both may well, in fact,
be the highest-quality implementations in the histories of their respective
languages!  I expect to continue this tradition in future retrocompilers.

To take me up on this special offer, you must supply me with softcopy of a
specification of the language, or at least softcopy of a manual for some
reasonably canonical implementation.  Hardcopy alone is not acceptable, as I am
a poor typist.  You will strengthen your application considerably if you can
include test source or real programs with the spec.  Please do *not* bother
sending me mail that just says "It would be neat if you did X" without
at least pointing me at a softcopy spec or offering to type one in; all
such idle vaporings will be rudely ignored.

This offer is not limited to compiled languages.  I do interpreters too.
In fact, my IEEE PILOT implementation is both a floor wax *and* a dessert
topping...er, that is, both a PILOT compiler *and* a PILOT interpreter.

I am particularly interested in getting specifications and code
samples for the following languages: RPG, 1401 Autocoder, IPL-V, CORAL, and
MAD.  As I pick my next project, candidate specifications will get points for
the following attributes:

   * Intriguing perversity. That is, peculiar control structures, odd storage
     models, entertainingly tortured syntax and lexical rules, etc.

   * Historical interest.  Languages like IPL-V that are remembered as
     failed alternatives to those now living, for example, would get many
     bonus points.  So would languages like MAD, extinct but remembered in
     hacker folklore.

   * Pedagogical interest.  Languages conceived for textbook purposes but
     never implemented, such as Knuth's MIX or Dijkstra's unnamed language
     from "A Discipline Of Programming", would be welcome.

   * Evil reputation.  Preference will be given to languages only spoken
     of in horrified whispers.

   * Being compilable.  Though I will cheerfully do interpreters, I find
     compilers more fun to write.

   * Length of time dead.  All other things being equal, I will prefer
     older designs to newer ones.

   * Quality and completeness of documentation.

   * Availability of test code and sample programs.

Two kinds of language I am *not* generally interested in are assemblers
and MFTLs used by a community of one.  While writing instruction-set emulators
falls within my definition of fun and interesting, I don't care for the kind of
toil involved in simulating port-connected I/O devices and getting ancient
binary formats exactly right.  Nor do I care much about languages only their
inventor ever understood, unless they have some design feature that is
utterly fascinating to *me* (not just the designer).

Possible implementation languages for my retrocompilers and retrointerpreters
may include C, Perl, Scheme, or Emacs Lisp.  All results will be made publicly
available in the retrocomputing archives at locke.ccil.org.

Why am I doing this?  Think of it as performance art.  Or reconstructive
archeology.  Or an excuse to construct educational toys.  Or a kind of arcane
technical joke.  Or a good way to take a break from my serious work when I
can't get away to jam with my musician buddies or windsurf or do karate.  All
these motivations are potent in my mind.

So.  Send me your bizarre computer-language revenants.  I will send high
voltage through their neckbolts and make them live again.
--
				Eric S. Raymond