Metody Programowania



Podobne dokumenty
Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych ul. Koszykowa 75, Warszawa

Podstawa programowa kształcenia ogólnego informatyki w gimnazjum

KLAUZULE ARBITRAŻOWE

ECDL Advanced Moduł AM3 Przetwarzanie tekstu Syllabus, wersja 2.0

System Informatyczny CELAB. Przygotowanie programu do pracy - Ewidencja Czasu Pracy

Wtedy wystarczy wybrać właściwego Taga z listy.

System kontroli wersji SVN

epuap Ogólna instrukcja organizacyjna kroków dla realizacji integracji

Sieci komputerowe cel

Instrukcja obsługi Norton Commander (NC) wersja 4.0. Autor: mgr inż. Tomasz Staniszewski

Informatyka, I stopień. Programowanie (PRO300.1)

Program szkoleniowy Efektywni50+ Moduł III Standardy wymiany danych

Postanowienia ogólne. Usługodawcy oraz prawa do Witryn internetowych lub Aplikacji internetowych

INFORMATYKA dla gimnazjum Opis założonych osiągnięć ucznia klasy trzeciej

GEO-SYSTEM Sp. z o.o. GEO-RCiWN Rejestr Cen i Wartości Nieruchomości Podręcznik dla uŝytkowników modułu wyszukiwania danych Warszawa 2007

Opis programu do wizualizacji algorytmów z zakresu arytmetyki komputerowej

Audyt SEO. Elementy oraz proces przygotowania audytu. strona

PERSON Kraków

API transakcyjne BitMarket.pl

WYKŁAD 8. Postacie obrazów na różnych etapach procesu przetwarzania

Urządzenie do odprowadzania spalin

Dziedziczenie : Dziedziczenie to nic innego jak definiowanie nowych klas w oparciu o już istniejące.

SKRÓCONA INSTRUKCJA OBSŁUGI ELEKTRONICZNEGO BIURA OBSŁUGI UCZESTNIKA BADANIA BIEGŁOŚCI

Specyfikacja techniczna banerów Flash

Systemy mikroprocesorowe - projekt

Tytuł pracy. Praca dyplomowa inżynierska. Filip Piechocki. Tytuł Imię i Nazwisko

Warszawska Giełda Towarowa S.A.

Komunikacja w sieci Industrial Ethernet z wykorzystaniem Protokołu S7 oraz funkcji PUT/GET

Temat: Funkcje. Własności ogólne. A n n a R a j f u r a, M a t e m a t y k a s e m e s t r 1, W S Z i M w S o c h a c z e w i e 1

VinCent Office. Moduł Drukarki Fiskalnej

Aktualizacja CSP do wersji v7.2. Sierpień 2014

WSTĘP DO PROGRAMOWANIA

Generalnie przeznaczony jest do obsługi systemów klimatyzacyjnych i chłodniczych.

OPIS PRZEDMIOTU ZAMÓWIENIA

OGŁOSZENIE O ZAMÓWIENIU- DOSTAWY

W dobie postępującej digitalizacji zasobów oraz zwiększającej się liczby dostawców i wydawców

Wskazówki dotyczące przygotowania danych do wydruku suplementu

Bojszowy, dnia r. Znak sprawy: GZOZ/P1/2010 WYJAŚNIENIE TREŚCI SIWZ

JADWIGA SKIMINA PUBLIKACJA NA TEMAT: NAUKA MS. WORD 2000 W KLASIE IV

Oprogramowanie klawiatury matrycowej i alfanumerycznego wyświetlacza LCD

Bazy danych. Andrzej Łachwa, UJ, /15

Jak usprawnić procesy controllingowe w Firmie? Jak nadać im szerszy kontekst? Nowe zastosowania naszych rozwiązań na przykładach.

Zintegrowane Systemy Zarządzania Biblioteką SOWA1 i SOWA2 SKONTRUM

Microsoft Management Console

Wykład 2. Budowa komputera. W teorii i w praktyce

Praca na wielu bazach danych część 2. (Wersja 8.1)

OPIS PRZEDMIOTU ZAMÓWIENIA DO ZAPYTANIA KE1/POIG 8.2/13

