Program komputerowy

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj

Program komputerowy (ang. computer program) - sekwencja symboli opisująca obliczenia zgodnie z pewnymi regułami zwanymi językiem programowania[1]. Program jest zazwyczaj wykonywany przez komputer (np. wyświetlenie strony internetowej), czasami bezpośrednio – jeśli wyrażony jest w języku zrozumiałym dla danej maszyny lub pośrednio – gdy jest interpretowany przez inny program (interpreter). Program może być ciągiem instrukcji opisujących modyfikacje stanu maszyny ale może również opisywać obliczenia w inny 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, podczas gdy program wyrażony w postaci zrozumiałej dla maszyny (to jest za pomocą ciągu liczb, a bardziej precyzyjnie zer i jedynek) nazywany jest kodem maszynowym bądź postacią binarną (wykonywalną).

Programy komputerowe można zaklasyfikować według ich zastosowań. Wyróżnia się zatem aplikacje użytkowe, systemy operacyjne, gry wideo, kompilatory i inne. Programy wbudowane wewnątrz urządzeń określa się jako firmware.

Terminologia[edytuj | edytuj kod]

Określenie "program komputerowy" jest często używane zamiennie z określeniami "oprogramowanie" (ang. software) i "aplikacja".

Pierwszy z tych terminów podkreśla rynkowy charakter programów - programy (lub ich zespoły) często w połączeniu z bibliotekami, dodatkowymi danymi, wyróżniającą się nazwą i wsparciem producenta (dostawcy) stanowią produkt handlowy.

Poprzez aplikację natomiast często 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[edytuj | edytuj kod]

W najprostszym modelu wykonanie programu (zapisanego w postaci zrozumiałej dla maszyny) polega na umieszczeniu go w pamięci operacyjnej komputera i 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 i 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 lub zadaniem.

Specjalnym rodzajem programu komputerowego jest system operacyjny (występujący często jako zbiór programów). Odpowiada on za opisaną wyżej czynność ładowania i uruchamiania programu. System operacyjny jest jedynym 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 według 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 i uruchamia program rozruchowy, który ładuje do pamięci system operacyjny i 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 może być bezpośrednio wykonany przez procesor. W takim wypadku możliwe są dwa rozwiązania. Pierwsze z nich korzysta 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 i wykonuje kolejne porcje przetłumaczonego kodu. Programy przeznaczone do interpretacji często nazywane są skryptami.

Program a dane[edytuj | edytuj kod]

Program można 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 i opracowywanych przez program, np. adresów pamięci, stałych liczbowych, komunikatów tekstowych).

O ile operowanie na danych przez program jest zupełnie normalne i 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[edytuj | edytuj kod]

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 lub 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 i 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 i literatury programowanie może mieć również 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 i wiele innych.

Zobacz też[edytuj | edytuj kod]

Przypisy

  1. Mordechai Ben-Ari: Understanding Programming Languages. Chichester: John Wiley & Sons, 1996.