Esoteric Programming Languages
led_belly writes: "I came across this interesting page from the #alt.linux IRC chat room topic (irc.keystreams.com). It is an interesting read for all those who have ever been baffled by why/how some people do things. The Yahoo! Webring listing of similar topics is here."
Well, you do have to put stuff on the stack in reverse... since it's FI/LO. Breakdown of the program:
,olleH"
55+
put 5 on the stack twice, add the numbers on the stack together, leaving 10, or a newline in ascii.
".dlrow
put "Hello, world." on the stack in reverse, this is so we can pop it off in the proper order.
>:#,_@
very nice code to print out everything on the stack. '>' sets the IP velocity to "east", ':' duplicates the last item on the stack. '_' pops an item off the stack and tests it, if true, set IP to west, if false set it to east. The # skips the next instruction, and the comma prints the character off. So you're testing and printing until there's nothing left on the stack. The '@', finally, exits, which is executed when there's nothing left on the stack.
Makes sense?
[ approaching AI ]
Heh, I've been hanging out on mailing lists with the creator of said language. He's a really neat guy, and the other denizens of the list are sharp, too.
If you're really interested, you might look at www.catseye.mb.ca, which is Chris Pressey's (creator of befunge) website.
[ approaching AI ]
They don't bother, but the language isn't static. There is a multi-threading extension for example. Typical of Intercal it is unlike all other threading packages I know of. It doesn't share data, only the code, all messages must be passed by altering the code (disabling and enabling blocks). Trintercal is base-3, there is also a base-N variant (the base-3 one shares some ops with the Klingon programming language...)
A clueless moderator marked it down as flamebait. A language has to be pretty awful for that to happen.
Anyway, here's Brainfuck Also here
It's Turing complete, 8 instructions, and programs look something like this
If tits were wings it'd be flying around.
That's right a Klingon programming language. Waaaaaaa! As far from Perl as one can get....
Comparing it to Windows will be a moot point, since El Dorado is going to have a 40% larger code base than XP.
No list of esoteric programming languages would be complete without a link to the Beer Page:
http://core.federated.com/~jim/99/ (mirror)
This is a collection of programs written in over 200 languages designed to print the canonical "99 bottles of beer on the wall" song.
The page says that Unlambda's interpreter is written in Scheme, which isn't strictly true. The CUAN contains interpreters written in Java and Scheme, and more than one in C. I think there's a buggy Perl interpreter, as well.
k s``s`kk
``s`kk``s`kk`ki``s``s`ks`ks``s`kk``s`kk`kk``s`k@`k i``s``s`k|`kii`kei
I've written an Unlambda interpreter/stepper in Python, available here. It's correct, as far as I know, but extremely slow for lengthy programs.
Incidentally, here's "cat" in Unlambda:
```sii ``s``s``s``s``s``s`ks``s`kk`kc``s``s`ks``s`kk``s`
Loads of fun!
Aha! The first mention of our glorious and unheralded IRC network. Anyone looking to hook up to a newer, reliable network... You may want to try connecting to irc.geeksanon.ca, the round robin DNS name. Of course, you can also use irc.keystreams.com, irc.gravitysucks.org (hosted by www.gravitysucks.org) and irc.duped.net. I am done.
"It's amazing what velocity can do when human beings are in season" -Matthew Good
It won't be complete if I don't include The Language List. Not only this page contains resources for those esoteric ones, but also other "saner" languages too.
For those of you who want to create programming languages, make sure you read the underlying principles. If you know all these stuffs, your programming language will not be just a toy!
--
Error 500: Internal sig error
Here's a short one that has Hello World the right way:
:-)
r:#,_q#:"Hello world!"+55
(wrote it myself
-xmath
The The Evolution of a Haskell Programmer (found on the great Lambda the Ultimate blog on functional programming) features a dozen funny Haskell functions to implement factorial. The most elegant implemenation, though, is by the "Tenured Professor":
fac n = product [1..n]
cpeterso
I'm right in the middle of writing one. Hopefully I'll get free time to go back and work some more on it, after GCC 3.0.2 gets released (in a week).
Why? Because I can, and it's fun.
You cannot apply a technological solution to a sociological problem. (Edwards' Law)