Co nowego pojawi o si ostatnio?

Podobne dokumenty
Podstawy programowania. Wprowadzenie

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

Dziedziczenie : Dziedziczenie to nic innego jak definiowanie nowych klas w oparciu o już istniejące.

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

Środowiska i platformy programistyczne

Spis treści 1. Wstęp 2. Projektowanie systemów informatycznych

Analiza moż liwości i porównanie nowych ję zyków do programowania grafiki

C# /.NET. Copyright by 3bird Projects 2018,

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

Programowanie obiektowe

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

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

Microsoft IT Academy kurs programowania

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

Programowanie C# mgr in. Dariusz Ku. p. 119A

Programowanie obiektowe zastosowanie języka Java SE

Java jako język programowania

Metodyka programowania. Podstawy C#

Uniwersytet Rzeszowski

Podstawy języka Java. przygotował:

Systemy mikroprocesorowe - projekt

Sieci komputerowe cel

Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych ul. Koszykowa 75, Warszawa

Firma Informatyczna JazzBIT

Java język programowania zorientowany obiektowo

WY SZA SZKO A INFORMATYKI STOSOWANEJ I ZARZ DZANIA

Komunikacja w sieci Industrial Ethernet z wykorzystaniem Protokołu S7 oraz funkcji PUT/GET

Tworzenie aplikacji w języku Java

System Informatyczny CELAB. Przygotowanie programu do pracy - Ewidencja Czasu Pracy

Zarządzanie sieciami SN Seria Easergy Wykrywanie uszkodzeń i zdalne sterowanie

Instrukcja obsługi platformy zakupowej e-osaa (klient podstawowy)

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

Programowanie obiektowe

Programowanie obiektowe. Wprowadzenie

Instalacja. Zawartość. Wyszukiwarka. Instalacja Konfiguracja Uruchomienie i praca z raportem Metody wyszukiwania...

Instytut Informatyki, Politechnika Poznańska, SUM-TWO. Zaawansowane programowanie obiektowe

Tytuł pracy. Praca dyplomowa inżynierska. Filip Piechocki. Tytuł Imię i Nazwisko

WPROWADZENIE DO JĘZYKA JAVA

System komputerowy - hardware (schemat uproszczony) System operacyjny. Składniki systemu. Struktury systemów operacyjnych

Programowanie Zespołowe

GRAFIKA PROGRAMOWANA W PASCALU ==================================

1 Temat: Vertex Shader

Siemens IO-Link. Smart TIA integration of sensors and actuators

Aktualizacja CSP do wersji v7.2. Sierpień 2014

Web Services w połączeniu z aplikacjami uruchamianymi na urządzeniach mobilnych

SKRÓCONA INSTRUKCJA OBSŁUGI ELEKTRONICZNEGO BIURA OBSŁUGI UCZESTNIKA BADANIA BIEGŁOŚCI

System do kontroli i analizy wydawanych posiłków

Technologie internetowe Internet technologies Forma studiów: Stacjonarne Poziom kwalifikacji: I stopnia. Liczba godzin/tydzień: 2W, 2L

Mechanizmy refleksji w Javie i C# Autor: Aleksander Nałęczyński

Języki i paradygmaty programowania - 1

Język JAVA podstawy programowania

Charakterystyka systemów plików

Instalacja programu. Omówienie programu. Jesteś tu: Bossa.pl

Programowanie obiektowe

Wartości domyślne, szablony funkcji i klas

Stacjonarne Wszystkie Katedra Inżynierii Produkcji dr Sławomir Luściński. Kierunkowy Nieobowiązkowy Polski Semestr trzeci. Semestr zimowy Brak Tak

Ostatnia cena sprzeda y klienta 1.0 dodatek do Symfonia Faktura dla 1 firmy

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

SpedCust 5 instrukcja instalacji

Chmura obliczeniowa. do przechowywania plików online. Anna Walkowiak CEN Koszalin

Generowanie kodów NC w środowisku Autodesk Inventor 2014

Pierwsze kroki. Krok 1. Uzupełnienie danych własnej firmy

GEO-SYSTEM Sp. z o.o. GEO-RCiWN Rejestr Cen i Wartości Nieruchomości Podręcznik dla uŝytkowników modułu wyszukiwania danych Warszawa 2007

