When people first start to learn about computers, they often get the impression that there are a limited number of programming languages available. This is, of course, because they are typically exposed to only a few examples, like C, C++, C#, and Python. In fact, as we discover in this List of Programming Languages, there are 49 whose names start with the letter ‘A’ alone (interestingly, this number includes “Assembly Language” as a single item, but there are almost as many assembly languages are there are microprocessor and microcontroller families).

Furthermore, the aforementioned list doesn’t include any of the so-called Esoteric Programming Languages, like Whitespace, which recognizes only the whitespace characters, space, tab, and return (any other character is treated as a comment); Chicken, which has just three tokens, the word “chicken”, ” “, and “\n”; and the aptly named Brainfuck, which is designed for extreme minimalism and leads to obfuscated code. As an example of the latter, the following program will output “Hello, World!”

++++++++++[>+++++++>++++++++++>+++<<<-]>++.>+.+++++++
 ..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.

There’s always something new to learn. For example, I only recently became aware of the programming language called INTERCAL, whose moniker is short for “Compiler Language With No Pronounceable Acronym.”

Do you recall my recent blog about The Birth of BASIC? Many people who started their careers in science, technology, engineering, and math (and myriad other subjects) in the 1960s and 1970s have nothing but good things to say about BASIC. By comparison, a lot of professional programmers hold BASIC in disdain because it includes statements like GOTO, which is used to jump to a specific location or label within the source code.

Admittedly, the use of GOTO can lead to problems in the wrong hands, but it can be jolly useful if you employ it in the right way. I can only imagine what the same professional programmers might have to say about languages (like one variation of INTERCAL) that support the COMEFROM statement, which is the inverse of the GOTO in that (by means of an associated parameter) it can take the execution state from any arbitrary point in the code. Things get even more fun when the COMEFROM parameter is computed on the fly, and don’t get me started on languages that support the DONT statement (which complements the DO loop construct).

The reason I’m waffling on about this here is that there’s an annual conference for software developers called NDC { Oslo }

I just saw a video of a presentation titled The Worst Programming Language Ever, which was given by Mark Rendle at NDC { Oslo } 2021.

As Mark says, the goal of his presentation is to “Take the worst features of all the languages we know and put them together to create an abomination with the worst syntax, the worst semantics, the worst footguns and the worst runtime behavior in recorded history.” (FYI The term “footgun” in this context is programming slang for any feature whose addition to a product results in the user shooting themselves in the foot.)

An impossible task, you might say, but Mark certainly gives it his all. How about you? Do any features of any programming languages spring to mind that you would care to commend or condemn?