Translacja wprowadzenie

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

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

Metody Kompilacji Wykład 1 Wstęp

Program We Kompilator Wy Źródłowy

KONSTRUKCJA KOMPILATORÓW

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

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA Bieżący sylabus w semestrze zimowym roku 2016/17

Java EE produkcja oprogramowania

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

Programowanie komputerów

Zadanie analizy leksykalnej

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

Podstawy programowania

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

Podstawy Informatyki Języki programowania c.d.

Programowanie w języku C++ Grażyna Koba

Początki Javy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 8

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

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

Podstawy programowania. Wykład 1 Wstęp. Krzysztof Banaś Podstawy programowania 1

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów

Analiza leksykalna i generator LEX

PyPy's Approach to Virtual Machine Construction

Języki i metodyka programowania

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

MATERIAŁY DO ZAJĘĆ I. Podstawowe pojęcia. Algorytm. Spis treści Przepis

Gramatyki atrybutywne

Java jako język programowania

Programowanie w języku Python. Grażyna Koba

Podstawy i języki programowania

Programowanie w C. dr inż. Stanisław Wszelak

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Ryszard Myhan. Wykład 1: Języki programowania

Podstawy programowania wykład

Języki programowania zasady ich tworzenia

O (o)programowaniu. R. Robert Gajewski omklnx.il.pw.edu.pl/~rgajewski

Przyczyny dwustopniowego tłumaczenia

Analizator syntaktyczny

Wprowadzenie. Wojciech Complak

Informatyka. Michał Rad

Podstawy programowania.

Pierwsze kroki. Algorytmy, niektóre zasady programowania, kompilacja, pierwszy program i jego struktura

Matematyczne Podstawy Informatyki

Wprowadzenie. Organizacja pracy i środowisko programistyczne. Mirosław Ochodek

Algorytmy od problemu do wyniku

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

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

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

Q E M U.

Podstawy programowania. Wprowadzenie

Programowanie obiektowe zastosowanie języka Java SE


Komputer nie myśli. On tylko wykonuje nasze polecenia. Nauczmy się więc wydawać mu rozkazy

TRANSLACJA I TRANSLATORY

ALGORYTMY I PROGRAMY

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

WPROWADZENIE DO JĘZYKA JAVA

Emulacja maszyny. Program udaje zupełnie inną architekturę. Musi przetłumaczyć instrukcje emulowane na instrukcje platformy, na której działa

Uproszczony schemat działania kompilatora

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Paradygmaty i języki programowania. Analiza leksykalna Skaner, RE, DAS, NAS, ε- NAS

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15

Optymalizacja oprogramowania - wprowadzenie

Programowanie obiektowe. Wprowadzenie

QEMU działa na procesorach procesorach: emuluje procesory: dostępne dla s.o. hosta:

ochrona w systemie operacyjnym

Wprowadzenie do programowania

Uproszczony schemat działania kompilatora

Generator YACC: gramatyki niejednoznaczne

Ćwiczenie 1. Przygotowanie środowiska JAVA

Technologie informacyjne - wykład 12 -

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

POLITECHNIKA ŚLĄSKA WYDZIAŁ INŻYNIERII MATERIAŁOWEJ I METALURGII. Edukacja Techniczno Informatyczna Studia dzienne. Praca dyplomowa inżynierska

Język JAVA podstawy. wykład 1, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Warsztaty szkoleniowe. Technologia SafetyLon w systemach związanych z bezpieczeństwem funkcjonalnym Narzędzia SafetyLon Moduł 4.5.

Model-checking programów w Javie

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

Wykład 1: Wprowadzenie do technologii Java

3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki.

Analiza semantyczna. Gramatyka atrybutywna

1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.

JAVA. Tomasz Grzywacz.

Wstęp do programowania. Wykład 1

Programowanie w Javie cz. 1 Wstęp. Łódź, 24 luty 2014 r.

Programowanie w języku LOGO KOMENIUSZ

TEST KOŃCOWY DLA KLASY III GIMNAZJUM- POGRAMOWANIE. Szkoła Podstawowa Nr 5. im. Księcia Mazowieckiego Siemowita IV w Gostyninie.

Wykład I. Podstawowe pojęcia. Studia Podyplomowe INFORMATYKA Architektura komputerów

Podstawy Informatyki Języki programowania

Podstawy Programowania

Ćwiczenie nr 6. Programowanie mieszane

Technika mikroprocesorowa. Języki programowania mikrokontrolerów

Informatyka I. dr inż. Andrzej Czerepicki.

Bezpieczeństwo systemów komputerowych. Java i JavaScript. Java i JavaScript. Java - historia

Programowanie I. Wprowadzenie. Proces programowania

Języki i paradygmaty programowania doc. dr inż. Tadeusz Jeleniewski

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/ / 24

Język JAVA podstawy programowania

Cel stosowania metod i środków informatyki

Struktura systemu operacyjnego. Opracował: mgr Marek Kwiatkowski

Transkrypt:

Translacja wprowadzenie Teoria kompilacji Dr inż. Janusz Majewski Katedra Informatyki

Literatura 1) Aho A. V., Sethi R., Ullman J. D.: Compilers. Principles, Techniques and Tools, Addison- Wesley, 1986 (jest tłumaczenie polskie: Kompilatory. Reguły, metody i narzędzia, WNT, 2002). 2) Aho A. V., Ullman J. D.: The Theory of Parsing, Translation and Compiling, vol. 1, Prentice-Hall, 1972 (tłumaczenie rosyjskie: Ахо А., Ульман Дж.: Теория синтаксического анализа, перевода и компиляции, Издательство Мир, 1978) 3) Gries D.: Compiler Construction for Digital Computers (jest tłumaczenie polskie). 4) Waite W. M., Goos G.: Konstrukcja kompilatorów, WNT, 1989.