EGZAMIN MATURALNY Z INFORMATYKI 17 MAJA 2016

INFORMATOR TECHNICZNY GE FANUC. Rezerwacja w sterownikach programowalnych GE Fanuc. Standby Redundancy najprostszy system rezerwacji

Projektowanie bazy danych

WYMAGANIA EDUKACYJNE I KRYTERIA OCENIANIA Z PRZEDMIOTU PROGRAMOWANIE APLIKACJI INTERNETOWYCH

Archiwum Prac Dyplomowych

REJESTRATOR RES800 INSTRUKCJA OBSŁUGI

USTAWA. z dnia 26 czerwca 1974 r. Kodeks pracy. 1) (tekst jednolity)

PODSTAWY METROLOGII ĆWICZENIE 4 PRZETWORNIKI AC/CA Międzywydziałowa Szkoła Inżynierii Biomedycznej 2009/2010 SEMESTR 3

Technologie Informacyjne

Kancelaris - Zmiany w wersji 2.50

UKŁAD ROZRUCHU SILNIKÓW SPALINOWYCH

SERI A 93 S E RI A 93 O FLUSH GRID WITHOUT EDGE TAB

Sieć komputerowa grupa komputerów lub innych urządzeo połączonych ze sobą w celu wymiany danych lub współdzielenia różnych zasobów, na przykład:

System do kontroli i analizy wydawanych posiłków

Ogólna charakterystyka kontraktów terminowych

Formularz rzeczowo-cenowy PAKIET 2

Komentarz technik dróg i mostów kolejowych 311[06]-01 Czerwiec 2009

Polska-Warszawa: Usługi skanowania 2016/S

Niezależnie od rodzaju materiału dźwiękowego ocenie podlegały następujące elementy pracy egzaminacyjnej:

Automatyzacja procesu publikowania w bibliotece cyfrowej

Przygotowały: Magdalena Golińska Ewa Karaś

PRZEDMIOTOWY SYSTEM OCENIANIA Z JĘZYKA ANGIELSKIEGO KLASY I-III GIMNAZJUM

Platforma do obsługi zdalnej edukacji

Arkusz zawiera informacje prawnie chronione do momentu rozpocz cia egzaminu.

Instalacja programu. Omówienie programu. Jesteś tu: Bossa.pl

Harmonogramowanie projektów Zarządzanie czasem

Moduł. Rama 2D suplement do wersji Konstruktora 4.6

Logowanie do systemu Faktura elektroniczna

Centrum Informatyki "ZETO" S.A. w Białymstoku. Instrukcja użytkownika dla urzędników nadających uprawnienia i ograniczenia podmiotom w ST CEIDG

Spis treści. 1. Transcend SSD18C3 128GB Testy Podsumowanie Koniec spisu treści - Realitynet.pl - przystępnie o komputerach

Komentarz do prac egzaminacyjnych w zawodzie technik administracji 343[01] ETAP PRAKTYCZNY EGZAMINU POTWIERDZAJĄCEGO KWALIFIKACJE ZAWODOWE

Temat: Czy świetlówki energooszczędne są oszczędne i sprzyjają ochronie środowiska? Imię i nazwisko

Architektura komputerów

Elementy cyfrowe i układy logiczne

ZASADA PARTYCYPACJI SPOŁECZNEJ

Pracownia internetowa w każdej szkole. Opiekun pracowni internetowej SBS 2003 PING

Bazy danych II. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

ĄŚŹ, czyli polskie ogonki w Internecie

Wsparcie w realizacji projektów. Podział projektów. Potrzeby, a rodzaje programów

Arkusz zawiera informacje prawnie chronione do momentu rozpocz cia egzaminu.

Charakterystyka systemów plików

OptiMore Importer Rejestru VAT. Instrukcja obsługi programu

Instrukcja do Arkusza kosztorysowania sieci klasy NGA na obszarach wymagających wsparcia publicznego.

Konferencja Sądu Arbitrażowego przy SIDiR WARUNKI KONTRAKTOWE FIDIC KLAUZULA 13 JAKO ODMIENNY SPOSÓB WYKONANIA ROBÓT A NIE ZMIANA UMOWY

