Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Programowanie wieloplatformowe, Tomasz Mularczyk Programowanie wieloplatformowe – przenośność kodu.

Podobne prezentacje


Prezentacja na temat: "Programowanie wieloplatformowe, Tomasz Mularczyk Programowanie wieloplatformowe – przenośność kodu."— Zapis prezentacji:

1 Programowanie wieloplatformowe, Tomasz Mularczyk Programowanie wieloplatformowe – przenośność kodu

2 Programowanie wieloplatformowe, Tomasz Mularczyk 2 Wstęp kiedyś programy pisane pod konkretną maszynę system operacyjny wszyty przez producenta bardziej uniwersalne platformy -> os niezależny wreszcie zlecanie zewnętrznym firmom pisania OSów MS-DOS (1981) rok na zlecenie IBM (przystosowanie 86-QDOSa) niedługo później PC-DOS (IBM) oraz DR-DOS (Digital Research) sukces PC nie był pewny, MS-DOS miał być raczej niszowym produktem, tymczasem w 1991 w USA było 50 mln kopii Windows 1.0 – 1984 Windows 3.0 – 1990 –dziesięć lat po DOSie – Linux (dziecko Linusa Torvaldsa), na podobieństwo Unixa, który powstał w 1969 r.

3 Programowanie wieloplatformowe, Tomasz Mularczyk 3 Wstęp, cd. – Potrzeba przenoszenia progów między nimi. – Systemy stworzone do różnych zadań nie wymagają tego, natomiast systemy ogólnego zastosowania jak Windows XP czy Linux tak – czemu nie wymieniać najlepszych aplikacji – praktyka pokazuje, że nie jest to takie łatwe – na razie wybór OS rzutuje na programy – część firm sprzedaje różne wersje na różne OSy – np. Płatnik nie :) powody : – lekceważenie grup użytkowników najczęściej związanych z darmowym softem – faworyzowanie monopolisóów – brak fachowej wiedzy A DZIŚ DO DYSPOZYCJI MAMY SPORO DOBRYCH I DARMOWYCH NARZĘDZI!

4 Programowanie wieloplatformowe, Tomasz Mularczyk 4 Przenoszenie kodu – problemy – nawet funkcje standardowe nie gwarantują przeniesienia – różne wyniki lub brak startu na innym OSie – Opiszę na C++ – STL (standard template library) rozbudowane, wymagana dobra wydajność – duży nakład pracy, aby twórcy kompilatora zaimplementowali – nawet najwięksi twórcy IDE do C++ - MS, Borland rezygnują z części funkcji – czasem istnieją, ale robią co innego (obsługa szablonów w VC++ 6.0) różnica między sztandarowymi komp. Win – VC++ i Lin – gcc jest bardzo długa (obsługa plików nagłówkowych, rozwijanie funkcji inline, szablony etc.)

5 Programowanie wieloplatformowe, Tomasz Mularczyk 5 Wyniki testu kompatybilności Wyniki przeprowadzonego testu kompatybilności ze standardem: % zgodności nazwa kompilatora 99+ Microsoft VC++ V7 (.NET), included library supplied by Dinkumware 97 Microsoft VC++ V6, added Dinkum C++ Library for VC++ V Metrowerks CodeWarrior for Windows V8.0, included library 89 Sun Forte Developer 7 C++ V5.4, included STLport library (optional) 88 Borland C++Builder V6, included STLport library (default) 86 GCC V3.2, included LibStdC++ library 84 Microsoft VC++ V6, included library supplied by Dinkumware 80 Sun Forte Developer 7 C++ V5.4, included RogueWave library (default) 77 Borland C++Builder V6, included RogueWave library (optional)

6 Programowanie wieloplatformowe, Tomasz Mularczyk 6 Inne różnice między kompilatorami C++ - poza zgodnością różnice w wydajności - przydział pamięci pod gcc szybciej o rząd wielkości niż w VC++ - gcc nie monitoruje tak skrupulatnie pamięci - 1 s na Linux, 8 s na Windows - typowy wpływ to ok. 20% czasu programu - szybka grafika 3d lepsza pod Windows