API transakcyjne BitMarket.pl

Wykłady 1, 2. Wstęp do programowania w środowisku Visual C++ Autor: Zofia Kruczkiewicz

Programowanie Komputerów

Rodzaje i metody kalkulacji

Sieć komputerowa grupa komputerów lub innych urządzeo połączonych ze sobą w celu wymiany danych lub współdzielenia różnych zasobów, na przykład:

Java EE produkcja oprogramowania

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

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

JĘZYK UML JAKO NARZĘDZIE MODELOWANIA PROCESU PROJEKTOWO-KONSTRUKCYJNEGO

Nowe funkcjonalności

Wykład 1: Wprowadzenie do technologii Java

Instrukcja Obsługi STRONA PODMIOTOWA BIP

Microsoft Management Console

Instrukcja laboratoryjna cz.3

Przeciąganie Gratowanie Automatyzacja

Instrukcja dotycząca generowania klucza dostępowego do Sidoma v8

elektroniczna Platforma Usług Administracji Publicznej

Bazy danych. Andrzej Łachwa, UJ, /15

Wprowadzenie do języka Java

STEROWNIKI NANO-PLC NA PRZYKŁADZIE STEROWNIKA LOGO!

Informacje o omawianym programie. Założenia programu omawianego w przykładzie

Arkusz zawiera informacje prawnie chronione do momentu rozpocz cia egzaminu.

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

INSTRUKCJA WebPTB 1.0

Harmonogramowanie projektów Zarządzanie czasem

Wydział Informtyki i Nauki o Materiałach Kierunek Informatyka. kod kierunku (dodaj kod przedmiotu)

Ćwiczenie 1. Przygotowanie środowiska JAVA

Instrukcja użytkownika systemu MOBEVO

C# 6.0 : kompletny przewodnik dla praktyków / Mark Michaelis, Eric Lippert. Gliwice, cop Spis treści

WYMAGANIA OFERTOWE. Przetarg nr PZ-451

System plików NTFS. Charakterystyka systemu plików NTFS

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java

oraz nowego średniego samochodu ratowniczo-gaśniczego ze sprzętem ratowniczogaśniczym

Low Level Virtual Machine

Programowanie w internecie nazwa przedmiotu SYLABUS A. Informacje ogólne

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

Transkrypt:

Co nowego pojawi o si ostatnio? Referat na laboratoria z Teorii Kompilacji Akademia Górniczo Hutnicza 2006 Autorzy Mateusz Makowiec Artur Andrzejewski

Omawiane Zagadnienia Java Platform.NET Framework Kompilatory dla kart graficznych Narz dzia do optymalizacji kodu Narz dzia do generacji parserów Odno niki

Java Platform Java Platform platforma Javy, jest to rodowisko firmy Sun Microsystems dzi ki któremu mo emy tworzy, rozwija i uruchamia aplikacje napisane w Javie. Kod programu ( plik *.java) jest kompilowany do kodu po redniego (plik *.class) (ang. bytecode). Dzi ki temu powsta y program jest niezale ny od systemu operacyjnego. Jego wykonaniem zajmuje si wirtualna maszyna Javy (JVM). Wirtualna maszyna Javy (ang. Java Virtual Machine) system dzi ki któremu mo emy uruchomi programy napisane w Javie.

Java Platform - model wykonania kodu Kod po redni (bytecode) jest wykonywany przez JVM która t umaczy ten kod na kod dopasowany do konkretnego systemu operacyjnego. Pliki *.java kompilacja Pliki *.class JVM Cz sto JVM uzupe nia si o kompilator JIT (ang. Just-In-Time ), wynika to z faktu szybko ci wykonywania kodu skompilowanego do kodu maszynowego, a interpretacji kodu po redniego przez JVM

Java Platform - JIT Kompilacja JIT (ang. Just-In-Time ) to metoda wykonywania programów polegaj ca na kompilacji do kodu maszynowego w locie, czyli bezpo rednio przed wykonaniem danego fragmentu kodu JVM decyduje które fragmenty kodu kompilowa (z regu y te które si mog powtarza np. wn trza p tle) a które fragmenty interpretowa.

