Zapisz jako PDF

Transkrypt

Zapisz jako PDF
TI/ Zera i jedynki
Dlaczego akurat zera i jedynki? Otóż komputery "rozumują" w najprostszych z możliwych kategorii:
namagnesowane/rozmagnesowane (fragment powierzchni dysku lub dyskietki),
prąd płynie/nie płynie (we wnętrznościach komputera podczas pracy),
światło odbija się lub nie (od powierzchni płyty CD-ROM).
Czyli ogólnie jest/nie ma, albo 1/0. Z jedynek i zer możemy złożyć dowolną liczbę, choćby dodając
jedynki i pomijając zera. Można to zrobić znacznie efektywniej — kod dwójkowy za pomocą ośmiu
zer-lub-jedynek (bitów) pozwala zapisać liczbę całkowitą od 0 do 255. Działa to podobnie jak kod
dziesiątkowy, w którym zapisujemy liczby na co dzień.
Dwójkowy system liczbowy (inaczej binarny) to pozycyjny system liczbowy, w którym podstawą
pozycji są kolejne potęgi liczby 2. Do zapisu liczb potrzebne są więc tylko dwa znaki: 0 i 1.
Powszechnie używany w informatyce. Jak w każdym pozycyjnym systemie liczbowym, liczby zapisuje
się tu jako ciąg cyfr, z których każda jest mnożnikiem kolejnej potęgi liczby stanowiącej podstawę
systemu. Np. liczba zapisana w dziesiętnym systemie liczbowym jako 10, w systemie dwójkowym
przybiera postać 1010, gdyż:
Jednak nawet do pisania programów, nie mówiąc już o listach, używamy liter. Skoro mamy już liczby,
to pozostaje...
Ponumerować litery (ASCII)
...i jeszcze upewnić się, że różne komputery używają tej samej numeracji. Niewątpliwym standardem
jest ASCII — American Standard Code for Information Interchange. Poza literami i cyframi jest w
nim jeszcze kilka przydatnych znaczków:
Tabela ASCII
— symbole i odpowiadające im w ASCII numery (po
prawerj w każdej kolumnie)
Jedna litera to w ASCII jeden bajt. Bajt to osiem bitów, czyli liczba między 0 a 255. Tablica ASCII
(rys. 1) kończy się przed numerem 127. Za to brak tam ąćęłń... Nawet jeśli pominiemy pierwsze 32
znaki (są tam różne dziwne kody), pozostaje nam jeszcze druga połowa. Niestety, znaki wszystkich
alfabetów narodowych nie zmieszczą się tam (tj. między 128 a 255) "za jednym razem". Dlatego dla
różnych języków istnieją różne kodowania, czyli numeracje liter spoza ASCII. Dla języka polskiego
obowiązującym w Internecie standardem jest ISO3.4 8859-2. Zawiera on litery wystarczające do
pisania (poza angielskim) w językach: Albanii, Bośni, Chorwacji, Czech, Finlandii, Węgier, Polski,
Rumunii, Serbii, Słowacji i Słowenii. Wystarczają do tego (poza znakami z tablicy ) następujące
znaki:
Jako ciekawostkę zanotować warto, że w pionierskim okresie "polonizacji" komputerów mieliśmy ok.
10 różnych "standardów" kodowania polskich liter, co jest chyba swego rodzaju rekordem. Aktualnie
poza ISO 8859-2 spotkać można jeszcze kodowanie używane w produktach firmy Microsoft —
Windows-1250.
Dlatego też, aby prawidłowo wyświetlać tekst napisany w języku innym niż angielski, musimy:
wiedzieć, w jakim standardzie zakodowane są litery spoza ASCII,
mieć czcionkę (font) z literami danego języka, umieszczonymi w odpowiednich miejscach.
Właśnie wtedy, gdy nie jest spełniony któryś z tych warunków — czasem po przeniesieniu tekstu do
innego komputera — w miejsce ąćęł... pojawiają się czasami dziwne "krzaczki" albo znaki z zupełnie
innych alfabetów. Pomysł na globalne i ostateczne rozwiązanie tego problemu jest prosty: jeśli 255
to za mało, zarezerwujmy tyle miejsca, aby starczyło na litery wszystkich alfabetów naraz i ustalmy
jeden globalny standard!
Ten standard już isnieje — nazywa się UNICODE. Jego podstawą jest baza ponad 100 000 znaków z
kilkudziesięciu różnych skryptów (w uproszczeniu alfabetów). Trzeba było wielu lat pracy
przedstawicieli wielu krajów świata by skatalogować znaki (litery) używane w alfabetach greckim,
rzymskim, hebrajskim, cyrylicy, devangari,... Prawdziwym wyzwaniem są oczywiście chińskie
ideogramy — obecnie w bazie Unicode opisano ich ponad 80 000.
Każdy znak z bazy Unicode ma swój numer i zapis tekstu w Unicode'zie oznacza po prostu zapisanie
tych liczb. Istnieje parę sposobów takiego zapisu - najprostszy z nich to poprostu zapis znaków jako
32 bajtowych liczb (UTF-32). Jego wadą jest marnotrastwo miejsca. Aby zmiejszyć objętość takiego
zapisu stosuje się również bardziej skompilowane sposoby zapisu w których stosuje się różną liczbę
bitów w zależności od znaku. Np. w zapisie zwanym UTF-8, najbardziej popularne znaki (o małych
numerach) zajmują jeden bajt (czyli 8 bitów), a inne od 2 do 4 bajtów (czyli od 16 do 32 bitów).
Niestety, zanim ten standard uratuje cyfrową wieżę Babel, komputery (a tak naprawdę systemy
operacyjne i programy) muszą "zmienić swój sposób myślenia" o literach — wszak dotychczas jedna
litera to był jeden bajt, a nie dwa lub więcej! No i dopiero powstają czcionki ze znakami wszystkich
skryptów naraz: cyrylicy, hebrajskiego, chińskiego...
Rodzaje plików: pliki z danymi (tekstowe i binarne) i
programy
Co to jest plik (file)? Ciąg zer i jedynek (bitów), za pomocą którego zapisano dowolną informację —
na dysku, dyskietce, płycie CD-ROM czy taśmie. Warto sobie uświadomić ten fakt dokładnie: każdy
plik jest nieprzerwanym ciągiem zer i jedynek i niczym więcej — bez odstępów, "opisów", ani żadnej
dodatkowej informacji, która mówiłaby nam, jak dany plik odczytywać. Dlatego też, w celu
poprawnego odczytania, musimy przynajmniej wiedzieć, z jakiego rodzaju plikiem mamy do
czynienia.
Rozróżniamy przede wszystkim dwa rodzaje plików: tekstowe i binarne. Nazwy są trochę mylące, bo
wszystkie pliki są binarne, czyli zero-jedynkowe. Jednak pliki tekstowe zajmują wśród nich
wyróżnioną pozycję, sposób ich odczytywania jest bowiem najbardziej w świecie komputerów
rozpowszechnionym standardem. Znajdują się w nich litery, zamienione na bity według przepisu z
rozdziałów Zera i jedynki i Ponumerować litery. Zapisany w ten sposób plik można odczytać na
dowolnym komputerze, niezależnie od systemu operacyjnego itp. W dodatku odczytać możemy tu
rozumieć dosłownie, gdyż po zamianie bitów na litery (czyli wyświetleniu pliku ASCII) pojawia się
tekst, zwykle zrozumiały dla człowieka. Może nie zawsze całkiem zrozumiały, ale przynajmniej
powinniśmy zgadnąć, czy jest to sprawozdanie, list, tekst strony WWW czy kod źródłowy programu.
Ale nie wszystko najwygodniej opisywać literami — na przykład obrazy. W tym przypadku bity
interpretujemy zupełnie inaczej — jako liczby opisujące kolory kolejnych maleńkich fragmentów
obrazu (pikseli). Ale po samych bitach nie rozróżnimy, czy opisują tekst, czy obraz! Dlatego musimy
(my lub korzystające z plików programy, czyli w tym przypadku edytory tekstów lub programy
graficzne) wiedzieć, jakiego typu informacja znajduje się w pliku i jak ją interpretować. W
przeciwnym razie, jeśli liczby opisujące obraz będziemy chcieli interpretować jako tekst (wczytując
do edytora tekstów), dostaniemy bezsensowną sekwencję typu *5&^%\U)(&^%$.
Ogólnie, pliki binarne to wszystkie pliki nietekstowe. Mogą zawierać obrazy, dźwięki, filmy lub
dowolne dane. Jeśli zapisano je w jednym z ogólnie przyjętych standardów (jak na przykład te z
tabl. %i 2), to zwykle daje się je odczytać (czyli sensownie wyświetlić lub odegrać) na większości
komputerów, jeśli tylko zainstalowano na nich odpowiednie programy.
Plik może też zawierać program komputerowy — wtedy zrozumiały jest tylko dla tego systemu
operacyjnego, dla którego przeznaczony jest program. Na przykład program napisany dla MS
Windows (którego nazwa kończy się zwykle na .exe) można uruchomić na każdym komputerze z
(odpowiednią wersją) MS Windows. Nie da się go uruchomić pod żadnym innym systemem
operacyjnym, np. MacOS czy GNU/Linux. Standardowe formaty plików graficznych, muzycznych, no
i oczywiście tekstowych, powinny dać się wyświetlić na większości komputerów (jeśli zainstalowano
odpowiednie programy).
Program może czasem po prostu odtwarzać film czy animację. Dla użytkowników tego samego
systemu będzie on łatwiejszy do odtworzenia od zapisu filmu w którymś ze standardowych formatów
(np. star.avi, *.mpg), gdyż nie wymaga, żeby na komputerze był zainstalowany program obsługujący
dany format. Ale, szczególnie w MS Windows, odtwarzanie takich programów, "znalezionych" w
Internecie czy otrzymanych od znajomych pocztą elektroniczną, niesie ze sobą niebezpieczeństwo
uszkodzenia systemu przez wirus, którym program może być zainfekowany (problem ten opisano
bliżej w rozdziale 4.4). Warto zapamiętać, że przesyłając pocztą niewinnie zabawne "programiki",
możemy narazić adresata na utratę danych (chyba, że pracuje w innym systemie operacyjnym i po
prostu nie będzie mógł programu uruchomić).
Plik może też zawierać dane zapisane przez jakiś program w formacie niezgodnym z żadnym
powszechnym standardem. Wtedy do ich odczytania potrzebny jest ten właśnie program (lub inny,
potrafiący importować, czyli wczytywać, zapisane przez ten program dane). Dotyczy to również
tekstów. Gdybyśmy pozostali przy treści, czyli samym tekście, wystarczyłby standard ASCII. Jednak
coraz częściej nad treścią dominuje forma — w najprostszym liście trafia się nawet kilka różnych
czcionek. Informacja o rozmiarach i rodzajach czcionek, jak również rozmieszczeniu tekstu na
stronie, nie doczekała się standardowego formatu zapisu — producent każdego programu uważa
swój format za jedynie słuszny. Jedynym dość rozpowszechnionym standardem jest oparty na ASCII
rich text format (pliki *.rtf), jednak nie daje on tylu możliwości udziwniania tekstu, jak
niestandardowe formaty różnych programów, stąd ograniczona popularność.
Ten sam ciąg bitów można interpretować na różne sposoby; na przykład
01000011010011110011111100111111 można odczytać jako:
odczyt
interpretacja
01000011010011110011111100111111
trzydzieści dwa bity
0.747303187847137451
liczba rzeczywista (32-bitowa)
67 79 63 63
cztery liczby całkowite (8-bitowe)
C O ? ?
litery (ASCII)
0100001101001111 0011111100111111 dwie „paczki" po szesnaście bitów
20291 16191
dwie liczby całkowite (16-bitowe)
Skoro z samych bitów trudno zgadnąć rodzaj pliku, pozostaje wykorzystać do tego celu nazwę.
Końcowa część nazwy pliku, tradycyjnie oddzielana kropką, jest zwykle przeznaczona do określenia
jego typu. Na przykład w nazwie sprawozdanie_z_maja.txt człon .txt, czyli rozszerzenie
nazwy, oznacza typ pliku (tekstowy, zwykle ASCII). Właściwa nazwa, która powinna kojarzyć się z
zawartością, to sprawozdanie_z_maja. Pliki z rozszerzeniem txt określamy często jako *.txt,
gdzie * zastępuje dowolny ciąg znaków.
Rozszerzenia plików mogą być przez system kojarzone z konkretnymi programami, zdolnymi do
wyświetlania i/lub edycji plików danego formatu. Stąd często kliknięcie pliku, którego rozszerzenie
jest przez system skojarzone z obsługującym ten typ programem, wystarcza do uruchomienia
odpowiedniego programu i otwarcia pliku.
Niektóre standardowe rozszerzenia nazw plików
pliki tekstowe ASCII
*.txt, *.asc
obrazy *.jpg, *.jpeg, *.gif, *.bmp, *.pcx, *.png
video
*.mpg, *.mpeg, *.avi
dźwięk *.mp3, *.wav, *.au, *.mid
pliki dla programów TEX i LATEX *.tex
teksty programów (C, Pascal, Java...)
*.c, *.pas, *.java...
pliki dla WWW
*.html, *.htm
programy MS Windows
*.exe
skrypty MS Windows
*.bat, *.vbs, *.vsh
PostScript (książki, rysunki)
*.ps, *.eps
Portable Document Format
*.pdf
archiwa skompresowanych plików *.zip, *.rar, *.arj, *.gz, *.tgz, *.Z,
*.tar.Z
Rozszerzenia plików tworzonych przez niektóre programy
MS Word (edytor tekstów)
*.doc
MS Excel (arkusz kalkulacyjny) *.xls, *.xlw
MS Access (baza danych) *.mdb
DBase (baza danych)
*.db
Corel Draw! (program graficzny) *.cdr
Corel PhotoPaint
*.cpt