Program komputerowy (ang. computer program) - sekwencja symboli opisująca obliczenia zgodnie z pewnymi regułami zwanymi językiem programowania[1]. Program jest zwykle wykonywany przez komputer (np. wyświetlenie strony internetowej), czasami bezpośrednio – jeśli wyrażony jest w języku zrozumiałym dla danej maszyny albo pośrednio – kiedy jest interpretowany przez odmienny program (interpreter). Program bywa ciągiem instrukcji opisujących modyfikacje stanu maszyny ale może także opisywać obliczenia w odmienny sposób (np. rachunek lambda).
Formalne wyrażenie metody obliczeniowej w postaci języka zrozumiałego dla człowieka nazywane jest kodem źródłowym, z tym że program wyrażony w postaci zrozumiałej dla maszyny (to jest za pomocą ciągu liczb, a bardziej precyzyjnie zer oraz jedynek) nazywany jest kodem maszynowym bądź postacią binarną (wykonywalną).
Programy komputerowe da się zaklasyfikować wedle ich zastosowań. Wyróżnia się zatem aplikacje użytkowe, systemy operacyjne, gry wideo, kompilatory oraz inne. Programy wbudowane wewnątrz urządzeń wyznacza się jako firmware.
Terminologia
Określenie "program komputerowy" jest wielokrotnie używane zamiennie z określeniami "oprogramowanie" (ang. software) oraz "aplikacja".
Pierwszy z tych terminów podkreśla rynkowy charakter programów - programy (lub ich zespoły) wielokrotnie w połączeniu z bibliotekami, dodatkowymi danymi, wyróżniającą się nazwą oraz wsparciem producenta (dostawcy) stanowią produkt handlowy.
Poprzez aplikację natomiast wielokrotnie rozumie się oprogramowanie bliskie użytkownikowi, to znaczy takie, z którym komunikuje się (często za pośrednictwem przyjaznego interfejsu użytkownika) by wykonać określone zadania (np. zredagować dokument).
Uruchomienie programu
W najprostszym modelu wykonanie programu (zapisanego w postaci zrozumiałej dla maszyny) opiera się na umieszczeniu go w pamięci operacyjnej komputera oraz wskazaniu procesorowi adresu pierwszej instrukcji. Po tych czynnościach procesor będzie wykonywał kolejne instrukcje programu, aż do jego zakończenia. Program może zakończyć się w dwojaki sposób:
- poprawnie (zgodnie z życzeniem twórcy programu oraz jego użytkownika);
- błędnie (z powodu awarii sprzętu bądź wykonania przez program niedozwolonej operacji, np. dzielenia przez zero).
Program komputerowy będący w trakcie wykonania nazywany jest procesem albo zadaniem.
Specjalnym rodzajem programu komputerowego jest system operacyjny (występujący wielokrotnie jako zbiór programów). Odpowiada on za opisaną wyżej czynność ładowania oraz uruchamiania programu. System operacyjny jest wyłącznym programem sprawującym kontrolę nad sprzętem. Zarządza on zasobami systemu komputerowego (takimi jak pamięć, czas procesora, dostęp do urządzeń peryferyjnych) przydzielając je wedle określonych kryteriów uruchamianym programom.
Aby jakikolwiek program mógł zostać uruchomiony, sprzęt musi zostać do tego przygotowany. Odpowiedzialne jest za to na ogół specjalne oprogramowanie typu firmware wbudowane w architekturę komputera. W komputerach klasy PC oprogramowanie to nazywa się BIOSem. Program ten przygotowuje sprzęt do użycia oraz uruchamia program rozruchowy, który ładuje do pamięci system operacyjny oraz uruchamia go, tym samym przekazując mu kontrolę nad komputerem.
Jeżeli program nie jest zapisany w postaci binarnej, ale w postaci kodu źródłowego czytelnego dla człowieka, nie bywa bezpośrednio wykonany przez procesor. W takim wypadku możliwe są dwa rozwiązania. Pierwsze z nich wykorzystuje z pomocy specjalnego programu nazywanego kompilatorem. Kompilator tłumaczy kod źródłowy zapisany w danym języku programowania na kod maszynowy, dzięki czemu możliwe staje się jego późniejsze uruchomienie.
Drugim rozwiązaniem jest skorzystanie z programu interpretera. Interpreter na bieżąco odczytuje kod źródłowy, analizuje go oraz wykonuje kolejne porcje przetłumaczonego kodu. Programy przeznaczone do interpretacji wielokrotnie nazywane są skryptami.
Program a dane
Program da się podzielić na dwie części (obszary):
- część kodu (składającą się z instrukcji sterujących działaniem procesora);
- część danych (składającą się z danych wykorzystywanych oraz opracowywanych przez program, np. adresów pamięci, stałych liczbowych, komunikatów tekstowych).
O ile operowanie na danych przez program jest całkowicie normalne oraz oczekiwane, o tyle operowanie programu na własnym kodzie nie jest typową praktyką. Przewidywanie zachowań programów, które modyfikują własny kod w czasie działania, jest bardzo trudne. Dlatego na ogół przyjmuje się założenie (lub wręcz jest to wymuszane przez system wykonawczy), że obszar kodu programu w pamięci jest tylko do odczytu. Programy nie respektujące tego podejścia to programy samomodyfikujące się.
Programowanie
Programowanie jest procesem tworzenia programów (względnie: oprogramowania). Jest to cykliczny proces polegający na:
- edycji kodu źródłowego,
- uruchamianiu programu,
- analizie działania,
- powrocie do edycji kodu źródłowego w celu poprawienia błędów albo dalszego poszerzania funkcjonalności.
Osobę zajmującą się programowaniem nazywa się programistą. W inżynierii oprogramowania programowanie jest także przedstawiane jako jeden z etapów powstawania oraz rozwoju oprogramowania.
W dziedzinie programowania wyróżnia się pewne modele działania takie, jak programowanie zespołowe czy programowanie parami. W dobie spadku cen sprzętu komputerowego, dostępności oprogramowania oraz literatury programowanie może posiadać także charakter hobbystyczny.
W ciągu lat programowanie stało się rozległą dziedziną o silnych podstawach teoretycznych. Związane są z nim pojęcia takie jak: algorytm, struktury danych, metody numeryczne, programowanie obiektowe, kryptografia oraz wiele innych.
Sprawdź też
Przypisy
- ↑ Mordechai Ben-Ari: Understanding Programming Languages. Chichester: John Wiley & Sons, 1996.