jak pisać przenośny kod. wstęp do programowania wieloplatformowego pełna wersja.pdf

(9172 KB) Pobierz
IDZ DO
PRZYK£ADOW Y ROZDZIA£
Jak pisaæ przenoœny kod.
Wstêp do programowania
wieloplatformowego
SPIS TREœCI
KATALOG KSI¥¯EK
Autor: Brian Hook
T³umaczenie: Maciej Jezierski
ISBN: 83-246-0625-4
Format: B5, stron: 272
KATALOG ONLINE
ZAMÓW DRUKOWANY KATALOG
TWÓJ KOSZYK
DODAJ DO KOSZYKA
Przenieœ swoje programy na inne platformy systemowe
Poznaj techniki przenoszenia kodu
Stwórz uniwersalne interfejsy u¿ytkownika
Uwzglêdnij ró¿nice pomiêdzy systemami operacyjnymi
W bran¿y informatycznej ogromny nacisk k³adzie siê na jak najszybsze ukoñczenie
produktu dla konkretnej platformy. Jednak gdy produkt staje siê popularny,
a u¿ytkownicy innych systemów operacyjnych oczekuj¹ od producenta wersji mo¿liwej
do uruchomienia na swoim sprzêcie, wiele firm staje przed powa¿nym problemem. Kod
Ÿród³owy tworzony z myœl¹ o okreœlonym systemie operacyjnym lub procesorze zawiera
elementy bardzo trudne do „prze³o¿enia” na inn¹ platformê. Istniej¹ jednak techniki
programowania, których zastosowanie zdecydowanie u³atwia póŸniejsz¹ konwersjê,
a odpowiednie wykorzystanie nie przed³u¿a czasu przygotowania innej wersji aplikacji.
Czytaj¹c ksi¹¿kê „Jak pisaæ przenoœny kod. Wstêp do programowania
wieloplatformowego”, poznasz te techniki. Znajdziesz tu uniwersalne zasady tworzenia
przenoœnego oprogramowania. Dowiesz siê, jak zaplanowaæ nowy projekt tak, aby jego
przeniesienie na inn¹ platformê nie stanowi³o problemu. Nauczysz siê przerabiaæ
istniej¹cy kod i dostosowywaæ go do specyfiki innych platform. Poznasz sposoby
unikania b³êdów wynikaj¹cych z ró¿nic pomiêdzy platformami. Znajdziesz w tej ksi¹¿ce
tak¿e przyk³ady i wzorce, dziêki którym bêdziesz w stanie tak pisaæ kod, aby
przeniesienie go na inn¹ platformê odbywa³o siê szybko i bez k³opotów.
Planowanie procesu przenoszenia kodu
Techniki wykorzystywane podczas przenoszenia kodu
Systemy kontroli plików Ÿród³owych
Ró¿nice pomiêdzy procesorami
Preprocesory i kompilatory
Tworzenie interfejsów u¿ytkownika
Implementacja operacji sieciowych
Korzystanie z bibliotek dynamicznych
Operacje na systemie plików
Lokalizacja aplikacji
CENNIK I INFORMACJE
ZAMÓW INFORMACJE
ONOWOœCIACH
ZAMÓW CENNIK
CZYTELNIA
FRAGMENTY KSI¥¯EK ONLINE
Wydawnictwo Helion
ul. Koœciuszki 1c
44-100 Gliwice
tel. 032 230 98 63
e-mail: helion@helion.pl
Stwórz uniwersalne programy
797714273.017.png 797714273.018.png 797714273.019.png 797714273.020.png 797714273.001.png 797714273.002.png 797714273.003.png 797714273.004.png 797714273.005.png 797714273.006.png 797714273.007.png 797714273.008.png 797714273.009.png 797714273.010.png 797714273.011.png 797714273.012.png 797714273.013.png 797714273.014.png 797714273.015.png 797714273.016.png
 