7 Programowanie wieloplatformowe, Tomasz Mularczyk 7 Narzędzia i biblioteki ułatwiające przenoszenie kodu Języki zaprojektowane jako przenośne – m.in. Java – maszyna wirtualna, której funkcje są zaimplementowane niezależnie dla każdego OSu – bardzo wolna, o ile nie wykorzystuje się instrukcji udostępnianych przez konkretny OS lub procesor – a wtedy strata przenośności – minus – trzeba zainstalować MW javy, więc nasz program ma wymagania co do bibliotek nieobecnych w systemie. – Czasem programy zachowują się inaczej na różnych wersjach MW lub wymagają dodatkowych bibliotek – Może kiedyś będzie szybka, na razie za uniwersalność płacimy spadkiem wydajności Jest mimo to całkiem dobrym pomysłem

8 Programowanie wieloplatformowe, Tomasz Mularczyk 8 Narzędzia i biblioteki ułatwiające przenoszenie kodu, cd. biblioteki do znanych języków oprogramowania: wxWindows (C++, Python, Basic i inne) QT (C++)

9 Programowanie wieloplatformowe, Tomasz Mularczyk 9 wxWindows – wprowadzenie – wxWindows jest zbiorem bibliotek – całość zaprojektowana jako system klas (łatwo rozwijać funkcjonalność poprzez dziedziczenie, łatwo modyfikować już istniejące klasy) – po 1 bibliotece na każdy interfejs użytkownika (windows, GTK+, Motif, Mac) – udostępnia pełne API w C++ oraz ograniczone w kilku innych językach - Python, Basic – praca na plikach – obsługa sieci, w tym socketów – obsługa wątków

10 Programowanie wieloplatformowe, Tomasz Mularczyk 10 wxWindows – wprowadzenie – zawiera podstawowe struktury danych – string (łańcuchy), tablice, listy, tablice haszujące – wbudowana obsługa html- a (prosta w użyciu) – wirtualne systemy plików – obsługa OpenGL – duże rozposzechnienie, łatwy dostęp do pomocy i innych zasobów (>20k stron www) – łatwy do nauczenia (wszystko jest pod ręką - przykłady, sensowny podział na klasy) – dobrze współpracuje z innymi technologiami specyficznymi dla platformy (np. z MFC w Windowsach)

11 Programowanie wieloplatformowe, Tomasz Mularczyk 11 wxWindows – wprowadzenie – obsługa drukowania – zintegrowany z systemem debugger (specjalna klasa komunikująca się z innymi) – wsparcie dla Unicode – minusy: - nie pozwala na obsługę wyjątków w ramach swoich klas - nie ma szablonów (tylko klasę pseudoszablonów), choć pozwala korzystać np. z szablonów STL

12 Programowanie wieloplatformowe, Tomasz Mularczyk 12 wxWindows – historia Minimum historii wxWindows: 1992 rok. Julian Smart ( pracując w Artificial Intelligence Applications Institute w University of Edinburgh) potrzebuje biblioteki, która działa w windows i na opartych na X uniksowych stacjach roboczych. Istniejące rozwiązania są dla niego zbyt drogie. Pisze wxWindows w – windows x – uniksowy X 1996 – lekka stagnacja. Szybki rozwój technologii javowych. Pytanie, czy ktoś potrzebuje bibliotek do C++ ? Dodatkowo kod był już mocno pogmatwany (wiele osób go tworzyło). Przepisać albo porzucić. Decyzja – pisać. Obsługa GTK – port na Macitosha 2000 – dodanie wewnętrznej obsługi html-a dziś – port na OS/2

13 Programowanie wieloplatformowe, Tomasz Mularczyk 13 wxWindows – interfejs Ten sam kod dla wszystkich platform wxWindows API wxMSWwxX1 1 wxGTKwxMo tif wxMacwxBase GDIXlib/X 11 GTK+MotifMacBEZ GUI Windo ws Unix(1)MacOSWind ows Unix (1) Mac OS OS /2

14 Programowanie wieloplatformowe, Tomasz Mularczyk 14 wxWindows – klasy Przykładowe klasy wxWindows: wszystkie dziedziczą z wxObject – Związane z interfejsem graficznym : wxBitmap, wxButton, wxBitmapButton, wxBrush, wxCheckBox, wxColour(rep. Kolorów), wxComboBox, wxDC (Device Context – bezp. Operacje na oknach wzorowane na rozwiązaniu z Windows), wxFont, wxGrid (siatka do tabel), wxListBox, wxMenu, wxPoint, wxRect,wxDCClipper,... – Związane z plikami: wxFile, wxFileStream, wxFFile (buforowany dostęp), wxFileSystem (ciekawa, pozwala na dostęp do własnego systemu plików niezależnego od OSu),...