Piotr Błędowski Instytut Gospodarstwa Społecznego Szkoła Główna Handlowa. Warszawa, r.

INFORMATOR TECHNICZNY WONDERWARE

Zobacz to na własne oczy. Przyszłość już tu jest dzięki rozwiązaniu Cisco TelePresence.

Generowanie kodów NC w środowisku Autodesk Inventor 2014

Komputer i urządzenia z nim współpracujące

Bazy danych informacje podstawowe

Metody opracowywania dokumentów wielostronicowych. Technologia Informacyjna Lekcja 28

Edycja geometrii w Solid Edge ST

Transkrypt:

POLITECHNIKA KRAKOWSKA - WIEiK KATEDRA AUTOMATYKI i TECHNIK INFORMACYJNYCH Metody Programowania www.pk.edu.pl/~zk/mp_hp.html Wykładowca: dr inż. Zbigniew Kokosiński zk@pk.edu.pl

Wykład 14: Przenośność oprogramowania Wprowadzenie Jak pisać przenośne oprogramowanie? Język Pliki nagłówkowe i biblioteki Organizacja programu Izolowanie Wymiana danych - kolejność bajtów Format CVF Przenośność i uaktualnianie Uniwersalne kodowanie Podsumowanie

Wprowadzenie Zapewnienie poprawności i wydajności programu pracującego w jednym środowisku wymaga od programisty wiele wysiłku. Czy stworzony program da się przenieść do środowiska z innym kompilatorem, procesorem lub systemem operacyjnym? Jeśli tak, to oprogramowanie cechuje wtedy przenośność (portability). Program jest tym bardziej przenośny im mniej modyfikacji niezbędnych do pracy w innym środowisku wymaga. Przenośność zwiększa zakres stosowalności danego programu. Oprogramowanie bardziej ogólne niż podano w pierwotnej specyfikacji będzie bardziej użyteczne i tańsze w przyszłości w utrzymaniu. Im mniej program zależy od specjalnych właściwości kompilatora, systemu operacyjnego czy sprzętu tym lepiej (jest bardziej odporny na nieunikniony upgrade). Program przenośny to równocześnie lepszy program, lepiej skonstruowany i lepiej przetestowany.

Wprowadzenie Zapewnienie poprawności i wydajności programu pracującego w jednym środowisku wymaga od programisty wiele wysiłku. Czy stworzony program da się przenieść do środowiska z innym kompilatorem, procesorem lub systemem operacyjnym? Jeśli tak, to oprogramowanie cechuje wtedy przenośność (portability). Program jest tym bardziej przenośny im mniej modyfikacji niezbędnych do pracy w innym środowisku wymaga. Przenośność zwiększa zakres stosowalności danego programu. Oprogramowanie bardziej ogólne niż podano w pierwotnej specyfikacji będzie bardziej użyteczne i tańsze w przyszłości w utrzymaniu. Im mniej program zależy od specjalnych właściwości kompilatora, systemu operacyjnego czy sprzętu tym lepiej (jest bardziej odporny na nieunikniony upgrade). Program przenośny to równocześnie lepszy program, lepiej skonstruowany i lepiej przetestowany.

Jak pisać przenośne oprogramowanie? Staramy się tak pisać oprogramowanie, aby mogło być wykonywane na zbiorze wspólnym różnych standardów, interfejsów i środowisk, w których ma potencjalnie pracować. Zamiast dodawać specjalny kod usuwający brak przenośności lepiej jest dostosować cale oprogramowanie do nowych ograniczeń (nowego zbioru wspólnego). Korzystając z abstrahowania i metod ukrywania specyficznych własności wyodrębniamy i kontrolujemy te fragmenty nieprzenośnego kodu, których nie udaje się uniknąć.

