Trzy postacie programu – od tekstu pisanego przez człowieka, przez kod pośredni, po instrukcje wykonywane przez procesor.
Ten sam program może istnieć w kilku postaciach, coraz bardziej oddalonych od człowieka, a coraz bliższych procesorowi.
Kod źródłowy to tekst napisany przez programistę w języku wysokiego poziomu. Jest czytelny, można go poprawiać i to on podlega ochronie jako utwór. Dostęp do niego decyduje o tym, czy program jest otwarty.
Kod maszynowy to ciąg liczb binarnych, które procesor wykonuje bezpośrednio. Jest nieczytelny dla człowieka i związany z konkretną architekturą procesora. Blisko niego stoi asembler – zapis tych samych instrukcji przy pomocy skrótów słownych, czytelny na tyle, by dało się w nim pracować.
Kod pośredni leży pomiędzy. Nie jest już tekstem źródłowym, ale też nie jest instrukcjami konkretnego procesora – to uniwersalna forma wykonywana przez maszynę wirtualną. Dzięki temu jeden skompilowany plik działa na różnych systemach. Tak działa Java.
| Postać | Czytelna dla człowieka | Wykonuje ją |
|---|---|---|
| Kod źródłowy | tak | nikt bezpośrednio |
| Kod pośredni | nie | maszyna wirtualna |
| Asembler | częściowo | procesor po tłumaczeniu |
| Kod maszynowy | nie | procesor bezpośrednio |
Najczęściej pytana jest kolejność przekształceń oraz to, która postać jest wykonywana przez procesor. Odpowiedź: wyłącznie kod maszynowy.
Drugi typ pytania dotyczy kodu pośredniego i przenośności. Warto umieć wyjaśnić, że dzięki maszynie wirtualnej ten sam plik działa na różnych systemach, kosztem niewielkiego spadku wydajności.
Bo każda architektura ma własny zestaw rozkazów. Instrukcje zapisane dla jednej rodziny procesorów nie mają sensu dla innej.
Dekompilacja pozwala odtworzyć coś zbliżonego, ale bez nazw zmiennych i komentarzy. Efekt bywa trudny do zrozumienia i nie jest oryginałem.
Do zadań wymagających pełnej kontroli nad sprzętem i maksymalnej wydajności – sterowników i systemów wbudowanych. W typowym programowaniu jest zbędny.
Zagadnienia z tego samego obszaru matury – warto je powtórzyć razem: