Programowanie wieloplatformowe – przenośność kodu

Slides:



Advertisements
Podobne prezentacje
20041 Projektowanie dynamicznych witryn internetowych Paweł Górczyński ASP 3.0.
Advertisements

Prezentacja na temat: Porównanie Windows XP i Windows 7
Prezentacja o MS-DOS’ie
Tematyka kursu z informatyki dzień 3
1 Linux jako system wielozadaniowy i wielodostępny.
OGÓLNIE O LINUKSIE Co to jest Linux?
Odśmiecanie Grzegorz Timoszuk
Zaawansowana składnia XML XML Schema
Platforma .Net i Vs.Net.
PHP vs. ASP PHP – lider wydajności wśród języków skryptowych.
Systemy operacyjne.
Systemy operacyjne Bibliografia:
Systemy operacyjne Bibliografia:
ASP.NET i platforma.NET Technologie internetowe ( ) Tomasz Popów
SPECJALNOŚĆ: Interaktywna Grafika Trójwymiarowa
Koordynatorzy: Krzysztof BIKONIS Marek MOSZYŃSKI
Seminarium Dyplomowe Prezentacja pracy
P I OTR SKOŁYSZ. POCHODZENIE I CELE CZYM JEST.NET ? CO IMPLEMENTUJE MONO ? ŚRODOWISKO PRACY [MONODEVELOP] SYTEMY OPERACYJNE CO PROGRAMOWAĆ ? JĘZYKI PRZYKŁADOWY.
Wielosystemowa platforma C++
Project made by Bartosz Rumiński Kl. III i rok 2007/2008.
Projekt i implementacja aplikacji do zasilania bazy danych testowymi danymi Jacek Lis Promotor: prof. dr hab. inż. Włodzimierz KASPRZAK.
1/18 LOGO Profil zespołu. 2/18 O nas Produkcja autorskich rozwiązań informatycznych dla małych i średnich firm w zakresie systemów: Baz danych Aplikacji.
TECHNOLOGIE INFORMACYJNE
SZPIF – Harmonogram, Opis narzędzi, Schemat bazy danych
Program Skype  Aleksandra Sikora, kl.III gim..
POZNAŃ SUPERCOMPUTING AND NETWORKING CENTER WP 2.1 Zdalny dostęp do bibliotek naukowych Udział w projekcie: 6,51% Osoby kontaktowe: PCSS: Maciej Brzeźniak.
ZASOBY KOMPUTERA I PRACA W SYSTEMIE OPERACYJNYM WINDOWS XP
.NET gdzie szukać? .NET co warto wiedzieć?
Pakiety w Javie Łukasz Smyczyński (132834). Czym są pakiety? Klasy w Javie są grupowane w pewne zbiory zwane pakietami. Pakiety są więc pewnym podzbiorem.
Rozwój aplikacji przy wykorzystaniu ASP.NET
System webowy do tworzenia kolektywnych prototypów aplikacji sieciowych i mobilnych Łukasz Przywarty
Web Serwisy w praktyce Technologie internetowe ( )
System operacyjny. System operacyjny Co to jest system operacyjny: jest szczególnym rodzajem programu, którego zadaniem jest koordynowanie pracy.
Podstawy programowania. Język C i C++– podstawy Temat: 1
Opracował : Przemysław Drzymała
EasyMOD kontrola modyfikacji i rozszerzeń systemu SAP
System operacyjny i jego usługi
Dr hab. Dariusz Piwczyński Katedra Genetyki i Podstaw Hodowli Zwierząt
SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE
Wymiana integracja ? oprogramowania dr Danuta Kajrunajtys.
Systemy operacyjne. Komputer aby mógł realizować zadania oraz aby wszystkie urządzenia w systemie komputerowym mogły działać poprawnie, musi być wyposażony.
Witold Bołt. Agenda W czym tkwi problem..? Po co jest oprogramowanie? Kim jest użytkownik? Zbieranie danych Co to jest design Współpraca programista-projektant.
Systemy operacyjne.
Programowanie obiektowe – zastosowanie języka Java SE
JAVA.
Temat 2: Edytory HTML.
SPECJALNOŚĆ: Oprogramowanie Systemowe
Michał Gmerek, Krzysztof Słodowicz
Systemy operacyjne Krzysztof Rumanowski.
Telefony Świata.
Czym jest Mantis? Mantis jest to system śledzenia błędów napisany w języku PHP. Współpracuje z SQL, MySQL oraz PostgreSQL. Można go zainstalować na systemach:
System operacyjny Windows
Podstawy języka skryptów
Dokumentacja obsługi programów Kamil Smużyński Piotr Kościński.
Platforma .Net.
Programy pocztowe _________________________________________________________________________________________________________________ [ Przedmiot: Projektowanie.
Struktura systemu operacyjnego
Temat 1 Pojęcie systemu operacyjnego Opracował: mgr Marek Kwiatkowski.
System Operacyjny Windows Przedstawia Mateusz Bałdyga kl. 1 „D”
Temat: Porównanie technologii php,c# oraz javascript na przykładzie webaplikacji typu społecznościowy agregator treści Autor: Wojciech Ślawski.
Języki i technologie wytwarzania stron WWW Autor: Michał Walkowski Referat.
Wyższa Szkoła Informatyki i Zarządzania W Bielsku-Białej Kierunek informatyka Specjalność : Systemy informatyczne Praca dyplomowa inżynierska : System.
Systemy operacyjne W projekcie brali udział Rabiniak Mateusz, Marek Mycek Damian Kostecki, Piotr Dojlido.
Kompilator eBook w technologii Java Dyplomant: Maciej Bagrowski Promotor: dr inż. Walery Susłow Politechnika Koszalińska Wydział Elektroniki i Informatyki.
VBA w Excel.
OS/2 Justyna Pabisek.
Podstawy programowania
Zapis prezentacji:

Programowanie wieloplatformowe – przenośność kodu

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.

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!

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.)

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++ 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)

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

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

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++)

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

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)

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

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

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

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), ...

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 $)

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: www.wxwindows.org

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: www.trolltech.com

QT – klasy

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, ...

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

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 www.mardo.prv.pl