15 Programowanie wieloplatformowe, Tomasz Mularczyk 15 wxWindows – klasy, cd. Przykładowe klasy wxWindows, część druga: – Klasy wspomagające programowanie i algorytmy: wxArray, wxArrayString,wxList, wxDatabase (reprezentacja bazy ODBC), wxMutex (wsparcie dla wielowątkowości), wxString, wxHashTable,... – Klasy różne: wxWave (dźwięk), wxFileDialog (menu wybóru plików, katalogów) i setki innych W sumie ponad 300 klas, 5000 funkcji, 1,3 MLN linijek kodu, wartość przedsięwzięcia w 2001 oceniana była przez niezależnych analityków na 41,000,000 $)

16 Programowanie wieloplatformowe, Tomasz Mularczyk 16 wxWindows – różne Licencja: – wiele różnych – GPL, freeware, komercjalna – dlatego też jest tak lubiany i popularny Ciekawy pomysł z "wielkościowaniem" okna. Klasa wxSizer pozwala na podział ekranu na części funkcjonalne. Ułatwia przenoszenie, jeśli różne jednostki i wymiary ekranów na różnych platformach. Podręcznik do wxWindows ma 1700 stron, dokumentacja jest rozprowadzana z programem. STRONA WWW:

17 Programowanie wieloplatformowe, Tomasz Mularczyk 17 QT – opis QT: (produkt norweskiej firmy TrollTech) – wxWindows nie jest jedyny – QT jest bardzo popularny pod Linuksem – 1550 $ najtańsza, 1-stanowiskowa wersja komercjalna – wersje GPL dla Linuxa, Maca i innych, ale tylko na tworzenie darmowego softu ( niekomercyjna ) – również jest to system klas – w przeciwieństwie do wxWindows, gdzie nie ma świetnych "wizardów", tutaj są STRONA WWW:

18 Programowanie wieloplatformowe, Tomasz Mularczyk 18 QT – klasy

19 Programowanie wieloplatformowe, Tomasz Mularczyk 19 Aplikacje rozwinięte przy użyciu opisanych bibliotek wxWindows: – StoryLines ( narzędzie do pisania scenariuszy, wygląda jak wave-editor + edytory okładek) – Audacity audio editor – Intuitive (mixer muzyki, wykorzystuje grafikę 3D) – HelpBlocks (edytor helpa, obsługa htmla) – Ground Control Station for Unmanned Planes, Geneva Aerospace – VULCAN - modelowanie 3D dla kopalni – cn3D – dla National Center for Biotechnology Information (USA), oglądanie sekwencji nukleotydów, białek, a nawet całego genomu – Zeemo (wymiana plików p2p) – Flakarchiver - zarządznie archiwami, kompresja i dekompresja Kto jeszcze go używa: Lockheed-Martin, Netscape, Xerox, NASA, AMD, Intel Graphics Lab, Compaq, California Institute of Technology, REDSonic,...

20 Programowanie wieloplatformowe, Tomasz Mularczyk 20 QT: sporo ogólnodostępnych aplikacji pod Linuksem (firma centralnie się nimi nie chwali) ponadto jest używana w: – Boeing – Canon – Shell – Sony – NASA – Pioneer – IBM – Siemens Aplikacje rozwinięte przy użyciu opisanych bibliotek, cd.

21 Programowanie wieloplatformowe, Tomasz Mularczyk 21 PODSUMOWANIE – Programowanie na kilka platform wcale nie jest trudne. – Mamy w ręku przynajmniej 2 podejścia – biblioteki do znanych nam języków programowania lub cały język prog. – istnieją dobre narzędzia, warto od razu zaprojektować aplikację jako wielosystemową – wielkie firmy korzystają już z proponowanych rozwiązań Cały wykład ( slajdy, szerszy opis i w przyszłości opracowanie ) znajduje się w sieci na stronie


Pobierz ppt "Programowanie wieloplatformowe, Tomasz Mularczyk Programowanie wieloplatformowe – przenośność kodu."

Podobne prezentacje


Reklamy Google