This introduction lecture sets the scene for the course. We introduce the notions of software languages and language software from a bigger, interdisciplinary picture.
We start with a linguistic discussion of language, its properties, and the study of language in philosophy and linguistics. We then investigate natural languages, controlled languages, and artificial languages to emphasise the human ability to control and construct languages. At the end of the first part of the lecture, we arrive at the notion of software languages as means to communicate software between people.
In the second part of the lecture, we extend the notion of software languages as means to realise processes on machines. We give an overview of language software, starting from interpreters and compilers. We then introduce various language processors as basic building blocks of compilers. We continue with a comparison of traditional compilers and modern compilers in IDEs. Finally, we introduce traditional compiler compilers and modern language workbenches as tools to construct compilers.
6. Software Languages 6
Language is
a purely human and non-instinctive method
of communicating ideas, emotions, and desires
by means
of a system of voluntarily produced symbols.
Edward Sapir: Language. An Introduction to the Study of Speech.
7. Software Languages 7
Language is
a method
of communicating
by means
of symbols.
Edward Sapir: Language. An Introduction to the Study of Speech.
8. Software Languages 8
Language is
a purely human and non-instinctive method
of communicating
by means
of a system of voluntarily produced symbols.
Edward Sapir: Language. An Introduction to the Study of Speech.
9. Software Languages 9
Language is
a purely human and non-instinctive method
of communicating ideas, emotions, and desires
by means
of a system of voluntarily produced symbols.
Edward Sapir: Language. An Introduction to the Study of Speech.
35. Software Languages 35
8512 programming languages - 18.5 million developers
Diarmuid Pigott: History of Programming Languages.
IDC: 2014 Worldwide Software Developer and ICT-Skilled Worker Estimates.
37. Software Languages 37
to provide a means
of communicating
numerical methods and other procedures
between people
John W. Backus: The Syntax and Semantics of the Proposed International Algebraic Language
of Zürich ACM-GAMM Conference.
38. Software Languages 38
to provide a means
of communicating
numerical methods and other procedures
between people
John W. Backus: The Syntax and Semantics of the Proposed International Algebraic Language
of Zürich ACM-GAMM Conference.
41. Software Languages 41
/* factorial function */
let
var x := 0
function fact(n : int) : int =
if n < 1 then 1 else (n * fact(n - 1))
in
for i := 1 to 3 do (
x := x + fact(i);
printint(x);
print(" ")
)
end
Tiger
the lecture language
42. Software Languages 42
#include <stio.h>
/* factorial function */
int fac(int num) {
if (num < 1)
return 1;
else
return num * fac(num - 1);
}
int main() {
printf(“%d! = %dn”, 10, fac(10));
return 0;
}
C
another lecture language
43. Software Languages 43
class Main {
public static void main(String[] args) {
System.out.println(new Fac().fac(10));
}
}
class Fac {
public int fac(int num) {
int num_aux;
if (num < 1)
num_aux = 1;
else
num_aux = num * this.fac(num - 1);
return num_aux;
}
}
MiniJava
the lab language
47. Software Languages 47
to provide a means
for realising a stated process
on a variety of machines
John W. Backus: The Syntax and Semantics of the Proposed International Algebraic Language
of Zürich ACM-GAMM Conference.
48. Software Languages 48
to provide a means
for realising a stated process
on a variety of machines
John W. Backus: The Syntax and Semantics of the Proposed International Algebraic Language
of Zürich ACM-GAMM Conference.
64. Software Languages 61
traditional compilers
compilation by transformation
backend
frontend
parse desugar analyse normalise
generate optimise format
76. Software Languages 69
traditional compiler compilers
compilation + compilation
language
implementation
compile
compiler
language
definition
compile
84. Software Languages 77
attribution
slide title author license
1, 35 Programming language textbooks K.lee public domain
2 The Bigger Picture F. Delventhal CC BY 2.0
5 Rose 2 des Kleinen Prinzen Antoine Saint-Exupéry public domain
11 Dog and owner on Ballykinler Beach Jonny Green CC BY 2.0
12 Fashionable melange of English words (1) trialsanderrors public domain
13 Gift asenat29 CC BY 2.0
13 Toxic John Morgan CC BY 2.0
14 Latin Grammar Anthony Nelzin
15 Ginkgo Biloba Johann Wolfgang von Goethe public domain
16 Sub-deb slang genibee CC BY-NC 2.0
17 Wednesday Michael Fawcett CC BY-NC-SA 2.0
19, 25, 67 Thesaurus Enoch Lau CC BY-SA 3.0
22
The captured Swiftsure, Seven Oaks, Loyal
George and Convertine brought through
Goeree Gat
Willem van de Velde the Younger public domain
85. Software Languages 78
attribution
slide title author license
23 Tower of Babel Pieter Bruegel the Elder public domain
26 The Ashtadhyayi translated by Srisa Chandra Vasu public domain
27 Buchdruckerduden public domain
28
Boeing 737-300 -400 -500 Manitenance
Manual Alaska Airlines
Bill Abbott CC BY-SA 2.0
30 Esperanto public domain
31 Quenya Juanma Pérez Rabasco CC BY 2.0
32 Klingon Dictionary Josh Bancroft CC BY-NC 2.0
33 Overweight Na'vi HARRY NGUYEN CC BY 2.0
36, 45, 46 IBM Electronic Data Processing Machine NASA public domain
41 Tiger Bernard Landgraf CC BY-SA 3.0
42 The C Programming Language Bill Bradford CC BY 2.0
43 Italian Java book cover
49-73 PICOL icons Melih Bilgil CC BY 3.0
Hinweis der Redaktion
\n
\n
Who printed the slides? Who took it with her?\n\ncontent appreciated (for exams) but boring during lectures\n\nslides in this course: some content much content by speaking\n\nprint out b/w versionmake comments\n
strange term\nWho heard of it already?\ncomputer language? programming language?\n
not a language but language\n
\n
old definition, 1921\n\nread it line by line\n
old definition, 1921\n\nread it line by line\n
old definition, 1921\n\nread it line by line\n
old definition, 1921\n\nread it line by line\n
old definition, 1921\n\nread it line by line\n
old definition, 1921\n\nread it line by line\n
no relation between sign and meaning\nno arbitrary composition but systematic\nsay what never was said\nwalking = instinctive\nsocial agreement\nbecause of arbitrariness\n
no relation between sign and meaning\nno arbitrary composition but systematic\nsay what never was said\nwalking = instinctive\nsocial agreement\nbecause of arbitrariness\n
no relation between sign and meaning\nno arbitrary composition but systematic\nsay what never was said\nwalking = instinctive\nsocial agreement\nbecause of arbitrariness\n
no relation between sign and meaning\nno arbitrary composition but systematic\nsay what never was said\nwalking = instinctive\nsocial agreement\nbecause of arbitrariness\n
no relation between sign and meaning\nno arbitrary composition but systematic\nsay what never was said\nwalking = instinctive\nsocial agreement\nbecause of arbitrariness\n
no relation between sign and meaning\nno arbitrary composition but systematic\nsay what never was said\nwalking = instinctive\nsocial agreement\nbecause of arbitrariness\n
no relation between sign and meaning\nno arbitrary composition but systematic\nsay what never was said\nwalking = instinctive\nsocial agreement\nbecause of arbitrariness\n
no relation between sign and meaning\nno arbitrary composition but systematic\nsay what never was said\nwalking = instinctive\nsocial agreement\nbecause of arbitrariness\n
no relation between sign and meaning\nno arbitrary composition but systematic\nsay what never was said\nwalking = instinctive\nsocial agreement\nbecause of arbitrariness\n
no relation between sign and meaning\nno arbitrary composition but systematic\nsay what never was said\nwalking = instinctive\nsocial agreement\nbecause of arbitrariness\n
no relation between sign and meaning\nno arbitrary composition but systematic\nsay what never was said\nwalking = instinctive\nsocial agreement\nbecause of arbitrariness\n
no relation between sign and meaning\nno arbitrary composition but systematic\nsay what never was said\nwalking = instinctive\nsocial agreement\nbecause of arbitrariness\n
no relation between sign and meaning\nno arbitrary composition but systematic\nsay what never was said\nwalking = instinctive\nsocial agreement\nbecause of arbitrariness\n
no relation between sign and meaning\nno arbitrary composition but systematic\nsay what never was said\nwalking = instinctive\nsocial agreement\nbecause of arbitrariness\n
talk about languagetalk about a language\n\nby using a language\n
lexicology: vocabulary in the lexicon \nmorphology: how to build words from parts\nsyntax: how to build sentences from words\n\napplied linguistics: language in every day life, language planning, translation, 2nd lang acquisition\nneurolinguistics: neural mechanisms in brain comprehension, production, acquisition\n
lexicology: vocabulary in the lexicon \nmorphology: how to build words from parts\nsyntax: how to build sentences from words\n\napplied linguistics: language in every day life, language planning, translation, 2nd lang acquisition\nneurolinguistics: neural mechanisms in brain comprehension, production, acquisition\n
lexicology: vocabulary in the lexicon \nmorphology: how to build words from parts\nsyntax: how to build sentences from words\n\napplied linguistics: language in every day life, language planning, translation, 2nd lang acquisition\nneurolinguistics: neural mechanisms in brain comprehension, production, acquisition\n
lexicology: vocabulary in the lexicon \nmorphology: how to build words from parts\nsyntax: how to build sentences from words\n\napplied linguistics: language in every day life, language planning, translation, 2nd lang acquisition\nneurolinguistics: neural mechanisms in brain comprehension, production, acquisition\n
\n
hard to say what is a language (and not a dialect)\n
speakers, not writers\n\ntower reference to misunderstanding\n
avoid misunderstandings\nstep 1: language control, planning\nstep 2: artificial languages \n
avoid misunderstandings\nstep 1: language control, planning\nstep 2: artificial languages \n
avoid misunderstandings\nstep 1: language control, planning\nstep 2: artificial languages \n
avoid misunderstandings\nstep 1: language control, planning\nstep 2: artificial languages \n
avoid misunderstandings\nstep 1: language control, planning\nstep 2: artificial languages \n
made for human communication: just another artificial language?\n\nestablish this stated process\nestablish it by the help of machines\n\n
made for human communication: just another artificial language?\n\nestablish this stated process\nestablish it by the help of machines\n\n
not only ALGOL: many other languages in SE\n
\n
\n
\n
\n
\n
one example language\n\nused during the lecture to explain tools\n\nconcepts: expressions, functions\n
another example language\n\nused during the lab\n\nvery restricted subset of Java\n
how fit compilers into the story?\n\nwhat do we need them for?\n
remember the second one\n\ncompilers help\n\n\n
replace human by artificial language\nhelps for communicating algorithms, ideas, designs\n\nbut still no stated process on machine\ncompiler translates\nuse the machine to establish the process on the machine\n
replace human by artificial language\nhelps for communicating algorithms, ideas, designs\n\nbut still no stated process on machine\ncompiler translates\nuse the machine to establish the process on the machine\n
replace human by artificial language\nhelps for communicating algorithms, ideas, designs\n\nbut still no stated process on machine\ncompiler translates\nuse the machine to establish the process on the machine\n
replace human by artificial language\nhelps for communicating algorithms, ideas, designs\n\nbut still no stated process on machine\ncompiler translates\nuse the machine to establish the process on the machine\n
replace human by artificial language\nhelps for communicating algorithms, ideas, designs\n\nbut still no stated process on machine\ncompiler translates\nuse the machine to establish the process on the machine\n
replace human by artificial language\nhelps for communicating algorithms, ideas, designs\n\nbut still no stated process on machine\ncompiler translates\nuse the machine to establish the process on the machine\n
console interaction\n
console interaction\n
console interaction\n
mysterious AST: internal representation\n
mysterious AST: internal representation\n
mysterious AST: internal representation\n
mysterious AST: internal representation\n
mysterious AST: internal representation\n
mysterious AST: internal representation\n
demo Tiger compiler\n
\n
feedback loop\n
feedback loop\n
feedback loop\n
feedback loop\n
feedback loop\n
many language processors\n\nbuild larger language processors from smaller components\n\ntraditional compiler: (scanner +) parser + checker + code generator\n
another dimension of term software language\n\nlanguage processors are software\n\nlanguage processors define language\n\nwhat&#x2019;s accepted by a compiler, is a valid program\n
\n
how can we build such pieces of software\n\nsomehow special\n
software languages to implement software languages\n\nsoftware languages to define software languages\n
meta-tooling\n
meta-tooling\n
meta-tooling\n
\n
meta-tooling\n
\n
\n
\n
\n
enrol at blackboard\n\notherwise: no assignments, no grades\n\nassignments are individual\n
give the chance to share\n\nmake an appointment\n
untraditional\n\nmake you fit for the lab\n
\n
book alone won&#x2019;t help\n\nread scientific papers\n\nsee other slides, share\n
round-up on every lecture\n\nwhat to take with you\n\ncheck yourself, pre- and post-paration\n
\n
\n
\n
\n
something just interesting\n\nsomething you should read to manage the lab/course\n
something just interesting\n\nsomething you should read to manage the lab/course\n
something just interesting\n\nsomething you should read to manage the lab/course\n
warning: next lecture theory\n\nget used to Eclipse and MiniJava anyway\n
round-up on every lecture\n\nwhat to take with you\n\ncheck yourself, pre- and post-paration\n