Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Begreber og Redskaber 1. Rettelse til sidst Sidst vrøvlede jeg lidt om algoritmer: Ordet stammer fra Abu Ja’far Mohammed ibn Musa al- Khowarizm der i.

Lignende præsentationer


Præsentationer af emnet: "Begreber og Redskaber 1. Rettelse til sidst Sidst vrøvlede jeg lidt om algoritmer: Ordet stammer fra Abu Ja’far Mohammed ibn Musa al- Khowarizm der i."— Præsentationens transcript:

1 Begreber og Redskaber 1

2 Rettelse til sidst Sidst vrøvlede jeg lidt om algoritmer: Ordet stammer fra Abu Ja’far Mohammed ibn Musa al- Khowarizm der i 825 AD skrev en matematisk tekstbog med titlen ”Kitab al jabr w’al-muqabala” Tidligere eksempler: Euclid ca. 300 BC

3 Programmeringssprog Sprog = mængde af sætninger ?

4 Programmeringssprog Sprog = syntaks+semantik+pragmatik Syntaks: hvilken tekst der må stå Semantik: hvad det betyder Pragmatik: hvordan det bruges

5 Syntaksbeskrivelse Syntaksbeskrivelse: beskrivelse af de korrekte sætninger i sproget. idag Regulære udtryk Kontekstfri grammatikker (EBNF)

6 Formål Kunne læse syntaksbeskrivelse af Java –Nyttigt redskab i en værktøjskasse Forstå hvad en syntaksbeskrivelse er –Se om tekster er syntaktisk korrekt Give et videre perpektiv –Historie –Videnskab mellem lingvistik og matematik

