Bitbucket is a code hosting site with unlimited public and private repositories. We're also free for small teams!


The Wierd Programming Language

This is Cat's Eye Technologies' distribution of Wierd, a two-dimensional esoteric programming language (a "fungeoid".) Unlike related languages, the symbols in a Wierd program do not determine which instructions are executed; instead, any symbols may be used to draw chains of symbols, and it is the bends in these chains which determine which instructions are executed.


Wierd has a long and colourful history of language fuzziness.

Wierd was originally designed by Ben Olmstead, John Colagioia, and Chris Pressey, in a three-way email discussion about how Befunge and Brainfuck could be combined in an interesting way.

Based on this discussion, John wrote an implementation of Wierd in C (wierd.c in the src directory), and wrote a version of the classic "Hello, world!" program in Wierd (hello.w in the eg directory; see also his description of the program in hellow.txt in the doc directory.)

Then, based largely on this implementation, John wrote a specification for the language (wierdspec.txt in the doc subdirectory.)

Later on, Milo van Handel also wrote an implementation (wierd-milo.c in src) and several example Wierd programs (in eg -- they're the ones described in *.doc.txt in doc) for it -- including a Wierd/INTERCAL polyglot (polyglot.i).

Unfortunately, Milo's interpreter has different semantics from John's interpreter -- from what I've been able to tell, the two programs implement largely incompatible languages. It may be possible to write programs which work the same on both interpreters, but I'm pretty sure none of the included example programs do.

Milo's Wierd could reasonably be called "Wierd 2.0", but as far as I know, no one does.

Later still, Chris attempted to implement the original Wierd in the yoob framework, based on John's spec, but when trying to run hello.w on it, found that it would only get so far before entering an infinite loop (back and forth along the chain.) This suggests a possible bug in either the yoob implementation or in wierd.c or in the spec.

Given all this, it is really doubtful that any of these implementations or documents can be considered normative.


The Wierd distribution's licensing matches the language's fuzziness.

With the exception of Milo's quine.w, which is licensed under the GPL (no version specified), no license was ever explicitly placed on any of the sources, so they are all implicitly copyright by their respective authors.

However, Cat's Eye Technologies has been redistributing these sources in the form of this Wierd distribution for years now, with no objections from the authors, so I think it's safe to consider them to be freely redistributable, unmodified and for non-commercial purposes; however, I am not a lawyer, your mileage may vary, caveat emptor, etc. etc.

Recent activity

Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.