Encyclopedia of Stupid Languages

9 min read Original article ↗

COLLECTED BY

Organization: Alexa Crawls

Starting in 1996, Alexa Internet has been donating their crawl data to the Internet Archive. Flowing in every day, these data are added to the Wayback Machine after an embargo period.

Crawl data donated by Alexa Internet. This data is currently not publicly accessible

TIMESTAMPS

loading

The Wayback Machine - https://web.archive.org/web/20030401124413/http://www.kraml.at:80/stupid/

The Functional, the Imperative, and the Ugly:

You think Perl is hard to read? You think Pascal is restrictive to the point of uselessness? You ain’t seen nothin yet. Computer science and math pranksters with too much time on their hands have designed, among other absurdities, an imperative language with come from instead of go to for flow control, a functional language based on the Lambda calculus but lacking the Lambda operator, and an assembly language with exactly eight zero-operand instructions. This site aims at becoming a comprehensive database of stupid languages, complete with links to their respective specifications, their authors’ homepages, and to compilers and interpreters implementing them.

Table of contents:

1 Language of the moment

This month’s Featured Freak is Philipp Winterberg, the inventor of ZT, a Shakespearean Fungeoid featuring anthropomorphic source code. ZT could be seen as a pioneer crossover project marrying two distinct kinds of esotericism: it unifies the respective worlds of stoned CS troglodytes and 20th-century Eurotrash occultists. Philipp probably needs medical attention, but who am I to tell.

2 The Encyclopedia itself

The list of stupid languages registered so far is the main entrance to the encyclopedia. The are two copies of this list, lining up the languages sorted, respectively, by impact value and by name. The impact value is a rough estimate of how entertaining and/or interesting the Stupid Languages Community thinks each language is; a language’s impact value is a function of the number of children it has spawned, the number of Web and FTP sites dealing with it, and the number of comments pertaining to it submitted to the encyclopedia. In case you feel overwhelmed by the amount of nonsense available, here’s a few hints on where to go first:

  • The oldest and no doubt most widely known stupid language is Intercal. As likely as not more people have read the Intercal specification than the specification of ISO/ANSI C or of the IEEE 754/854 floating point standard. Intercal, designed in 1972, is not only the Venerable Old Lady of the stupid languages world, it is also hilariously funny. Its syntax conventions and flow control mechanism are best described as bizarre, its arithmetic operators, interleave and mingle, are a case of Mad Scientist meets Hannah Barbera.
  • Even though highly entertaining, Intercal is still a pretty conventional imperative language from a taxonomy and compiler design point of view. Its absurdity is impressive but somewhat superficial, much more profound madness exists. Brainfork, a sort-of assembly language, demonstrates that Turing-completeness can be achieved with as few as eight instructions, none of which has any operands. Befunge was born out of the epiphany that address space doesn’t inherently have to be one-dimensional but could be two-dimensional as well; instead of cycling through a loop the Befunge instruction pointer crisscrosses about on a plane, a torus, or a sphere.
  • The most fascinating and minimalistic stupid language is Unlambda. It implements the pure untyped Lambda calculus but doesn’t support the Lambda operator, all occurrences of which must be gotten rid of pre-compile-time by abstraction elimination. Consequently, Umlambda doesn’t need any variables and pretty much boils down to two fundamental primitives, IO-related syntactic sugar aside. The good news is that Unlambda mercifully uses strict evaluation and is, “like any decent high-level language,” garbage collected.
  • The specifications of HQ9+ and Java2K have reportedly caused readers to pass out, piss themselves, or both. (Note that HQ+ has not yet been shown Turing-complete, for the time being its inclusion in this database is therefore to be considered tentative.)

I should also like to mention Oroogu, my own encyclopedia entry. It is less spectacular than any of the languages mentioned above, but it is particular in that it lacks conditionals: Oroogu knows neither an if clause nor any other customary kind of branch. A construct closely resembling the foreach loop is its only flow control facility; still, Oroogu preserves Turing-completeness.

3 Helping the Encyclopedia grow

