Metodologie programowania

Podobne dokumenty
JĘZYKI FORMALNE I METODY KOMPILACJI

JĘZYKI FORMALNE I METODY KOMPILACJI

JĘZYKIFORMALNE IMETODYKOMPILACJI

JĘZYKI FORMALNE I METODY KOMPILACJI

Definiowanie języka przez wyrażenie regularne(wr)

Napisy i ich znaczenia

Uproszczony schemat działania kompilatora

Wykład5,str.1. Maszyny ze stosem ... 1,0 λ r. λ,z λ

Włączenie analizy leksykalnej do analizy składniowej jest nietrudne; po co więc jest wydzielona?

JAO - Wprowadzenie do Gramatyk bezkontekstowych

Matematyczne Podstawy Informatyki

Uproszczony schemat działania kompilatora

Języki formalne i automaty Ćwiczenia 1

Wprowadzenie do analizy składniowej. Bartosz Bogacki.

Analiza leksykalna 1. Teoria kompilacji. Dr inż. Janusz Majewski Katedra Informatyki

JAO - lematy o pompowaniu dla jezykow bezkontekstowy

Wprowadzenie do programowania języki i gramatyki formalne. dr hab. inż. Mikołaj Morzy

Zadanie analizy leksykalnej

Paradygmaty programowania

Gramatyki rekursywne

Metody Kompilacji Wykład 3

Hierarchia Chomsky ego Maszyna Turinga

Języki programowania zasady ich tworzenia

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

Języki i paradygmaty programowania. I. Wprowadzenie

Gramatyki atrybutywne

GRAMATYKI BEZKONTEKSTOWE

JIP. Analiza składni, gramatyki

Metody Kompilacji Wykład 1 Wstęp

Metody Kompilacji Wykład 8 Analiza Syntaktyczna cd. Włodzimierz Bielecki WI ZUT

Wprowadzenie: języki, symbole, alfabety, łańcuchy Języki formalne i automaty. Literatura

Języki formalne i automaty Ćwiczenia 2

Automat ze stosem. Języki formalne i automaty. Dr inż. Janusz Majewski Katedra Informatyki

Gramatyki (1-2) Definiowanie języków programowania. Piotr Chrząstowski-Wachjtel

Maszyna Turinga języki

Programowanie w Logice Gramatyki metamorficzne. Przemysław Kobylański na podstawie [CM2003] i [SS1994]

Matematyczne Podstawy Informatyki

Języki i gramatyki formalne

2.2. Gramatyki, wyprowadzenia, hierarchia Chomsky'ego

Języki formalne i automaty Ćwiczenia 9

KONSTRUKCJA KOMPILATORÓW

Gramatyki, wyprowadzenia, hierarchia Chomsky ego. Gramatyka

Gramatyka operatorowa

Wykład 1 Wiadomości wstępne

Parsery LL(1) Teoria kompilacji. Dr inż. Janusz Majewski Katedra Informatyki

Języki i metodyka programowania

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

10. Translacja sterowana składnią i YACC

Plan wykładu. Kompilatory. Literatura. Translatory. Literatura Translatory. Paweł J. Matuszyk

Wstęp do Programowania Obiektowego. Wykład 13 Paradygmaty. Składnia i semantyka.

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Analiza semantyczna. Gramatyka atrybutywna

Wprowadzenie. Teoria automatów i języków formalnych. Literatura (1)

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Metody Kompilacji Wykład 7 Analiza Syntaktyczna

0.1 Lewostronna rekurencja

Wprowadzenie do kompilatorów

Technologie informacyjne - wykład 12 -

Języki, automaty i obliczenia

(j, k) jeśli k j w przeciwnym przypadku.

PROLOG WSTĘP DO INFORMATYKI. Akademia Górniczo-Hutnicza. Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej.

Języki formalne i gramatyki

Programowanie obiektowe

KATEDRA INFORMATYKI TECHNICZNEJ. Ćwiczenia laboratoryjne z Logiki Układów Cyfrowych. ćwiczenie 204

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Efektywna analiza składniowa GBK

Informatyczna Wieża Babel, czyli o różnych językach programowania. Informatyczna Wieża Babel, czyli o różnych językach programowania

