× Author Homepage Contact

The Blub Paradox


Blog Home

A friend and I were talking about paradoxes, and due to some reason I mixed up Fermi’s Paradox with Graham’s Number, and started talking about Graham’s Paradox. This weird invention of mine forced the friend to look up Graham’s Paradox, and it turns out that there is actually a paradox suggested by Paul Graham called the Blub Paradox. To quote one of the blog posts in which he talks about it,

…I’m going to use a hypothetical language called Blub. Blub falls right in the middle of the abstractness continuum. It is not the most powerful language, but it is more powerful than Cobol or machine language.

And in fact, our hypothetical Blub programmer wouldn’t use either of them. Of course he wouldn’t program in machine language. That’s what compilers are for. And as for Cobol, he doesn’t know how anyone can get anything done with it. It doesn’t even have x (Blub feature of your choice).

As long as our hypothetical Blub programmer is looking down the power continuum, he knows he’s looking down. Languages less powerful than Blub are obviously less powerful, because they’re missing some feature he’s used to. But when our hypothetical Blub programmer looks in the other direction, up the power continuum, he doesn’t realize he’s looking up. What he sees are merely weird languages. He probably considers them about equivalent in power to Blub, but with all this other hairy stuff thrown in as well. Blub is good enough for him, because he thinks in Blub. When we switch to the point of view of a programmer using any of the languages higher up the power continuum, however, we find that he in turn looks down upon Blub. How can you get anything done in Blub? It doesn’t even have y.

By induction, the only programmers in a position to see all the differences in power between the various languages are those who understand the most powerful one…

This is just so cool, because this mirrors EXACTLY my feelings when I learn a new, supposedly more powerful language or software. There are so many things that come in, and I am just thinking, what does ANYONE want to use this feature for? This is just unnecessary! And then, after a few days, I start using some of the extra functionality offered by the language/software, and suddenly realisation dawns, that the said feature really was cool after all!

This extends not just to computers, but also to other things. It occurs all the time for me in Mathematics and Physics, when I am learning something and there is a powerful new method/formula to solve a certain class of problems, and it is only after I use it that I find out that it was actually useful after all. It is exactly for this reason that I always advocate that for anyone learning a new skill should try and create something using that skill - then they will know very well where exactly that skill works… and that is much more cool than merely learning abstract concepts and all the while questioning why exactly they should be learning it.

I just feel like modifying a quote by Mahatma Gandhi… ‘First you ignore a skill, then you laugh at it, then you fight the use of it, and then you end up using it!’