Język Rozwinięte języki programowania posiadają swoje standardy. Standard nie jest ścisłą definicją języka. Pozostawia pole do interpretacji twórcom kompilatorów, co z jednej strony powoduje mniej ograniczeń, ale także prowadzi do błędów i nieprzewidzianych problemów z przenośnością. Zasady ogólne: trzymaj się standardu programuj w głównym nurcie języka pamiętaj o niezdefiniowanych własnościach języka, prowadzących do większej elastyczności przy pisaniu kompilatorów, co jest niestety źródłem wielu problemów; Przykładowe problemy: rozmiary typów danych kolejność obliczeń uwzględnianie znaku liczby w wartościach typu char. przesunięcie arytmetyczne/logiczne kolejność bajtów wyrównywanie składowych struktury i klasy pola bitowe (zależne od maszyny)

Pliki nagłówkowe i biblioteki Wzbogacają język o dodatkowe usługi. Przykład: funkcje wejścia-wyjścia udostępniane przez pliki nagłówkowe stdio.h (język C), iostream.h (C++), java.io (Java). Usługi te nie należą do języka, ale są zdefiniowane razem z językiem i powinny być częścią środowiska, w którym są świadczone. Biblioteki są potencjalnym źródłem nieprzenośności. Zalecenie: używaj bibliotek standardowych (nieraz wbrew przyzwyczajeniom), np. funkcja strdup do kopiowania napisów jest poza ANSI C Problem z stdio.h, obsługującym kompilatory C sprzed ANSI C, ANSI C oraz C++. Stosowana wtedy kompilacja warunkowa z dyrektywami #if i #ifdef prowadzi do różnych komplikacji. Lepiej jest używać odrębne pliki nagłówkowe dla każdego kompilatora i środowiska.

Pliki nagłówkowe i biblioteki W niektórych wypadkach istnieją inne ograniczenia, będące źródłem problemów. Przykład: liczba sygnałów. W ANSI C jest 6, wychwytywanych funkcją signal. W standardzie POSIX jest 19. W większości systemów typu UNIX jest 32. Kompromis pomiędzy funkcjonalnością i przenośnością. Inne standardy: interfejsy systemów operacyjnych, sieciowe i graficzne. Są bardziej i mniej uniwersalne (POSIX, Win API). Zalecane jest postępowanie analogiczne jak wyżej.

Organizacja programu Są dwa biegunowe podejścia: suma albo iloczyn zbiorów właściwości. Wybór najlepszych cech systemów powoduje maksymalizację korzyści z możliwości każdego systemu ale płacimy za to rozmiarem programu i złożonością jego instalowania oraz komplikacją kodu zawierającego dyrektywy kompilacji warunkowej. Alternatywnie: wybór właściwości wszędzie dostępnych eliminuje wady poprzedniego podejścia za cenę ascezy, np. zmniejszenia liczby systemów docelowych czy wydajności systemu.

Izolowanie Błędem jest pisanie nieprzenośnego kodu rozproszonego po całym programie, postają problemy z kompilacją warunkową. Zalecenia: zależności systemowe powinny być zlokalizowane w oddzielnych plikach, po jednym dla każdego systemu. Pliki te mogą zawierać implementację przenośnego interfejsu do systemu operacyjnego można np. stworzyć przenośną bibliotekę graficzną dla edytora zamiast pisać interfejsy do takich systemów jak X Window. Taka biblioteka może posłużyć także innym programom. Przenośne środowiska graficzne takie jak OpenGL, Tcl/Tk i Java są obecnie dostępne dla różnych platform zależności od systemów ukrywaj poza interfejsami

Wymiana danych Do wymiany danych używaj tekstu!!!

Kolejność bajtów: big-endian oraz little-endian Gdy dane zapisywane są przy użyciu wielu (co najmniej dwóch) bajtów powstaje możliwość różnego uporządkowania tych bajtów w pamięci i podczas transmisji. Kolejność bajtów (ang. byte order, endianness) to konwencja ustalająca ten porządek. Big-endian (porządek malejący, od grubego końca ) to forma zapisu danych, w której jako pierwszy zapisywany jest najbardziej znaczący bajt. Dotyczy to np. procesorów SPARC, Motorola 68000, PowerPC 970 Występuje tu analogia z zapisem liczb uzywanym na co dzień. Little-endian (porządek rosnący, od cienkiego końca ) to forma zapisu danych, w której jako pierwszy zapisywany jest najmniej znaczący bajt. Dotyczy to np. procesorów x86, VAX Zmiana kolejności może być wykonana programowo lub sprzętowo. Robią to m.in. Procesory PowerPC (do serii G4), SPARC, ARM. Źródłosłów : J. Swift, Podróże Guliwera