Wykład 4. Algorytmy i programy. Algorytmy + struktury danych = programy. Niklaus Wirth. Algorytm = logika + sterowanie.

Szablony funkcji i klas (templates)

Analizator syntaktyczny

Programowanie w języku Python. Grażyna Koba

Analiza leksykalna 1. Języki formalne i automaty. Dr inż. Janusz Majewski Katedra Informatyki

Obliczenia inspirowane Naturą

Programowanie obiektowe zastosowanie języka Java SE

Błędy leksykalne są na ogół nietrudne do znalezienia.

Wykład 10. Translacja sterowana składnią

Przegląd metod error recovery (dla parsingu top-down, przykłady)

Programowanie komputerów

Hierarchia Chomsky ego

Lingwistyka Matematyczna Języki formalne i gramatyki Analiza zdań

Wstęp do programowania

Gramatyki regularne i automaty skoczone

Gramatyki grafowe. Dla v V, ϕ(v) etykieta v. Klasa grafów nad Σ - G Σ.

Maszyna Turinga. Algorytm. czy program???? Problem Hilberta: Przykłady algorytmów. Cechy algorytmu: Pojęcie algorytmu

Obliczenia inspirowane Naturą

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Programowanie obiektowo zorientowane. Mirosław Głowacki Wykład w języku C++

Programowanie. Pascal - język programowania wysokiego poziomu. Klasa 2 Lekcja 9 PASCAL

Języki formalne i automaty Ćwiczenia 4

Podstawy Kompilatorów

Podstawy programowania wykład

Programowanie funkcyjne wprowadzenie Specyfikacje formalne i programy funkcyjne

Translacja wprowadzenie

Wykład 5. Jan Pustelnik

Generator YACC: gramatyki niejednoznaczne

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Program We Kompilator Wy Źródłowy

Programowanie w języku C++ Podstawowe paradygmaty programowania

Języki programowania deklaratywnego

Programowanie I. Wprowadzenie. Proces programowania

Transkrypt:

Co kształtuje języki programowania? Wykład2,str.1 Metodologie programowania Koszty obliczeń: 1980 1960:sprzętdrogi,a wysiłek programistów niewielki 1970: sprzęt coraz tańszy, a programowane problemy coraz bardziej złożone hardware software 1980:kosztsprzętuto drobny fragment kosztu oprogramowania i nic nie wskazuje, że ten trend się zatrzyma Co kształtuje języki programowania? Wykład2,str.2 Metodologie programowania Daty przybliżone i orientacyjne: przed 1960 programowanie poziomu maszyny od 1960 programowanie wysokiego poziomu od 1970 programowanie strukturalne (struktury sterowania) od1975 abstrakcjadanych od1980 obiektowość od 1990 współbieżność w Internecie od 2000 współbieżność w pojedynczym komputerze(wieloprocesorowość)

Kategorie języków programowania Wykład2,str.3 Algol 68 FUNKCYJNE IMPERATYWNE wysokiego poziomu Fortran,Algol 60, Pascal,C,... Lisp, Scheme, Standard ML, Haskell,... LOGICZNE Prolog OBIEKTOWE Smalltalk, C++, Java,... Kategorie języków programowania Wykład2,str.4 Podkategorie języków imperatywnych: graficzne(visual Basic) generowanie programu imperatywnego przez przeciąganie obrazków skryptowe(bash, Perl, JavaScript, Ruby) interpretacja tekstu programu bez kompilacji

Kategorie języków programowania Wykład2,str.5 Języki funkcyjne(aplikatywne): podstawowe jednostki: definicjafunkcji; zastosowanie funkcji do argumentu. Przykład: M -funsil(n)= ifn=0then 1 else n*sil(n-1); valsil=fn:int->int definicja funkcji -sil5; zastosowanie do argumentu valit=120:int niebieskie(poprzedzone myślnikiem) napisał użytkownik czarne(poprzedzone przez val) napisał komputer Kategorie języków programowania Wykład2,str.6 Języki logiczne: podstawowe jednostki: aksjomatf(x 1,...,X k ):-wyr.log. oznacza,żef(x 1,...,X k ) wynika z wyr.log.; f(x 1,...,X k ) (j.w.bezprawejstrony)oznacza,żef(x 1,...,X k ) jest zawsze prawdziwe. Przykład: M max([h],h). max([h T],M):-max(T,M),H#<M. max([h T],H):-max(T,M),H#>=M. usercompiled... definicja maks. listy?-max([1,4,2,10,3],x). X=10? pytanie o wartość maks.

