Is this thing on?
It’s cliché to open a tech blog like this, so cliché that pointing it out is itself cliché. But what can I say but…
“Hello, world!”
As you can see, this is now my blog. You probably don’t remember what this website used to look like. In fact, you shouldn’t. I would be incredibly weirded out if you did.
If you look far enough back in the GitHub repo (please don’t), you’ll see me using a pre-existing HTML5 template. I remember sitting at the desk in my freshman dorm when I first cobbled that together, bright-tailed and bushy-eyed, following some tutorial. This was so long ago that I messed up my Git credentials (I think I was using GitHub Desktop at this point), causing three Raymonds to be in the commit history. Gotta love how Git never forgets. And never forgives.
Anyway.
Since we’re on the topic of origin stories, where did this “Hello, world” business come from? This practice, like many things in computer science, comes from K&R.1
main()
{
printf("hello, world\n");
}
But this isn’t where it originated. This example was also used by Kernighan in an internal document he wrote prior, Programming in C: A Tutorial. But wait! That wasn’t the origin either. It came from another tutorial Kernighan wrote, this one on the language B.
main( ) {
extrn a, b, c;
putchar(a); putchar(b); putchar(c); putchar('!*n');
}
a 'hell';
b 'o, w';
c 'orld';
This language is so old it doesn’t even have syntax highlighting supported here. Although this is the first recorded instance of the “Hello, world” program, it can allegedly back to BCPL in 1967. Turtles all the way down.
Getting Func-y (and Esoteric)
But not all “Hello, worlds” are created equal. Some “Hello, worlds” aren’t even “Hello, worlds.”2
Functional programming languages, such as Lisp, ML, and Haskell, tend to substitute a factorial program for “Hello, world”, as functional programming emphasizes recursive techniques, whereas the original examples emphasize I/O, which violates the spirit of pure functional programming by producing side effects.
(Oh, how I love you, functional programming.)
But even in these cooler, better languages, just printing out “Hello, world” is quite boring.
;;; Hello world in Common Lisp
(print "Hello World")
(* Hello World in SML *)
fun hello() = output(std_out, "Hello World!");
-- Hello World in Haskell
main = putStrLn "Hello World"
Where’s the pizzazz? Where’s the zhuzh? Where’s the “joy and whimsy” as people are so eager to say nowadays? Well, you’re not gonna find it in industry. Any discussion involving the quirks of programming language must eventually turn to esolangs, because those guys are the only ones who know how to party.
Speaking of fun,3 if there’s one thing programmers loved to do back in the day, it’s create a big comprehensive text file on something. So of course, there was a “Hello, world” list which spread around on old BBSes, which eventually bloomed into a “Hello, world” webpage, which is now the Hello World Collection.4 That’s where many of the code snippets in this post have been sourced from. It features all sorts of language, from boring to proper esoteric.
For example, Piet’s5 “Hello, world” looks like this:

My favorite6 entry on the page, belonging to the language “Pocket Calculator,”7 is just the number 0.7734, which is even funnier since modern graphing calculators can actually run code. The language Oz8 somehow starts its implementation with the word “functor.” Ecstatic’s9 source code is about 11*10^11110 exclamation points in a row with nothing else.
But the most impressive “Hello, world” by far belongs to Malbolge.
(=<`$9]7<5YXz7wT.3,+O/o'K%$H"'~D|#z@b=`{^Lx8%$Xmrkpohm-kNi;gsedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543s+O<oLm
Once again, I’ll let Wikipedia do the talking.
Malbolge was very difficult to understand when it arrived, taking two years for the first Malbolge program to appear. The author himself has never written a Malbolge program. The first program was not written by a human being; it was generated by a beam search algorithm designed by Andrew Cooke and implemented in Lisp.
And to top it all off, it doesn’t even print “Hello, world.” It prints “HEllO WORld.”
I always sucked at writing conclusions.
In the end, while we may scoff at the simplicity of “Hello, world” in other languages like Python, you can’t argue with practicality. If all you need your program to do is say hi, all it needs to hear is “say hi.” But there’s a time and place for practicality. Why live in constant 9-to-5 mode?
I’m glad esolangs exist. It shows programmers can actually have fun with this stuff. Not everything has to be cut and dry, business business business. I hope this blog is less industry language and more esolang: rarely practical, but always fun.
𓇼 ⋆.˚ 𓆉 𓆝 𓆡⋆.˚ 𓇼
-
The code has been rendered as it appeared in the first edition of The C Programming Language. I checked. I also checked the code itself, which is no longer compliant with ISO C99 and later (at the time of writing this, we’re at C23, released on Halloween11 of 2024). Nowadays, you need to include the
stdio.hlibrary header and you need to explicitly state thatmainreturns anint. ↩ -
This quote, like most of the information in this post, was shamelessly stolen from the Wikipedia page on “Hello, world”. ↩
-
No pun intended. ↩
-
Rösler, Wolfram et al. The Hello World Collection, 14 Sept. 2014, helloworldcollection.de/. ↩
-
Ibid. ↩
-
My least favorite entry on the page belongs to Java. ↩
-
Ibid. ↩
-
Ibid. ↩
-
Ibid. ↩
-
The exact number, according to the Esolang Wiki, is 11,745,396,970,761,548,557,844,427,413,766,327,995,589,772,739,314,086,919,355,093,720,961,223,541,738,614,442,550,691,210,954,782,889,076,179,929,044. ↩
-
How frightening! ↩