1 / 21

Programowanie wieloplatformowe – przenośność kodu

Programowanie wieloplatformowe – przenośność kodu. kiedy ś prog ramy pisane pod konkretną maszyn ę system op eracyjny wszyty przez producenta bardziej uniwersalne platformy -> os niezale ż ny wreszcie zlecanie zewn ę trznym firmom pisania OSów

tommy
Download Presentation

Programowanie wieloplatformowe – przenośność kodu

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programowanie wieloplatformowe – przenośność kodu

  2. 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. Wstęp

  3. –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! Wstęp, cd.

  4. –nawetfunkcje 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.) Przenoszenie kodu – problemy

  5. 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++ V3.08 93 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) Wyniki testu kompatybilności

  6. - 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 - 1s na Linux, 8 s na Windows - typowy wpływ to ok . 20% czasu programu - szybka grafika 3d lepsza pod Windows Inne różnice między kompilatorami C++

  7. 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 Narzędzia i biblioteki ułatwiające przenoszenie kodu

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

  9. –       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 wxWindows – wprowadzenie

  10. –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) wxWindows – wprowadzenie

  11. –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 wxWindows – wprowadzenie

  12. 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 wxWindows – historia

  13. 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 Windows Unix(1) MacOS OS/2 wxWindows – interfejs

  14. 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), ... wxWindows – klasy

  15. 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ęciaw 2001 oceniana była przez niezależnych analityków na 41,000,000 $) wxWindows – klasy, cd.

  16. 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:www.wxwindows.org wxWindows – różne

  17. 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: www.trolltech.com QT – opis

  18. QT – klasy

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

  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 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ń PODSUMOWANIE Cały wykład ( slajdy, szerszy opis i w przyszłości opracowanie ) znajduje się w sieci na stronie www.mardo.prv.pl

More Related