Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałSerafina Celmer Został zmieniony 10 lat temu
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
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.