Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Programowanie wieloplatformowe – przenośność kodu

Podobne prezentacje


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

1 Programowanie wieloplatformowe – przenośność kodu

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 A DZIŚ DO DYSPOZYCJI MAMY SPORO DOBRYCH I DARMOWYCH NARZĘDZI!
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 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 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 Microsoft VC++ V6, added Dinkum C++ Library for VC++ V3.08 Metrowerks CodeWarrior for Windows V8.0, included library 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 Microsoft VC++ V6, included library supplied by Dinkumware Sun Forte Developer 7 C++ V5.4, included RogueWave library (default) Borland C++Builder V6, included RogueWave library (optional)

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 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 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 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 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 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 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+ 1998 – port na Macitosha 2000 – dodanie wewnętrznej obsługi html-a dziś – port na OS/2

13 Ten sam kod dla wszystkich platform
wxWindows – interfejs Ten sam kod dla wszystkich platform wxWindows API wxMSW wxX11 wxGTK wxMotif wxMac wxBase GDI Xlib/X11 GTK+ Motif Mac BEZ GUI Windows Unix(1) MacOS OS/2

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 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 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 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 QT – klasy

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 Aplikacje rozwinięte przy użyciu opisanych bibliotek, cd.
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

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 – przenośność kodu"

Podobne prezentacje


Reklamy Google