I’m currently away on a family vacation, and as soon as vacation is over, I’m off on a business trip for a week. And along the way, I’ve got some deadlines for my book. So to fill in, I’m recycling some old posts. I decided that it’s been entirely too long since there was any pathological programming ’round these parts, so I’m going to repost some of my favorites.
As long-time readers know by now, in real life, I’m not a
mathematician; I’m a computer scientist. I’m still a math geek, mind
you, but what I really do is very much in the realm of applied math,
working on building systems to help people build programs.
One of my pathological obsessions is programming languages. Since I first got
exposed to TRS-80 Model 1 BASIC back in middle school, I’ve been absolutely
nuts programming languages. Last time I counted, I’d learned about 150
different languages; and I’ve picked up more since then. I’ve written programs
most of them. Like I said, I’m nuts.
These pathological programming language posts are my way of inflicting
my obsession on you in a (hopefully) amusing way. You see, in this
screwed up world of ours, there are lots and lots of thoroughly crazy
people out there. In the world of geekery, many of those crazy people
like to invent programming languages. Some very small number of them try to design
good languages and succeed; a much larger number try to design good languages
and fail; and then there are ones whose work I’m writing about. The
ones who deliberately set out to design strange, warped, twisted, and
nearly unusable languages, and succeed brilliantly. Most of the people who
design them call them “esoteric” programming languages. I call them evil.
Today, the beautiful grand-daddy of the esoteric language family: the one, the
only, the truly and deservedly infamous: Brainfuck,
designed by Urban Müller. (There are a number of different implementations available; just
follow the link.)
Only 8 commands – including input and output – all written using symbols. And
yet it’s Turing complete. In fact, it’s one-up on just being Turing complete – it’s
actually been formally specified with a complete formal theoretical design,
And it’s even been implemented in hardware!.