Java Platform JVM Ró ne implementacje JVM : JDK firmy Sun zawiera szereg narz dzi do tworzenia oprogramowania (w odró nieniu od JRE) np.: kompilator czy debuger. aktualna wersja : JDK 5.0 Jikes zapocz tkowany przez IBM, aktualnie rozwijany przez ochotników (open source), aktualna wersja : Jikes 1.22 wydana w 3 pa dziernika 2004, posiada dodatki np.: generator parserów (2001) JRockit optymalizowane pod wzgl dem szybko ci pod procesory Intela (Itanium oraz Xeon EMT64) autorstwa firmy Bea, aktulalna wersja JRockit 5.0 R26 JDK

Narz dzia powi zane z Java AMPC (ang. Axiomatic Multi-Platform C) rodowisko które generuje bytecode na podstawie programu napisanego w C. Dost pny na ró ne systemy operacyjny (Linux, MS Windows, Mac OS), - strona domowa http://www.axiomsol.com/ - aktualna wersja to 1.3.7 wydana 20 stycznia tego roku - komercyjne narz dzie (99$) Excelsior JET - narz dzie s u ce do przetworzenia plików Javy (*.class) do samodzielnych plików wykonalnych dla MS Windows lub Linux. - aktualna wersja 4.1 15 grudzie 2005 - strona domowa http://www.excelsior-usa.com/home.html - komercyjne narz dzie (cena tak od 240$ do 700$ w zale no ci od dodatków)

Narz dzia do optymalizacji JMPC free java class compresor narz dzie optymalizuje bytecode oraz kompresuje pliki class. - optymalizuje kod redukuj c niepotrzebne instrukcje load/store oraz goto - zmniejsza nazwy metod i pól - skraca nazwy klas - obcina informacje dla debugera Ostatnia wersja zosta a wydana: 1 czerwca 2005 Strona domowa: http://viscomp.utdallas.edu/facade/jcmp/ Przyk adowe u ycie: java -jar jcmp.jar test.class java -jar jcmp.jar -jars a.jar b.jar

Narz dzia do optymalizacji J.CLASS OPTIMIZER optymalizuje codebyte - usuwa nieu ywane pola, metody, stringi, stale, atrybuty - optymalizuje bytecode - usuwa unformacje dla debugera strono domowa: http://www.uni-vologda.ac.ru/~c3c/jco/index.html Komercyjne : licencja kosztuje 29$ Przyk adowe u ycie: C:\jdk1.2\demo\applets\Animator>jco *.class -max

.NET Framework -.NET to platforma pozwalaj ca na wspó prac dowolnej ilo ci j zyków programowania w za o eniach niezale na od sprz tu i systemu operacyjnego. Opisana standardem CLI (Common Language Infrastructure) - Wersja 1.0 zosta a stworzona przez Microsoft w 2002 roku, jako odpowied na technologi Java i do czona do Visual Studio 2002. - Wersja 2.0 (Ukaza a si w Pa dzierniku 2005) jest do czona do Visual Studio 2005. Od tej wersji zapewnia pe ne wsparcie 64 bitowych architektur. Du a cz kodu MS Windows Vista jest pisana w C# 2.0 - Wykorzystuje po redni j zyk CIL (Common Intermediate Language) oraz rodowisko uruchomieniowe CLR (Common Language Runtime) - Wiele gotowych front-endów, na przyk ad: C#, J#, Managed C++, VB, JScript (Microsoft), Python, Perl, COBOL, Oberon, Haskell, Eiffel, Scheme (Inne firmy)

.NET Framework

.NET Model wykonywania kodu

