Tree @rel_1_0_2014_0819 (Download .tar.gz)
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.
History
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.
Chris also recently patched Milo's implementation to take standard long
options, for portability (NetBSD doesn't have getopt_long_only
.) (Sorry
Milo, hope you don't mind.)
License
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.
Commit History
@rel_1_0_2014_0819
git clone https://git.catseye.tc/Wierd/
- Patch Milo's implementation to use more-standard getopt_long(). Cat's Eye Technologies 10 years ago
- Add build system. Cat's Eye Technologies 10 years ago
- Rectify file permissions. catseye 11 years ago
- Add README, and take executable permissions off everything. Cat's Eye Technologies 12 years ago
- Added tag rel_1_0_2004_0302 for changeset 26cccd97b28b Cat's Eye Technologies 12 years ago
- Initial import of Wierd distribution version 1.0 revision 2004.0302. Cat's Eye Technologies 12 years ago