Translator, definicje (1) Translator to program, który umożliwia wykonanie programów napisanych w języku różnym od języka komputera. (2) Translator to specjalny program komputerowy, dokonujący tłumaczenia (translacji) programu napisanego w języku programowania, z postaci źródłowej do postaci wynikowej, zrozumiałej dla maszyny. Rozróżnia się dwa rodzaje translatorów oraz odpowiednio dwie podstawowe techniki translacji: kompilatory (kompilacja) interpretery (interpretacja)

Kompilator, kompilacja Kompilator: program, który tłumaczy tekst (kod) źródłowy programu na równoważny tekst (kod) wynikowy. Program źródłowy jest napisany w języku źródłowym, a program wynikowy należy do języka wynikowego. Wykonanie programu kompilatora następuje w czasie tłumaczenia. Cecha zasadnicza: program po przetłumaczeniu nie da się zmienić, jest statyczny. Kompilator jako dane wejściowe otrzymuje cały program źródłowy i przekształca go na postać wynikową.

Kompilator, kompilacja źródłowy Wejście Kompilator Wyjście wynikowy Zalety kompilacji: program skompilowany wykonuje się szybciej niż program interpretowany do wykonania programu wynikowego nie jest potrzebny kompilator

Interpreter, interpretacja Interpreter można nazwać dynamicznym translatorem. Tłumaczy on oraz na bieżąco wykonuje program źródłowy. Działanie interpretera polega na wyodrębnieniu niewielkich jednostek programu źródłowego, tłumaczeniu ich na pewną postać wynikową i natychmiastowym ich wykonywaniu. Proces jest cykliczny. W czasie interpretacji przechowywany jest program źródłowy. Wynik tłumaczenia nie jest dostępny. Przykład: for i: = 1 to 5 do s := s + i ; s:=s+i w przypadku interpretera ten fragment jest 5-krotnie tłumaczony

Interpreter, interpretacja Zalety interpreterów: łatwość zmian programu mniejsza zajętość pamięci zewnętrznej (tylko tekst źródłowy) możliwość pracy konwersacyjnej (zatrzymanie wykonania, zmiana wartości zmiennych, modyfikacja kodu, kontynuacja wykonania) przenośność, niezależność od platformy systemowo-sprzętowej, wykorzystanie w zastosowaniach sieciowych (tylko tekst źródłowy)

Kompilacja + intepretacja = Java źródłowy Kompilator Sieć Interpreter (maszyna wirtualna)

Kompilacja + JIT = Java źródłowy Kompilator Sieć JIT (maszyna wirtualna JVM) Maszyna wirtualna JVM obecnie to JIT (Just-In-Time, w domyśle kompilator), czyli środowisko uruchomieniowe, które z początku interpretuje kod, a gdy dany fragment kodu jest wykonywany wiele razy (staje się tzw. gorącym punktem, stąd nazwa najpopularniejszej JVM czyli Oracle HotSpot) to ten fragment zostaje skompilowany do natywnego kodu maszynowego i ten kod jest wykorzystywany zamiast interpretowania kodu ego (tzw. bajtowego) Javy.

Kompilacja + JIT = Java źródłowy Kompilator Sieć JIT (maszyna wirtualna JVM) JIT jest zaawansowanym systemem potrafiącym wykonywać programy znacznie szybciej niż interpretery. Fakt zastosowania środowiska uruchomieniowego w postaci JVM pozwala na zastosowanie optymalizacji, które nie są i nigdy nie będą dostępne na etapie kompilacji statycznej, co może doprowadzić do sytuacji, w której aplikacje wykonywane pod kontrolą JIT będą szybsze niż ich natywne odpowiedniki kompilowane statycznie.

Struktura kompilatora ANALIZA KOMPILATOR SYNTEZA kod zrodlowy Analizator leksykalny SKANER Analizator syntaktyczny PARSER Analizator semantyczny Generator kodu ego Optymalizator kodu ego Generator kodu ostatecznego kod wynikowy Tablica symboli (zmiennych, stałych, etykiet, nazw podprogramów)

Przód i tył kompilatora ANALIZA KOMPILATOR SYNTEZA kod zrodlowy Analizator leksykalny SKANER Analizator syntaktyczny PARSER Analizator semantyczny Generator kodu ego Optymali - zator kodu pośred - niego Generator kodu ostatecz - nego kod wynikowy Tablica symboli (zmiennych, stałych, etykiet, nazw, podprogramów) Przód kompilatora (front-end) zależny od języka źródłowego Tył kompilatora (back-end) zależny od platformy systemowo-sprzętowej

Znaczenie kodu ego, środowiska zintegrowane Różne języki źródłowe wynikowy na różne platformy systemowo- -sprzętowe Przód (1) Tył (1) Przód (2) Optymalizacja i łączenie kodu ego Tył (2)...... Przód (n) Tył (m)

Znaczenie kodu ego, środowiska zintegrowane Różne języki źródłowe Interpretacja lub kompilacja JIT kodu ego na różnych platformach systemowosprzętowych Przód (1) Tył (1) Przód (2) Optymalizacja i łączenie kodu ego Tył (2)...... Przód (n) Tył (m)