At the simplest level a programming language should be Turing complete. Turing complete refers to a set of data manipulation rules that, can simulate a Turing machine. This begs the question to be asked, who is Turing and what is his machine?
Alan Turing was a British mathematician that is heralded as the father of computer science. He lived from 1912 to 1954 when he died at the age of 41. Turing is responsible for creating the Turing machine which is a theoretical device that operates with a strip of tape imprinted with an infinite array of symbols, the machine is able to read a symbol and alter the symbol and the symbol in turn affects the behavior of the machine. The tape that the symbols are printed on represent memory and it can move back and fourth so that any symbol can be read by the machine and altered by it, additionally at any given time a symbol is affecting the state of that machine.
Turing referred to this machine as an “a(utomatic)-machine” and it forms the fundamental logic of all computer algorithms. This principle is still used in modern computers. A programming language that is Turing complete complies with this logic, and will subsequently be able to run on all computers based on the Turing machine. What this simply means is that programming languages will need to be able to run on a basic computer system that at the very least has a Central Processing Unit (CPU) that is based on the Turing machine, which includes all known operational computer models.
Quantum computing models are commonly based on the quantum Turing machine also known as the Universal Quantum Computer, and even these models can be related back to the classical Turing machine. Quantum computing models are theoretical models of how a quantum computer could work once the technology can be implemented, in much the same way that the Turing machine was a theoretical model of today’s modern computer before it’s current implementation.
Simply put, no they are merely guidelines that programmers may or may not adapt into the computer languages they develop. However, most useful programming languages will in some form or another adapt these standards into their design. There is another form of computer language development that does not comply with these standards, but the languages that develop from this field do still comply with Turing completeness, as without this design implementation it would not be possible to run the language on a computer modern or old.
This field of computer science is referred to as esoteric programming languages. Esoteric programming languages usually are not designed to be useful for real-world programming situations but are usually more popular among hackers that develop these language to test the boundaries of computer programming language design.
A relatively well known example of an esoteric programming language is the language known as brainfuck . Brainfuck is known as a Turing-tarpit language as it still qualifies as a Turing complete language even though the entire language consists of only 8 commands and no operands. We’ll be discussing what exactly a command is shortly and what an operand is a bit later, but needless to say this is a language that is still functional with a bare minimum of interfacing protocols. An example of a “hello world program” (yet another concept we will get to a bit later), which is a program that simply prints the words “hello world” to the screen in brainfuck code follows:
LOLCODE is another example of an esoteric programing language that is based on the text within lolcats images. Lolcats are images of cats that circulate the Internet, often in cute and whimsical representations. These images are accompanied with text that is generally idiosyncratic and grammatically incorrect with the intent to contribute humour to the image.
An example of a Hello World program in LOLCODE follows:
CAN HAS STDIO?
VISIBLE “HAI WORLD!”
As you can see the language uses what is typically termed as “lol-speak” as an integral part of it’s syntax and keywording.