7 Syntaks: hvad må der stå? public class A { public static void main(String[ ] args) { System.out.println(”Hello”); }

8 Syntaks Præcedens regler i*j+k*l Associativitet a-b-c(a-b)-c a=b=ca=(b=c) Dangling else –if() if() stmt; else stmt

9 Semantik Hvad betyder det? Hvad er forskellem på & og &&? Hvornår er to strenge ens? Hvordan virker % for negative tal? Osv...

10 Pragmatik Konventioner –Klassenavne med stort bogstav –Felter og metoder med små bogstaver –Konstanter med kun store bogstaver Ideomer –for(;;){.. if(..)break;..} God stil –Indrykninger, kommentarer,..

11 Sprog Formelt vs. Naturligt sprog Programmering sker i formelle sprog Maskinel analyse af naturlige sprog er kompliceret aktivt forskningsfelt Eksempler på formelle sprog –Telefonnumre –Email adresser –HTML dokumenter –Java programmer

12 Syntaksbeskrivelse Fra ccj2 2.2 Assignment variableName = expression; 6.1 The while statement while( condition ) statement Osv..

13 Notation Terminaler: Det der skal stå direkte i tekster (f.eks. Dele af Javaprogram ) –f.eks. while og ( eller som ” while ” Nonterminaler: dele af tekster som forklares andetsteds i grammatikken –f.eks expression

14 Mere notation EBNF udtryk bruger: –[.. ] mulighed 0-1 –{.. }gentagelse 0-flere –(.. |.. )valgmulighed EBNF regler har ofte formen Nonterminal: udtryk1 udtryk2 Det skal læses som: (udtryk1 | udtryk2)

15 Grammatik: udtryk Grammatikken for regneudtryk i MiniJava Expression : VarName | Number | ””” { Tegn } ””” | Expression ”+” Expression | Expression ”-” Expression | ”(” Expression ”)”

16 Udtryk: navne, tal Number : Ciffer { Ciffer } Ciffer : ”0” | ”1” | ”2” | ”3” | ”4” | ”5” | ”6” | ”7” | ”8” | ”9” VarName : Bogstav { Ciffer | Bogstav } Bogstav : ”a” | ”b” | ”c” |... Tegn : Bogstav | Ciffer | ”.” | ”,” |...

17 Udtryk Eksempler: ”hej verden” 1+2+3+4 1+(1+2+3+4)+ 1+(1+(1+(1+1)))

18 Eksempel: udtryk Java udtryk: 2-3+4 Afledning: Expression → Expression ”-” Expression Number Expression ”+” Expression 2 3 4

19 Eksempel: udtryk Javaudtryk: 2-3+4 Alternativ afledning: Expression → Expression ”+” Expression Expression ”-” Expression Number 2 3 4

20 Grammatikken er rekursiv To regneudtryk kan sættes sammen med et ”+” eller et ”-” og tilsammen er det et regneudtryk. Rekursive definitioner kan være problematiske… Barbereren barberer alle de folk i byen som ikke barberer sig selv. Hvem barberer barbereren?

21 Fibonacci tal De to første fibonacci tal er 1 og 1. Et fibonacci tal er summen af de to foregående fibonacci tal. Definitionen er rekursiv. 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89 Rekursive definitioner er ok hvis det definerer noget ”større” ud fra noget ”mindre” og det ”mindste” er veldefineret uden rekursion. (”større”, ”mindre” og ”mindste” kan formaliseres som ordnede mængder i matematikken)

22 Tvetydig grammatik Grammatikken er tvetydig Dvs: Der findes tekststrenge som kan afledes på mere end en måde fra grammatikken. Tvetydighed er ikke et problem for hvad der er syntaktisk korrekt Tvetydighed er et problem når vi skal forklare semantikken af udtryk Tvetydighed afklares ofte ved at specificere associativitet og præcedens af operatorer.. ”Time flies like an arrow”

23 EBNF Extended Backus Naur Form 1963: Brugt i Algol rapport (Peter Naur ed.) John Backus medforfatter. (De brugte en simplere version uden ”{” og ”}”) Variant af Kontekst-fri grammatikker (Chomsky 1956) Variant brugt af Panini, indisk grammatiker ca. 300 BC, til beskrivelse af Sanskrit

24 Regulære udtryk Regulære udtryk er en variant af EBNF hvor man kun har et udtryk og ikke mulighed for ekstra regler Kendes fra søgninger i mange tekstbehandlingssystemer Bruger ofte lidt andre symboler: –(.. )* betyder gentag 0-flere gange –(.. )+ betyder gantag 1-flere gange –(.. )? betyder mulighed 0-1

25 Chomsky hierarkiet Type 0 sprog: Uindskrænkede sprog (sprog med en formel syntaks) Type 1 sprog: Kontekst-følsomme sprog (hvad der må stå hvor i tekster afhænger af kontekst) Type 2 sprog: Kontekst-frit sprog (sprog der kan beskrives med EBNF eller tilsv.) Type 3 sprog: Regulære sprog (sprog der kan beskrives ved en enkelt regel i EBNF eller tilsv. Dvs. regulære udtryk)

26 Chomsky Noam Chomsky: lingvist og samfundsdebatør (f. 1928) Chomsky hierarkiet er fra 1956 og primært tænkt til beskrivelse af naturlige sprog (vha transformationsgrammatikker..)

27 Et par resultater Sproget: ”ab”,”aabb”,”aaabbb”,... er kontekstfrit men ikke regulært. Sproget: ”abc”,”aabbcc”,”aaabbbccc”,.. er ikke kontekstfrit men kontekstafhængigt. Sprog1: ab a Sprog1 b

28 Et par resultater Der findes ingen generelle teknikker til at undersøge om to EBNF’er beskriver samme sprog (Det kan bevises at en sådan teknik heller ikke kan findes!) (det er et uafgørligt problem) En sådan teknik findes for regulære udtryk.

29 Hvad kan det bruges til? Regulære udtryk → søgninger i store datamængder Genkendelse kan klares af endelige automater (uden hukommelse) Kontekst fri sprog → oversættere, parsere Genkendelse kræver hukommelse Særligt effektive genkendere/parsere findes for klasser af kontekst-fri grammatikker (LL(1), LALR(1),..) De kan konstrueres automatisk ud fra grammatikken (YACC, Bison, Antlr)

30 Ord, ord, ord … SyntaksGrammatikGenkendelse SemantikEBNFParser PragmatikRegulært udtrykKontekstfrit sprog Formelt sprogSyntakstræRegulært sprog Naturligt sprogAfledningUafgørligt NonterminalTvetydigChomsky hierarki TerminalRekursion

31 Lidt historie Maskiner: 1. Generation: 1940 → –Radiorør, kviksølvrør, DASK 1952 2. Generation 1950 → –Transistorer, GIER 1959 3. Generation 1964 → –Integrerede kredsløb 4. Generation –Højt integrerede kredsløb VLSI, 5. Generation –Multiprocessormaskiner

32 Datamaskiner Tidlige mekaniske maskiner Babbage, Pascal, Zuse 30’erne. Teori: Turingmaskinen, Church, Curry, von Neumann. Beregnelige funktioner 40-45. Beregningsmaskiner Eniac (43-44, USA) radiorør (19000stk) til beregning af kanonskud Zuse (1945, Tyskland) relæer Colosus (1943, Alan Turing, England) radiorør (1500stk) Krypto-analyse af Enigma koder

33 Datamaskiner Fra 1948. Universelle maskiner Programmerbare. EDVAC rapport 1944 EDSAC (Wilkes,Cambridge,England) ACE (Turing, Manchester, England) 1948 Transistoren 1964 Integrerede kredsløb 1970 Chip, Intel 4004 (2250 transistorer, 1280 ½byte data, 4k instruktioner)

34 Programmeringssprog Generationer af sprog: 1. Generation: 1940’erne –Maskinkode 2. Generation 1948-54 –Assembler, AUTOCODE (1952) –Tidlige maskinspecifikke sprog 3. Generation 1954 → –Højniveausprog: Java, C, C++, Pascal, 4. Generation –Specielle programmeringsomgivelser til særlige formål 5. Generation –Naturligt sprog

35 Programmeringssprog Fortran, 1954 Cobol, 1959-60 Algol 1960 Basic 1964 C 1972 Simula 1967 Pascal 1972 C++ 1986 Java 1995 Andre sprog Logikprogrammering prolog 1972 Funktionsprogrammering Lisp 1960 ML, Haskell, Scheme


Download ppt "Begreber og Redskaber 1. Rettelse til sidst Sidst vrøvlede jeg lidt om algoritmer: Ordet stammer fra Abu Ja’far Mohammed ibn Musa al- Khowarizm der i."

Lignende præsentationer


Annoncer fra Google