Presentation on theme: "Formal Languages: main findings so far"— Presentation transcript:
1Formal Languages: main findings so far A problem can be formalised as a formal languageA formal language can be defined in various ways, e.g.:the language accepted by a given DFSAthe language accepted by a given NDFSAthe language denoted by a given Regular ExpressionWe stated without proof: DFSA=NDFSAWe proved: FSA = Regular Expressionthink about what “=“ means
2You have seen two equivalence results Formal LanguagesFSAs and Regular Expressions are just two methods for defining a formal language. Many others exist.You have seen two equivalence resultsBut some methods allow us to define languages that FSAs (and Regular Expressions) cannot defineIn fact, an entire series of increasingly complex formal languages is known: the Chomsky hierarchyEach requires a more complex type of automaton to define/accept the language in question.At the top of this hierarchy: Turing Machines
4Remainder of the course Mechanisms higher up in the hierarchy can recognize more languagesTuring Machines resemble FSAs, but are more powerful. In particular, theycan write as well as read symbolscan move left as well as rightward along a stringhave “failure” states as well as “success” statesWe’ll turn to Turing Machines in the third part of this course
5A full course on formal languages and computability would tell you about all the elements of the hierarchy (e.g. context free languages and pushdown automata)The plan of this course is different: we now turn to a different model of computation
6It is believed that TMs can do anything that any computer could ever do (Lectures 16-24) How can we know what any computer could ever do?Let’s broaden our view by looking at a class of programming languages entirely different from JAVA, Pascal, Fortran, Basic, ...
7We kill two birds with one stone: The name of this programming paradigm: the functional model of programmingMathematical basis: the calculusThe programming language: HaskellWe kill two birds with one stone:we get a better view of what programming meansyou learn about an up-and-coming programming languageparticularly useful for maths