Uproszczona historia języków programowania Wykład2,str.7 Genealogia języków programowania: http://inf.ug.edu.pl/ stefan/dydaktyka/ ZaawJezForm/Wyklady/genealogia jezykow-1.png Prehistoria: karta perforowana taśma perforowana Kwestia implementacji Wykład2,str.8 Poziomy oprogramowania: kompilator C kompilator Javy Java VM jeszcze coś innego system operacyjny goły komputer zjęzykiem wewnętrznym

Kompilacja a interpretacja Wykład2,str.9 Przetwarzanie interpretacyjne: while(nie koniec) { zanalizuj kolejną komendę programu źródłowego wykonaj tą komendę } Przetwarzanie kompilacyjne: skompiluj(przetłumacz) program na język maszyny; while(nie koniec) { wykonaj kolejną komendę przekładu } Przetwarzanie interpretacyjne jest dobre do prototypowania. Przetwarzanie kompilacyjne jest dobre do użytku codziennego(na ogół znacznie szybsze). Uproszczony schemat kompilacji Wykład2,str.10 program źródłowy ciąg leksemów drzewo wywodu drzewo i tablice symboli analiza leksykalna analiza syntaktyczna analiza semantyczna KOMPILATOR generacja kodu dane do programu kod docelowy wyniki

Definiowanie języka Wykład2,str.11 Jak wyjaśnić kompilatorowi języka, które programy ma akceptować, a które odrzucać jako błędne? Formalne definiowanie języka: DEFINICJA: MGramatyka bezkontekstowa składa się z zbioruσterminali; zbioru N nieterminali; zbioru P produkcji postaci nieterminal ciąg-terminali-i-nieterminali; nieterminalupoczątkowegos N. Terminale proste napisy, które mają prawo pojawić się w zdaniu z języka. Nieterminale nazwy pojęć gramatycznych, potrzebnych do opisu języka. Produkcje prawa zastępowania pojęć gramatycznych. Nieterminal początkowy od niego zaczynamy wyprowadzanie zdań. Definiowanie języka Wykład2,str.12 Przykład: MΣ={x,=,+,1,5,;} N ={ zmienna, liczba, wyrażenie, przypisanie } P = przypisanie zmienna = wyrażenie ; wyrażenie zmienna wyrażenie liczba wyrażenie wyrażenie + wyrażenie zmienna x liczba 1 liczba 5 S = przypisanie

Definiowanie języka Wykład2,str.13 przypisanie zmienna = wyrażenie ; wyrażenie zmienna wyrażenie liczba wyrażenie wyrażenie + wyrażenie zmienna x liczba 1 liczba 5 przypisanie zmienna = wyrażenie ; x= wyrażenie ; x= wyrażenie + wyrażenie ; x= zmienna + wyrażenie ; x= zmienna + liczba ; x=x+ liczba ; x=x+1; Języki formalne lingwistyka matematyczna Wykład2,str.14 Jak porządnie opisać język nieskończony? {λ,ab,aabb,aaabbb,...} co oznaczają kropeczki? λ słowopuste, niezawierające ani jednej litery { a n b n n 0 } lepiej,alesąniepożądaneelementyobce (liczby,zmienne,relacje,...) Język definiujemy na dwa sposoby. Przez generator cokolwiek wyprodukuje, uważamy za należące do języka akceptor cokolwiek zatwierdzi, uważamy za należące do języka Opis języka programowania przeznaczony dla programisty powinien być generatorem ma wyjaśniać, jak pisać poprawne programy. Kompilator języka programowania powinien zawierać akceptor sprawdzający, czy program na jego wejściu należy do języka.