The encyclopedia is meant to be a collaborative effort. If you happen to know a stupid language, a site hosting a stupid language compiler or interpreter, or any other kind of stupid language online resource, please consider registering it. Also, please feel free to post comments on the languages already listed. Registering new languages is a three-step process:

  • First go the the language registration form. You will be prompted for the language’s name, classification and homepage URL, as well as for information on its primary author. Completing and submitting this form will create an encyclopedia entry for the new language, available immediately.
  • Next, proceed to the new language page and follow the bottom-of-page maintenance links to tell the encyclopedia about additional authors, about how the new language is related to the other manifestations of insanity the encyclopedia links to, or about Web and FTP sites associated with it.
  • Finally, please post a comment on the new language, again by following the appropriate maintenance link. You will want to briefly hint what peculiarity distinguishes your language from the others and why it is entertaining and/or interesting and/or just totally crazy. Happy rambling.

Important note: both the language list and the individual language pages are real HTML pages, not direct CGI script output. In all likelihood your browser will cache them, so you’ll probably have to manually reload after every form submission before you can actually see the changes you’ve made. Final remark: Comments and suggestions are welcome at any time; just send mail to georg@kraml.at and rant on.

4 Questions and answers

4.1 Why am I being asked for my name?

To allow you to take credit for your contribution.

If you register a new language or if you post a comment on a language already registered, the encyclopedia will display along with your contribution the name you typed into the About Yourself section of the submission form. If you also provide us with your homepage URL, the encyclopedia will link to you; if you provide us not with your homepage URL but with your email address, the encyclopedia will link to your mailbox. If you register an online resource or a parent-child language relationship, your name will not be displayed but will nevertheless be stored internally; future versions of the encyclopedia may credit resource and relationship submissions, too.

Please note that filling out the submission forms’ About Yourself section is entirely optional. If you don’t want to disclose who you are, just don’t. I politely suggest that you consider using the Anonymous Geek default identity when submitting something anonymously, but you can just as well post under any other alias. Just kindly don’t impersonate anybody I know.

4.2 Why am I being sent a cookie?

You are being sent a cookie only immediately after submitting something. The cookie contains the name, email address, and homepage URL you typed into the About Yourself section of the submission form and has a shelf life of one week. It allows the server to preset the About Yourself form fields the next time you open a submission form, provided that you don’t reject it. Rejecting the cookie will not prevent your contribution from going live, it may merely mean more typing.

4.3 What does the impact value mean?

Not much. A language’s impact value is simply one plus the sum of the respective square roots of the number of online resources, comments, and immediate child languages submitted for the language in question. As of October 27, 2002, groups of online resources living on the same server (that is, sharing the same domain name) count as a single resource; this is to counteract resource spamming. I believe the impact value is a fairly reasonable estimate of how interesting and/or entertaining each language is; however, I don’t claim no better estimate can be devised. Feel free to mail me if you think you can suggest a more sophisticated algorithm.

It has been suggested that not just the number of immediate child languages should add to a entry’s impact value but that the cumulative resources and comments count of all nodes in a specific language’s descendants tree should serve as its impact count; i. e. that the algorithm should take into account resources and comments associated with children and grandchildren of any generation alike. I don’t think that’s particularly good an idea. To resort to an example from the world of Real Languages: some such approach would assign a higher impact rating to BCPL and even to B than to C, which as a matter of course would be ludicrous.

4.4 Whose insane idea was this?

The original version of this encyclopedia was designed in January 2001 by Galit Aharonov. Her inspiration had been one part her newly acquired SQL skills, one part her having fallen in love with David Madore’s Unlambda; Galit would probably have proposed to David if she hadn’t concluded from his homepage that he wouldn’t have been interested. Unfortunately, in her enthusiasm she drafted a truly byzantine system which fell apart about two months after we had implemented it and flipped the metaphorical switch. One and a half year later, Galit no longer being with us, I finally found the time to gather and reassemble the tiny pieces of database lying around on our former server, in the process dyking out approximately half the functionality of the original implementation.

I would like to point out, however, that the blame for having hatched this thing doesn’t lie entirely with the two of us. The encyclopedia was supported and its design strongly influenced by Chriss Pressey’s Esoteric Languages mailing list; thanks for valuable discussion are due in particular to Panu Kolliokoski, Juanma Barranquero, Daniel Biddle, Frédéric van der Plancke, David Benyon, and Chris Pressey himself.

5 Related sites

 
Originally posted Mon Jan 29 2001. Last updated Sat Nov 9 2002.
Valid HTML 4.01 and CSS 2. Designed to be accessible and interoperable.
The URL for this page is http://www.kraml.at/stupid/.