So we have seen that programming languages are notations to express computations, we have seen that programs are things that are written according to this notation, we have seen that programs can be executed to perform a computation, and we have seen that computations are operations over some data. We have seen two examples of programs, interpreters and compilers, that respectively execute and translate other programs. And we have seen how interpreters can execute interpreters and compilers, and how compilers can translate interpreters and compilers. (So now would probably be a good time to take a break and rewatch The Matrix, The Thirteenth Floor, Inception, Paprika, Caprica, eXistenZ, or even, hey, Last Action Hero. And of course, there is always Snow Crash.)
All of that, however, does not quite tell us what a computation is, nor what a notation for computation could be. But they come hand in hand, just like language and thought (one uses language to express one’s thoughts, but one needs to have thoughts to express them in a language). A next lecture note reviews typical notions of computation and the corresponding style of notation: imperative, declarative, etc.
CONSTANT VIGILANCE!
A program is something written in a programming language, and a compiler translates a program from one programming language to another. So please pretty please resist the all-too-frequent sloppiness of saying that compilers compile programming languages or that languages run, because they don’t. This nonsense not only hints at muddled thinking, and muddled thinking (“a programming language is when...”, “programming is when...”) does not scale at all in the long run, though it makes for very short job interviews. As Boileau wrote in his Art of Poetry, “what is well understood is delivered clearly”, a French alexandrine. When communicating something, the measure of our understanding is the clarity of our discourse.
So let’s not talk about IT Technology either, nor about online web services, flying UFOs (or unidentified UFO objects, for that matter), and other redundant pleonasms.
Find a known pleonasm (e.g., an ATM machine, but an automated ATM machine would work too) and invent a plausible one (e.g., a travel journey-quest trip).
Suggestions:
Food for thought:
RIP In Peace—Anon.
Is each of the following terms a pleonasm, a contradiction, or neither?
Are the following sentences self-referential? (Don’t over-think your answer: these are not trick questions.)
Justify each of your answers.
In English every word can be verbed.—Alan Perlis‘s programming epigram #59
Are the following sentences self-referential? (Don’t over-think your answer: these are not trick questions.)
Facetiously, Mimer asks Sigbjørn the Fearless whether there exists a word in English that contains all of the vowels “a”, “e”, “i”, “o”, “u”, and “y”, in that order. Does there exist such a word in English?
Possible answers:
“Mad Eye” Moody: SOMETHING WRONG WITH YOUR CAPSLOCK KEY?
Cyrano de Bergerac meets Pinocchio, and they chit-chat amicably. (Cyrano knows full well that Pinocchio’s nose grows whenever he tells a lie, and that it doesn’t whenever he tells the truth.)
Pinocchio takes his handkerchief and sneezes into it. Without removing his handkerchief, he says: “My nose is growing.”
Should Cyrano believe Pinocchio? That is to say: is Pinocchio telling the truth?
Possible answers:
Pinocchio meets Cyrano de Bergerac, and they chit-chat amicably.
Facetiously, Pinocchio takes his handkerchief and covers his nose with it. Without removing his handkerchief, he says: “My nose is not growing.”
Should Cyrano believe Pinocchio? That is to say: is Pinocchio telling the truth?
Possible answers:
Harald: Is the sentence “This is a paradox.” a paradox?Alfrothul: And what about “This is not a paradox.”?Loki: I love you guys.
Playfully, Pinocchio announces that he going to sneeze really, really loudly. Is he going to sneeze loudly?
Reflecting on the notion of definition, as documented in the accompanying slides, compose a definition with your eyes open:
The present lecture notes are peppered with Wikipedia pointers. Acquire a sense of the raison d’être of these pointers by following several of them.