Spis treści
PRZEDMOWA ........................................................................................... 11
PODZIĘKOWANIA .................................................................................... 15
WPROWADZENIE
SZTUKA TWORZENIA PRZENOŚNEGO OPROGRAMOWANIA ................. 17
Korzyści z przenośności .........................................................................................................18
Części składowe platformy ....................................................................................................20
Problem z założeniami ...........................................................................................................20
Standardy kodowania .............................................................................................................21
Szkielet dla przenośnego programowania ..............................................................................21
1
KONCEPCJE PRZENOŚNOŚCI ................................................................... 23
Przenośność jest stanem umysłu, nie sposobem programowania .........................................24
Rozwijaj dobre przenośne nawyki .........................................................................................24
Dobre nawyki są lepsze od szczegółowej znajomości błędów i standardów ........................25
Planuj przenośność dla nowego projektu ...............................................................................28
Przenoś stary kod ...................................................................................................................33
2
ANSI C I C++ ............................................................................................ 37
Dlaczego nie inny język? .........................................................................................................37
Dialekty C i C++ ..................................................................................................................39
Przenośność C i C++ ...........................................................................................................40
3
TECHNIKI STOSOWANE PODCZAS PRZENOSZENIA ............................... 43
Unikaj nowych funkcjonalności języka ...................................................................................44
Radź sobie ze zmienną dostępnością funkcjonalności ............................................................44
Używaj bezpiecznej serializacji i deserializacji danych ...........................................................48
Dołączaj testowanie .............................................................................................................. 50
Używaj opcji kompilacji ......................................................................................................... 52
Oddziel pliki zależne od platformy od plików przenośnych .................................................. 55
Pisz prosty kod ...................................................................................................................... 55
Używaj unikalnych nazw ........................................................................................................ 56
Implementuj abstrakcje .........................................................................................................58
Programowanie niskopoziomowe ......................................................................................... 74
4
EDYCJA I KONTROLA PLIKÓW ŹRÓDŁOWYCH ........................................81
Różnice w znacznikach końca linii plików tekstowych .......................................................... 82
Przenośne nazwy plików ....................................................................................................... 83
Kontrola plików źródłowych ................................................................................................. 84
Narzędzia do budowania ....................................................................................................... 89
Edytory .................................................................................................................................. 95
Podsumowanie ...................................................................................................................... 95
5
RÓŻNICE POMIĘDZY PROCESORAMI .......................................................97
Wyrównanie .......................................................................................................................... 98
Uporządkowanie bajtów ..................................................................................................... 101
Reprezentacja liczb całkowitych ze znakiem ....................................................................... 108
Rozmiar typów macierzystych ............................................................................................. 108
Przestrzeń adresowa ........................................................................................................... 111
Podsumowanie .................................................................................................................... 112
6
OPERACJE ZMIENNOPRZECINKOWE ......................................................113
Historia liczb zmiennoprzecinkowych ................................................................................. 113
Standardowa obsługa liczb zmiennoprzecinkowych w C i C++ ....................................... 114
Problemy z liczbami zmiennoprzecinkowymi ..................................................................... 115
Obliczenia na liczbach stałoprzecinkowych ......................................................................... 119
Przedstawianie bitowej reprezentacji liczby zmiennoprzecinkowej jako liczby całkowitej 120
Odpytywanie implementacji ................................................................................................ 124
Wyniki powodujące wyjątki ................................................................................................. 126
Formaty przechowywania ................................................................................................... 129
Podsumowanie .................................................................................................................... 130
7
PREPROCESOR ........................................................................................131
Symbole predefiniowane ..................................................................................................... 132
Pliki nagłówkowe ................................................................................................................. 133
Makropolecenia konfiguracyjne ........................................................................................... 136
Kompilacja warunkowa ....................................................................................................... 137
Instrukcja pragma ................................................................................................................ 138
Podsumowanie .................................................................................................................... 139
6
Spis treści
8
KOMPILATORY ....................................................................................... 141
Rozmiar struktury, upakowanie i wyrównanie .....................................................................142
Niespójności w zarządzaniu pamięcią ..................................................................................145
Stos .......................................................................................................................................146
Funkcja printf .......................................................................................................................148
Rozmiary i zachowanie typów .............................................................................................149
Konwencje wywołań ............................................................................................................156
Zwracanie struktur ...............................................................................................................160
Pola bitowe ..........................................................................................................................161
Komentarze ..........................................................................................................................162
Podsumowanie .....................................................................................................................163
9
INTERFEJS UŻYTKOWNIKA ................................................................... 165
Rozwój interfejsów użytkownika .........................................................................................166
Macierzysty interfejs GUI czy interfejs aplikacji? ..................................................................168
Grafika niskopoziomowa ......................................................................................................168
Obsługa dźwięku ..................................................................................................................169
Urządzenia wejściowe .........................................................................................................170
Narzędzia międzyplatformowe ............................................................................................171
Podsumowanie .....................................................................................................................171
10
OBSŁUGA SIECI ....................................................................................... 173
Rozwój protokołów sieciowych ...........................................................................................173
Interfejsy programistyczne ...................................................................................................174
Podsumowanie .....................................................................................................................178
11
SYSTEMY OPERACYJNE .......................................................................... 179
Rozwój systemów operacyjnych ..........................................................................................179
Środowiska goszczące i wolno stojące .................................................................................180
Paradoks przenośności systemu operacyjnego ....................................................................181
Pamięć ..................................................................................................................................182
Procesy i wątki .....................................................................................................................184
Zmienne środowiskowe ......................................................................................................190
Obsługa wyjątków ................................................................................................................192
Przechowywanie danych użytkownika .................................................................................193
Bezpieczeństwo i uprawnienia .............................................................................................196
Podsumowanie .....................................................................................................................198
Spis treści
7
12
BIBLIOTEKI DYNAMICZNE .....................................................................199
Dynamiczne konsolidowanie ............................................................................................... 200
Ładowanie dynamiczne ....................................................................................................... 200
Problemy z bibliotekami współużytkowanymi .................................................................... 201
Gnu LGPL ............................................................................................................................ 203
Biblioteki DLL w Windows .................................................................................................. 204
Obiekty współużytkowane w Linuksie ................................................................................ 207
Szkielety, wtyczki i pakiety w systemie Mac OS X .............................................................. 209
Podsumowanie .................................................................................................................... 212
13
SYSTEMY PLIKÓW ...................................................................................213
Dowiązania symboliczne, skróty i synonimy ....................................................................... 214
Specyfikacja ścieżki .............................................................................................................. 215
Bezpieczeństwo i prawa dostępu ........................................................................................ 217
Osobliwości w Macintoshu .................................................................................................. 219
Atrybuty plików ................................................................................................................... 220
Katalogi specjalne ................................................................................................................ 220
Obróbka tekstu ................................................................................................................... 220
Biblioteka uruchomieniowa C i przenośny dostęp do plików ............................................. 221
Podsumowanie .................................................................................................................... 222
14
SKALOWALNOŚĆ .....................................................................................223
Lepsze algorytmy to większa skalowalność ......................................................................... 223
Skalowalność ma swoje granice ........................................................................................... 225
Podsumowanie .................................................................................................................... 226
15
PRZENOŚNOŚĆ I DANE ...........................................................................227
Dane aplikacji i pliki zasobów .............................................................................................. 227
Tworzenie przenośnej grafiki .............................................................................................. 231
Tworzenie przenośnego dźwięku ....................................................................................... 232
Podsumowanie .................................................................................................................... 232
16
INTERNACJONALIZACJA I LOKALIZACJA ..............................................233
Łańcuchy i Unicode ............................................................................................................. 234
Waluta ................................................................................................................................. 235
Data i Czas .......................................................................................................................... 236
Elementy interfejsu .............................................................................................................. 237
Klawiatury ............................................................................................................................ 237
Podsumowanie .................................................................................................................... 237
8
Spis treści
Zgłoś jeśli naruszono regulamin