How useful can the simple programming language “BlooP” be?

Website Developer
6 min readApr 28, 2021

--

A waste or not?

Though the cryptid Bloop has never been seen, one could argue that BlooP the language cannot be seen too. But BlooP is an incredibly simple example of what a programming language can be. Not necessarily simple, meaning it’s easy to learn, but simple, meaning it can’t really be used for anything useful. It’s so simple that it doesn’t have the capability to subtract numbers without typing out a large set of instructions. Even then, negative numbers don’t even exist to BlooP.

https://monster.fandom.com/wiki/Bloop

It was initially created by a man named Douglas Richard Hofstadter in 1979 to make a point. Most languages are made in an attempt to make computer science easier. Hofstadter created BlooP, alongside two other similar languages (theoretical one), to demonstrate the “halting problem.” The halting problem is essentially a decision problem, but it is impossible to solve.

Hofstadter also created another simple programming language called FlooP and an impossible language called GlooP. FlooP and BlooP are basically identical, besides the fact that FlooP isn’t bounded like BlooP is. All that means is that BlooP has way stricter rules than FlooP, and can’t repeat instructions forever.

GlooP was a theoretical language that was thought to be able to solve the halting problem. This, however, was impossible, therefore making GlooP itself impossible.

BlooP isn’t currently in use in any programs.

It wasn’t intended to. It has never been. Since it was never intended to be used professionally, it hasn’t been. The limitations of the coding language itself are a huge reason for this.

Modern operating systems require that computer programmers use coding languages with the capabilities of very complex algorithmic functions. Calculations that the computer must do thousands of times per second and display a simple, human-friendly representation to the user. BlooP is capable of repeating certain calculations, but the limitations of the language itself are too restricting to do what is necessary for our everyday actions.

The fact of the matter is this was simply an education tool. It was never meant to be used in a professional programming setting. Overall, it’s an easy programming language to learn and maybe one of the easiest programming languages to explain. Try to learn Java. You’ll understand what makes this language simple after returning to it.

There is a resource online that someone wrote in the scripting language ruby that allows you to type BlooP. If you’d ever like to try solving problems with BlooP, there are ways to do it. Other than that, however, I was unable to find any other links to BlooP programs/ platforms online.

Benefits and Downsides

There is only one benefit I can see, and it’s not even stemming from using it. BlooP was entirely created for the sole reason of explaining the halting problem, as stated before. In conjunction with its sister languages FlooP and GlooP, the programming language can help someone understand the idea.

By itself, however, it isn’t an impressive language by any means. The only operations it can do are addition, multiplication, and checking numbers. To do things like subtracting, divide, find a factorial, you need to define a function. You more specifically need to figure out a way to do so with the operators available.

The simplicity of this language is its greatest downside. Since it is physically unable to have unbounded loops, it’s not even Turing-complete. Turing-complete means it can recreate or simulate a turing machine.

BlooP cannot create web applications, web pages, mobile apps, or anything with high demand in the modern computer era. It is not a form of object-oriented programming, and web developers have no use for it, as most modern languages are equipped for all of their software development needs. Even at the time of BlooP’s creation, there were more popular programming languages, although software engineering was still in its early stages.

BlooP, FlooP, and GlooP were created to show the possible programs made with certain limitations. BlooP was the most limited, only able to produce the most primitive programs. FlooP was a little less ‘bounded’ and, in turn, actually gained the title of Turing-complete. FlooP was said to be able to make any calculations your computer can.

GlooP was theoretically even less restricted than FlooP, enough to solve the halting problem. You would be able to 100% tell if the program would loop forever or terminate. This was impossible, though, so the language was also impossible.

Code Examples

Here’s an example of the process that is required to subtract:

DEFINE PROCEDURE MINUS [M,N]:

BLOCK 0: BEGIN

IF M < N, THEN:

QUIT BLOCK 0;

LOOP AT MOST M + 1 TIMES:

BLOCK 1: BEGIN

IF OUTPUT + N = M, THEN:

ABORT LOOP 1;

OUTPUT ⇐ OUTPUT + 1;

BLOCK 1: END;

BLOCK 0: END.

The code first defines a function (called a procedure in BlooP) with the name “minus” and continues to make a loop that first checks to see if M is greater than N. If that is not the case, the code quits. This is because BlooP doesn’t recognize numbers below zero.

The code block then continues to add from the lower number to the higher number. This way of counting the distance results in the subtraction between the two. Sadly, this is the only way to get subtraction into a program when using BlooP.

Here’s the condition from the loop above which terminates the current loop if true:

IF OUTPUT + N = M, THEN:

ABORT LOOP 1;

This is what caused the code to terminate if M in the equation was smaller than N.

Here’s another code example:

DEFINE PROCEDURE FACTORIAL [N]:

BLOCK 0: BEGIN

OUTPUT ⇐ 1;

CELL(0) ⇐ 1;

LOOP AT MOST N TIMES:

BLOCK 1: BEGIN

OUTPUT ⇐ OUTPUT × CELL(0);

CELL(0) ⇐ CELL(0) + 1;

BLOCK 1: END;

BLOCK 0: END.

The code above defines a function to produce a factorial of whatever number is input into the code. A factorial is what you get when you multiply an integer with every single integer below it except zero. An example would be the factorial of 4, which would be 4*3*2*1 = 24.

Trends

There’s not really much I can say when it comes to trends for BlooP. It was created to help explain a paradox when it comes to computer languages. No known programs use BlooP as the base language because BlooP is unable to make complicated calculations. It’s far too complicated and slow to be useful in any way except what it was designed for.

The main use of BlooP was back in 1979 when it was created. While writing the book “Gödel, Escher, Bach’’, Hofstadter needed a way to help simplify the explanation of the halting problem (explanation linked above). To do this, he came up with the idea of developing the most simple coding languages possible.

BlooP was the simplest, FlooP was less restricted but still simple, and he theorized an impossible language, “GlooP’’ that would solve the halting problem. BlooP was the simplest, FlooP was less restricted but still simple, and he theorized an impossible language, “GlooP,” that would solve the halting problem. BlooP was mainly created to set up the solution to the problem, as it was the language with the most restrictions.

I will say, however, that the idea behind this language is interesting. It would be easy to learn the few operations it has, but actually making something would take some problem-solving. I mentioned earlier that someone made a BlooP interpreter using ruby. As far as I can tell, this was made fairly recently, and for research purposes, I may need to take a look at it.

Takeaway

BlooP is an extremely simple programming language that was created to explain the halting problem. It is not useful in a professional setting, and it can’t efficiently compute anything with a slight complexity. At 41 years old, it is said that BlooP has only 20 recorded uses, which is more than you’d expect from a small learning tool.

Even by itself, BlooP cannot be used for anything in our modern technological world. By combining it with its sister language, FlooP, and explaining the impossible language, GlooP, its usefulness comes to fruition. The concept, however, is indeed an interesting one, and if you’d like to, learning BlooP can be a useful experience.

The simplicity of its operations forces the programmer to use their problem-solving skills to figure out a way around a problem they want to solve. It also allows you to come across the roadblock of the language you are using. If what you want to achieve isn’t physically achievable with the tools at hand, when do you realize that? How far should you push an idea before you realize it does not work, and you need to reconsider your toolset.

The language itself is useless in the hands of any modern programmer and has never been used for any purpose besides, as I’ve started a few times now, the halting problem. Past that, I see no reason for anyone to attempt to learn BlooP past simple curiosity because it will never fulfill your needs as a programmer.

--

--