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:
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).