.NET Common Intermediate Language - Po redni j zyk do którego kompilowane s wszystkie j zyki.net, zamieniany bezpo rednio na bytecode. Pierwotnie znany jako MSIL (Microsoft Intermediate Language), wraz z wprowadzeniem CLI przemianowany na CIL. Przyk adowy kod (Hello World) w CIL:.method private hidebysig static void Main() cil managed {.entrypoint // Code size 11 (0xb).maxstack 8 IL_0000: ldstr "Hello, world!" IL_0005: call void [mscorlib]system.console::writeline(string) IL_000a: ret } // end of method HelloWorld::Main

.NET Common Language Runtime - Pe ni rol wirtualnej maszyny, zarz dza kodem podczas jego wykonywania - Zarz dza pami ci (Managed Heap, Garbage Collection) - Zarz dza w tkami - Kompiluje kod CIL w trakcie uruchomienia programu (JIT : Just-In-Time) lub przed (NGEN : Native Image Generator). - Zapewnia bezpiecze stwo (rzutowanie typów danych, indeksowanie tablic,..)

.NET Assembly (Podzespó ) - To pakiet zawieraj cy kod CIL (W implementacji MS dla Windows przechowywany jako PE (Portable Exe)) - Posiada manifest zawieraj cy nazw podzespo u (mo e by silna, wtedy podzespó posiada unikalny id dla systemu), numer wersji, ustawienia regionalne, list wymaganych podzespo ów z ich numerami wersji i list plików tworz cych podzespó wraz z ich CRC - Posiada metadane opisuj ce typy znajduj ce si w pakiecie (Co umo liwia u ycie mechanizmu refleksji dla podzespo u) - Wyró niamy dwa rodzaje podzespo ów: process assemblies (EXE) i library assemblies (DLL) - Podzespó mo e si sk ada z wielu plików, nazywanych modu ami - Mo e by prywatny lub dzielony przez wiele aplikacji

.NET Base Class Library (BCL) - Standardowa biblioteka dost pna dla wszystkich j zyków w obr bie. NET Framework. Poni ej lista przestrzeni BCL. Collections Configuration Diagnostics Globalization IO Net Resources Reflection Security ServiceProcess Text Threading Runtime InteropServices Remoting Serialization

.NET Common Type System (CTS) - Wszystkie j zyki.net posiadaj te same typy proste - Na poziomie binarnym typy proste s ze sob zgodne - Typy mog by warto ciami lub referencjami - Brak wska ników - Boxing/Unboxing

.NET CTS: Boxing/Unboxing public static void Main() { Int32 v = 5; // creating unboxed value type variable Object o = v; // o refers to boxed version of v v = 123; // changes the unboxed value to 123 Console.WriteLine (v +, + (Int32) o); // displays 123, 5 } Boxing zachodzi kiedy zmiennej-referencji przypisujemy zmienn warto, tworzony jest wtedy nowy obiekt i przypisywana jest mu odpowiednia warto Unboxing to proces odwrotny (zachodzi tylko pod warunkiem, e referencja nie jest równa null i typy s zgodne)

.NET Common Language Infrastructure - Specyfikacja dost pna publicznie, standaryzowana przez ECMA (Ecma- 335) oraz ISO (IEC 23271) - Okre la elementy z których sk ada si.net Framework i pozwala na napisanie w asnej implementacji tej platformy. - CLI podzielono na 4 cz ci: CTS (Common Type System), Metadata, CLS (Common Language Specification) oraz VES (Virtual Execution System) - Dost pne implementacje to m.in. MS.NET Framework,.NET Compact Framework, Mono development platform, Portable.NET

.NET implementacje Mono Development Platform http://www.mono-project.com/main_page Stworzony przez firm Novell. Licencja: GPL/LGPL/MIT Dost pny na systemy: FreeBSD, MacOS X i Windows DotGNU http://www.dotgnu.org/ Licencja: GPL+/LGPL Dost pny na systemy: GNU/Linux (on PCs, Sparc, ipaq, Sharp Zaurus, PlayStation 2, Xbox,...), *BSD,Cygwin/Mingw32, Mac OS X, Solaris, AIX i Windows.

Kompilatory dla Kart Graficznych Rozwój kart graficznych 3d doprowadzi do powstania i upowszechnienia programowalnych jednostek. Pierwsza karta graficzna obs uguj ca PS i VS to GeForce3 firmy Nvidia Pixel Shader: program steruj cy tekslami (otrzymuje interpolowane dane od VS i dla ka dego wype nianego punktu potrafi ustawi kolor) Vertex Shader: program steruj cy wierzcho kami (vertexami) Geometry Shader: program tworz cy wierzcho ki (DX10/SM 4.0) Program steruj cy Shaderem, mo e przes a do niego dane. (W SM 4.0 tak e odebra dane od shadera) DirectX 10 / Shader Model 4.0. Pierwsze karty obs uguj ce nowy standard maj si pojawi w drugiej po owie 2006 (Chip G80 firmy Nvidia)

Vertex Shader 1.1 - przyk ad vs.1.1 dcl_position v0 def c40, 0.0f,0.0f,0.0f,0.0f; ;transform into projection space m4x4 r0,v0,c8 max r0.z,c40.z,r0.z //clamp to 0 max r0.w,c12.x,r0.w //clamp to near clip plane mov opos,r0 add r0.w,r0.w, c12.x mul r0.w,r0.w,c12.y ;Load into diffuse mov od0.xyzw,r0.w ;load into texture mov ot0.x,r0.w mov ot0.y,c12.x

Pixel Shader 1.1 - przyk ad ps.1.1 def c1, 1.0f,0.0f,0.0f,0.0f def c4, 0.0f,0.0f,1.0f,0.0f def c2, 1.0f,1.0f,1.0f,1.0f def c3, 1.0f,1.0f,1.0f,1.0f def c0, 0.0f,0.0f,0.0f,0.0f tex t0 tex t1 tex t2 sub r1.rgb,t1,t0 +sub_x4 r1.a,t0,t1 mov_x4 r1.a,r1.a mad r1,t2,r1.a,r1 dp3 t0.rgba,r1,c4 mov_x4 r1.rgb,r1 dp3_x4 t1.rgba,r1,c1 //move into the alpha add_x2 r0.a,t0,t1 +mov r0.rgb,c3

HLSL (High Level Shader Language), CG (C for Graphics) Standard j zyka wysokiego poziomu dla kart graficznych CG i HLSL to te same j zyki, opracowane wspólnie, ró ni si jedynie nazw : pierwsza promowana jest przez firm Nvidia, druga przez Microsoft w pakiecie DirectX Sk adnia zbli ona do C Spina stany urz dzenia renderuj cego, pixel i vertex shadery (niebawem tak e geometry shader) w jednym pliku. Pozwala na tworzenie technik. Typy danych i funkcje umo liwiaj ce atwe prowadzenie oblicze matematycznych (takie jak float4, czy float4x4) Struktury, tablice.

HLSL fragment kodu float4 mainps(vertexoutput IN, uniform samplercube EnvironmentMap, uniform half reflectstrength, uniform half refractstrength, uniform half3 etas ) : COLOR { half3 N = normalize(in.worldnormal); float3 V = normalize(in.worldview); // reflection half3 R = reflect( V, N); half4 reflcolor = texcube(environmentmap, R); // half fresnel = fresnel(dot(n, V), 0.2, 4.0); half fresnel = tex2d(fresnelsampler, dot(n, V)); // wavelength colors const half4 colors[3] = { { 1, 0, 0, 0 }, { 0, 1, 0, 0 }, { 0, 0, 1, 0 }, }; // transmission half4 transcolor = 0; bool fail = false; for(int i=0; i<3; i++) { half3 T = refract2( V, N, etas[i], fail); transcolor += texcube(environmentmap, T) * colors[i]; } } return lerp(transcolor*refractstrength, reflcolor*reflectstrength, fresnel);

Geometry Shader - Nowo która zostanie wprowadzona razem z DirectX 10 - Shader Produkuje wierzcho ki - Na wej ciu Shader otrzymuje prymityw (3 punkty, 2 punkty lub punkt)

Shadery w praktyce : RenderMonkey

Shadery w praktyce : Unreal Engine 3

Odno niki Nowo ci ze wiata kompilatorów: http://www.compilers.net Katalog narz dzi do konstruowania kompilatorów: http://catalog.compilertools.net/ Konferencja CC2006: http://www.st.cs.uni-sb.de/cc/cc2006cfp.pdf Porównanie.NET 2.0 i Java 1.5: http://www.bentuser.com/article.aspx?id=323 MSDN Library: http://msdn.microsoft.com/ CG Shaders: http://www.cgshaders.org/ DirectX 10 SDK (Technology Preview): http://msdn.microsoft.com/directx/sdk/ Portal Nvidii dla developerów: http://developer.nvidia.com/page/home.html Wikipedia: http://www.wikipedia.org

PYTANIA?

KONIEC