Programowanie
Na pewno zdarzyło ci się korzystać z książki kucharskiej, poradnika majsterkowania czy opisu gry komputerowej. Samouczki tego typu zazwyczaj są napisane prostym językiem. Autor chcąc wytłumaczyć czytelnikowi, co robić w danej sytuacji dokładnie opisuje każdą czynność, krok po kroku prowadząc do rozwiązania problemu. Każdy skomplikowany proces można przedstawić w postaci ciągu działań elementarnych. Stworzony w ten sposób schemat postępowania nazywamy algorytmem. Każde z działań zawartych w jednym kroku będziemy nazywać operacją elementarną. Może nią być wykonanie określonej czynności (zapal ogień), sprawdzenie jakiegoś warunku (czy woda już wrze), wybór jednej z kilku opcji (na miękko czy na twardo). W wyniku zrealizowania algorytmu pewne dane wejściowe (w naszym przykładzie: surowe jajko) zostają przekształcone na dane wyjściowe (jajko ugotowane). Kiedy stosujemy taką formę instruowania innych osób? Oczywiście wtedy, gdy chcemy coś wytłumaczyć zupełnemu laikowi. Albo jeśli rozmawiamy z obcokrajowcem, a nie znamy zbyt wielu słów w jego języku. Albo gdy nie możemy posługiwać się żadnymi materiałami pomocniczymi, na przykład szkicami. Do tej pory siadałeś przed komputerem jako jego użytkownik; grając, ćwicząc, pisząc listy - korzystałeś z programów. Czas najwyższy, abyś sam zmusił do działania stojący przed tobą, jak to kiedyś określano, elektronowy mózg. Chcąc skorzystać z dowolnego urządzenia, wydajemy mu instrukcje. Twoja lampka nocna rozumie tylko dwie: „włącz się", „wyłącz się" (a tak naprawdę jedną - „zmień stan świecenia"). Wieża stereo rozpoznaje znacznie więcej poleceń - „ustaw głośność", „ustaw barwę dźwięku", „odtwarzaj taśmę", „odtwarzaj kompakt", „ustaw określoną stację radiową". Komputer to oczywiście układ zdecydowanie bardziej skomplikowany od lampki czy radia - rozumie ogromną liczbę poleceń. Można z nich konstruować złożone i różnorodne programy, dzięki czemu ten sam komputer może być zabawką z grami, nauczycielem angielskiego, maszyną do pisania, narzędziem plastyka. Każdy z tych skomplikowanych programów składa się z operacji elementarnych. Ich kolejność, następstwo, powtarzalność określa właśnie algorytm, zaś same programy pisane są w językach programowania zrozumiałych zarówno dla programistów, jak i dla komputera. Tę samą czynność inaczej określa się po polsku, inaczej po niemiecku, chińsku czy w suahili. Poszczególne języki różnią się też składnią, odmianą, zasobem słownictwa. Eskimosi mają kilkadziesiąt słów określających śnieg. Z kolei, kiedy próbowano przetłumaczyć na eskimoski Biblię, okazało się to niemożliwe - w tym języku nie było takich słów jak „pustynia" czy „wielbłąd". Podobnie ma się rzecz z językami programowania. Ten sam algorytm można zapisać na wiele sposobów, używając do tego języków Pascal, C, Basic lub innych. Warto zwrócić uwagę na jeszcze jeden problem. Tak naprawdę, procesor rozumie język maszynowy - polecenia zapisane w postaci binarnej (ciąg zer i jedynek). Tymczasem człowiekowi - programiście i użytkownikowi komputera - znacznie wygodniej posługiwać się językiem programowania możliwie najbardziej podobnym do normalnej mowy - a więc słowami i zdaniami. Każdy język programowania to swoisty kompromis między tymi dwoma wymaganiami. W językach wysokiego poziomu (takich jak Pascal) jednej wpisywanej przez programistę instrukcji odpowiada wiele operacji maszynowych (czyli elementarnych działań procesora). W językach symbolicznych (asemblerowych) - każda instrukcja odpowiada zazwyczaj jednej operacji maszynowej.