Przejdź do zawartości

Program komputerowy

Z Wikipedii, wolnej encyklopedii

Program komputerowy(ang.computer program) – sekwencjasymboliopisująca realizowanieobliczeńzgodnie z pewnymi regułami zwanymijęzykiem programowania[1].Program jest zazwyczaj wykonywany przezkomputer(np. wyświetlenie strony internetowej), zwykle 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ągieminstrukcjiopisują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 jestkodem ź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 jestkodem maszynowymbądź postacią binarną (wykonywalną).

Programy komputerowe można zaklasyfikować według ich zastosowań. Wyróżnia się zatemsystemy operacyjne,programy narzędziowe,programy użytkowe(aplikacje),gry komputerowei inne. Natomiast programy wbudowane w urządzenia, przechowywane zwykle wpamięci flash,określa się jakofirmware.

Terminologia

[edytuj|edytuj kod]

Określenie „program komputerowy” jest często używane zamiennie z określeniami „oprogramowanie”i „aplikacja”.Pierwszy z tych terminów podkreśla rynkowy charakter programów – programy (lub ich zespoły) często w połączeniu zbibliotekami,dodatkowymidanymi,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 przyjaznegointerfejsu 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 wpamięci operacyjnejkomputera i wskazaniu procesorowiadresupierwszej 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 lub próby zmiany programu.

Program komputerowy będący w trakcie wykonania nazywany jestprocesemlubzadaniem.

Specjalnym rodzajem programu komputerowego jestsystem 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 dourzą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ół specjalneoprogramowanie układowewbudowane w architekturę komputera. W komputerach klasyPCoprogramowanie to nosi nazwęBIOSlubUEFIi przygotowuje sprzęt do użycia, a następnie startujeprogram 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 podstawowe rozwiązania. Pierwsze z nich polega na skorzystaniu z pomocy specjalnego programu nazywanegokompilatorem.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 programuinterpretera.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.Prócz tego istnieją jeszcze inne pośrednie rozwiązania jak np. kompilacja dokodu bajtowego,JITalboCIL.

Program a dane

[edytuj|edytuj kod]

Program można podzielić na dwie części (obszary):

  • część zawierająca kod – składająca się zrozkazówsterujących działaniem procesora;
  • część zawierająca dane – składająca się z danych wykorzystywanych i przetwarzanych przez program, np. adresów pamięci, stałych liczbowych, komunikatów tekstowych, danych graficznych itp.

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 operacyjnej jest tylko do odczytu. Programy nie respektujące tego podejścia toprogramy samomodyfikujące się,co jest charakterystyczne np. dlawirusówpolimorficznych.

Programowanie

[edytuj|edytuj kod]

Programowaniejest procesem tworzenia programów (względnie: oprogramowania). Jest to proces cykliczny polegający na realizacji kolejnych etapów:

  1. edycji kodu źródłowego,
  2. uruchamianiu programu,
  3. analizie działania i rejestrowaniu występujących błędów,
  4. powrocie do edycji kodu źródłowego (pkt 1) w celu poprawienia błędów lub dalszego poszerzania funkcjonalności.

Osobę zajmującą się programowaniem nazywa sięprogramistą.Winżynierii oprogramowaniaprogramowanie jest także przedstawiane jako jeden z etapów powstawania i rozwoju oprogramowania.

W dziedzinie programowania wyróżnia się pewne modele działania, takie jakprogramowanie zespołoweczyprogramowanie parami.W dobie spadku cen sprzętu komputerowego, dostępności oprogramowania i literatury programowanie może mieć również charakterhobbystyczny.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,kryptografiai wiele innych.

Zobacz też

[edytuj|edytuj kod]

Przypisy

[edytuj|edytuj kod]
  1. Mordechai Ben-Ari:Understanding Programming Languages.Chichester: John Wiley & Sons, 1996.