Kolejność bajtów - przykład

Kolejność bajtów - przykład Wynik przedstawionego programu będzie różny w zależności maszyny. W maszynie PDP-11 (historycznej) występuje porządek mieszany z podziałem sekwencji rosnącej na dwubajtowe porcje a w nich porządek malejący : 11 22 33 44 22 11 44 33. Kolejność bajtów ma wielkie znaczenie przy transmisjach w połączeniach sieciowych.

Format CSV Format CSV (comma-separated values) jest popularnym sposobem przedstawiania danych stabelaryzowanych. Każdy wiersz tabeli jest jednym wierszem tekstu, a pola wiersza są odseparowane przecinkami. Format CSV nadaje się do zastosowania w arkuszach kalkulacyjnych, również tych zamieszczanych na stronach WWW. Wybierając odniesienie do strony Download Spreadsheet Format otrzymujemy potrzebne dane w formacie CSV. Dane tego typu można pobierać ze stron WWW automatycznie przy użyciu odpowiednich narzędzi, np. programu w języku Tcl. Do przetwarzania danych w formacie CSV potrzebna jest biblioteka, oraz operacje przekształceń numerycznych. W przypadku braku takiej biblioteki można ją zaprojektować.

Format CSV przykład 1

Format CSV przykład 2

Format CSV przykład 3 Program w języku Tcl, służący do połączenia się w witryną informacji giełdowych w sieci (połączenie z serwerem za pomocą tzw. sockets) i automatycznego pobrania danych w formacie CSV. Sekwencja f= występująca po znaku & informuje jakie wartości należy pobrać : s - nazwa akcji, 11 ostatnia cena, c1 zmiana w stosunku do ceny z dnia poprzedniego itp.). Ten przedstawiony format jest jednak nieudokumentowany.

Przenośność i uaktualnianie Ważnym źródłem nieprzenośności są zmiany w oprogramowaniu systemowym. Przykład 1: zmiana koncepcji (i interpretacji) polecenia echo w systemie Unix, powoduje nieprzenośność wielu skryptów powłoki zawierających to polecenie. Przykład 2: różne udoskonalenia w poleceniu sum obliczającym rozmiar i sumę kontrolną pliku w systemie Unix spowodowały, że wynik polecenia w zależności od wersji dają różne wyniki (!), co prowadzi do błędnych wniosków przy porównywaniu kopiowanych wersji plików z ich oryginałami. Rozwiązanie: przypisanie innej nazwy po zmianie specyfikacji. Przykład 3: zgodność programów z poprzednią wersją (backward compatibility) program (np.edytor tekstu, czy arkusz kalkulacyjny) powinien nie tylko czytać dane w formatach stosowanych w poprzednich wersjach, ale także zapisywać wyniki w tych formatach.

Uniwersalne kodowanie Anglocentryzm wielu twórców oprogramowania skutkuje nieprzenośnością oprogramowania ze względu na granice językowe i kulturowe. Nie można zakładać, ze znaki należą do 7-bitowego kodu ASCII. W Europie powszechnie stosuje się 8-bitowe rozszerzenia tego kodu, umożliwiające zapis różnych znaków diakrytycznych, różnych w rozmaitych językach. W Azji kodowanie znaków wymaga często 16 bitów (Chiny, Japonia, Korea). Uwaga na kolejność bajtów! Unicode, jako udana próba wprowadzenia jednego kodu na całym świecie (format popularny w Internecie, standardowy w Javie). Dokumenty w Unicode przekształca się ostatecznie w strumień 2-3 bajtów w kodzie UTF-8, a kod ASCII w jeden bajt UTF-8. Inne problemy: formaty dat, różna długość tekstów w różnych językach.

Literatura Kernighan B.W., Pike R. : Lekcja programowania, WN-T, Warszawa 2002 Kernighan B., Ritchie D. : Język ANSI C, WN-T, Warszawa 1988 Stroustrup B. : Język C++, WN-T, Warszawa 1997