do góry         o książce


3.2 Program komputerowy

-- to zapis algorytmu w języku zrozumiałym dla komputera. Ten język składa się niestety z samych zer i jedynek (wyjaśnienie w następnym rozdziale) i nie jest dla ludzi wygodny w użyciu. Dlatego do pisania programów komputerowych stworzono języki programowania (Ada, C, Pascal, Fortran, Logo, Basic...).


\begin{table}
Przykładowy tekst programu w Pascalu; program (po kompilacji i uru...
...eat
begin
writeln(i);
i:=i+1;
end
until i>10;
end.\end{verbatim}\end{table}


Tekst programu (czyli kod źródłowy, tabl. 3.1) podlega ścisłej gramatyce i ortografii danego języka -- zamiana jednej litery zwykle spowoduje, że program nie będzie działał. To znaczy zwykle nawet nie da się go skompilować.

Kompilacja to zamiana kodu źródłowego na binarny (tj. zera i jedynki), wykonywalny przez komputer. Dokonuje tego program komputerowy zwany kompilatorem. Jeśli ,,nie zrozumie'' jakiegoś słowa w kodzie źródłowym, bo np. end zamieniliśmy na edn, to po prostu odmówi kompilacji.

Niestety zdarzają się również błędy, które przechodzą przez proces kompilacji, ale powodują, że skompilowany program nie działa dokładnie według intencji autora. Takie błędy bywają trudne do wyśledzenia, szczególnie, gdy ujawniają się tylko np. w rzadko używanych funkcjach i w specyficznych sytuacjach. Mówi się o nich bugs (insekty). Nazwa pochodzi z czasów pierwszych komputerów, budowanych na lampach i zajmujących ogromne pomieszczenia. Ich programowanie polegało na przełączaniu kabelków, a zwarcia (czyli błędy) powodowały czasem ginące wśród nich ćmy.

Nawet dziś fachowcy uważają, że nie ma większych programów całkowicie wolnych od błędów3.2. Testowanie programów (czyli wykrywanie błędów) jest co najmniej tak samo kosztowne i pracochłonne jak ich pisanie. Stąd pojawiające się często darmowe ,,wersje beta'', czyli programy nie przetestowane do końca -- ich udostępnianie wiązane jest z nadzieją, że resztę błędów znajdą użytkownicy.

Ważne jest rozgraniczenie dwóch postaci programu komputerowego:

Kod źródłowy
wygląda jak przykład z tablicy 3.1. Żeby uruchomić program, kod źródłowy trzeba najpierw skompilować, czyli stworzyć program wykonywalny. Najważniejsza w kodzie źródłowym jest możliwość dokładnego prześledzenia działania programu. W przypadku programów, których kod źródłowy składa się z setek tysięcy linii, sprawa przestaje być prosta nawet dla specjalisty, ale i tu pomagają komputery.
Program wykonywalny
(kod wynikowy) to postać binarna, czyli nadająca się do uruchamiania i używania programu, ale nie do analizy jego działania.

Od pewnego czasu coraz większego znaczenia nabiera (głównie dzięki Internetowi) idea ,,otwartych źródeł'', według której każdy użytkownik powinien mieć prawo wglądu w kod źródłowy programu, którego używa, a nawet jego modyfikacji, czyli dostosowania do własnych potrzeb. Opiszemy to bliżej w rozdziale 6.5. Jednak w przypadku komercyjnych programów i systemów operacyjnych kod źródłowy bywa wciąż pilnie strzeżoną tajemnicą producenta, a użytkownik dostaje wyłącznie programy wykonywalne (czyli zera i jedynki).


do góry o książce
Dalej: 3.3 Zera i jedynki Do góry: 3. Maszyny cyfrowe Wstecz: 3.1 Algorytm