Generatory: gramatyki bezkontekstowe Wykład2,str.15 DEFINICJA: Gramatyka bezkontekstowa G M alfabetterminalnyσ; alfabet nieterminalny lub pomocniczy N(rozłączny z Σ); skończony zbiór P produkcji postaci Nterm w, gdzie Nterm Niw (N Σ) ; X zbiórwszystkichsłów nad alfabetem X wybrany nieterminal S N nazywany symbolem początkowym albo aksjomatem gramatyki. Przykład: gramatyka M wyrażenie składnik wyrażenie wyrażenie + składnik składnik czynnik składnik składnik * czynnik czynnik a czynnik ( wyrażenie ) BNF(Backus-Naur Form): wyrażenie ::= składnik wyrażenie + składnik składnik ::= czynnik składnik * czynnik czynnik ::=a ( wyrażenie ) Generatory: gramatyki bezkontekstowe Wykład2,str.16 DEFINICJA: Wywodliwość M jeśliwpjestprodukcjaa w,todladowolnychsłów u,v (N Σ),słowouwvnazywamybezpośredniowywodliwymze słowauav,cooznaczamyuav uwv; jesliw 1 w 2,w 2 w 3,...,w n 1 w n,tosłowow n nazywamy wywodliwymzesłowaw 1,cooznaczamyw 1 w n. DEFINICJA: Język L(G) generowany przez gramatykę G Mskłada się z tych słów{ wywodliwych z aksjomatu, które już nie zawierają nieterminali:l(g) def = w Σ } S w.

Generatory: gramatyki bezkontekstowe Wykład2,str.17 wyrażenie ::= składnik wyrażenie + składnik składnik ::= czynnik składnik * czynnik czynnik ::= a ( wyrażenie ) Przykład: wywód M wyrażenie składnik składnik * czynnik czynnik * czynnik a* czynnik a*( wyrażenie ) a*( wyrażenie + składnik ) a*( składnik + składnik ) a*( czynnik + składnik ) a*(a+ składnik ) a*(a+ czynnik ) a*(a+a) Generatory: gramatyki bezkontekstowe Wykład2,str.18 Gramatyka fragmentu języka polskiego: zdanie ::= gr.podmiotu gr.orzeczenia gr.podmiotu ::= podmiot przydawka gr.podmiotu gr.orzeczenia ::= orzeczenie orzeczenie dopełnienie gr.orzeczenia okolicznik podmiot ::= Anka Basia Czesiek przydawka ::= piękna gruby stary orzeczenie ::= bije kocha dopełnienie ::= Ankę Basię Cześka okolicznik ::= wdomu nocą zdanie gr.podmiotu gr.orzeczenia przydawka gr.podmiotu gr.orzeczenia piękna gr.podmiotu gr.orzeczenia piękna podmiot gr.orzeczenia piękna Basia gr.orzeczenia piękna Basia orzeczenie dopełnienie piękna Basia kocha dopełnienie piękna Basia kocha Cześka

Gramatyki prawoliniowe Wykład2,str.19 DEFINICJA: MGramatyka bezkontekstowa G = Σ, N, P, S jest prawostronnie liniowa jeślikażdaprodukcjawpmapostać: albo Nterm ciąg-terminali (czyli: żadnych nieterminali) albo Nterm ciąg-terminali Nterm (czyli: tylko jeden nieterminal po prawej) gdzieciąg-terminali Σ a Nterm, Nterm N. Przykład: M id ::=a c b c c ::=λ a c b c 0 c 1 c prawoliniowa wyr ::=a ( wyr ) wyr + wyr bezkontekstowa ale nie prawoliniowa Rodzaje gramatyk Wykład2,str.20 Przykład: MGramatykaG 1 : id ::=a c b c c ::=λ a c b c 0 c 1 c GramatykaG 2 : id ::=a b id a id b id 0 id 1 L(G 1 )=językidentyfikatorów=l(g 2 ) G 1 jestprawostronnieliniowa G 2 jestbezkontekstowa ale nie prawostronnie liniowa dwie gramatyki różnych typów mogą określać ten sam język DEFINICJA: MJęzyk L jest regularnyjeśliist.gram.prawostronnieliniowagtaka,żel=l(g); bezkontekstowy jeśli ist. gram. bezkontekstowa G taka, że L = L(G). Przykład: JęzykidentyfikatorówL(G 2 )jestregularny.