|
Chapter: The
Unique Qualities of a Programming Language
The
Unique
Qualities of a Programming Language
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.
Alan Turing
(1912 - 1954) is heralded as the father of computer science
What about speed, efficiency and dis-ambiguity, are these not also
amongst the unique qualities of a programming language?
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 typical lolcat image
An example of a Hello World program in LOLCODE follows:
HAI
CAN HAS STDIO?
VISIBLE "HAI WORLD!"
KTHXBYE
As you can see the language uses what is typically termed as
“lol-speak” as an integral part of it's syntax and keywording.
|
|