Technologia

Jakie są różnice pomiędzy programowaniem imperatywnym a deklaratywnym?

3 min czytania
Jakie są różnice pomiędzy programowaniem imperatywnym a deklaratywnym?

Początkujących programistów czasem zaskakuje to, jak zróżnicowanym „narzędziami” posługują się poszczególne języki programowania. Jedna z najważniejszych różnic polega na tym, czy dany język oparty jest na podejściu imperatywnym, czy deklaratywnym — a może korzysta z obu? W dzisiejszym tekście spróbujemy przybliżyć obydwa paradygmaty — zapraszamy do lektury!

Czym są paradygmaty programowania?

Zacznijmy od początku — czyli od tego, czym są wspomniane paradygmaty.

W skrócie, są to podejścia do rozwiązywania problemów programistycznych, wyróżniające się specyficzną strukturą, zaleceniami i możliwościami. Niektóre języki opracowane zostały specjalnie z myślą o danym paradygmacie, inne — posługują się nimi bardzo swobodnie, łącząc ich cechy. Tak naprawdę większość popularnych obecnie języków (np. Python, Ruby czy JavaScript) stanowi połączenie różnych paradygmatów.

Tytułowe programowanie imperatywne oraz deklaratywne są dwoma przeciwstawnymi do siebie paradygmatami — określającymi, jaki charakter mają „instrukcje” wydawane komputerowi przez program.

Programowanie imperatywne — na czym polega?

W podejściu imperatywnym każdy program stanowi po prostu ciąg instrukcji, prowadzących komputer krok po kroku przez kolejne czynności na drodze do osiągnięcia zamierzonego przez programistę celu. Opisujemy więc nie to, co chcemy zrobić, a w jaki sposób chcemy to zrobić — przy pomocy instrukcji wyboru, klauzul if i pętli. 

Jakie są różnice pomiędzy programowaniem imperatywnym a deklaratywnym?

Zdj 1. Tak mógłby wyglądać prosty skrypt imperatywny na sumę zbioru liczb w Pythonie.

Źródło: Declarative vs imperative programming: 5 key differences — educative.io

Chyba każdy, kto uczył się programowania, zaczynał właśnie od podejścia imperatywnego. Z jednej strony jest ono bardzo intuicyjne dla początkującego — z drugiej, oddaje w ręce programisty pełną kontrolę nad procesami wykonywanymi przez program. Wymaga przy tym, oczywiście, nieco więcej pracy (i sporej dokładności, jeśli chcemy uniknąć błędów).

Zobacz  Reklama lombardu w Internecie – poradnik

Na paradygmacie imperatywnym oparte są praktycznie wszystkie najpopularniejsze języki: od JavaScriptu i Pythona po PHP, Javę oraz C++. 

A co wyróżnia programowanie deklaratywne?

Podejście deklaratywne skoncentrowane jest na celu, a nie — jak w przypadku paradygmatu imperatywnego — na procesie. Programista „deklaruje”, co program ma osiągnąć — jakie warunki ma spełnić końcowe rozwiązanie procesu — bez wskazywania, w jaki sposób powinien to zrobić.

Kod w paradygmacie deklaratywnym jest więc bardziej abstrakcyjny — ale też podobny do sposobu, w jaki komunikujemy się między sobą na co dzień. Gdy prosimy baristę o kawę, nie musimy mu wyjaśniać, jak — krok po kroku — powinien ją przygotować. Wystarczy, że wybierzemy rodzaj kawy… i ewentualnie dodamy, z jakim mlekiem chcemy ją wypić. Programowanie deklaratywne działa podobnie.

Jakie są różnice pomiędzy programowaniem imperatywnym a deklaratywnym?

Zdj 2. A tak wygląda ten sam skrypt na sumę według paradygmatu deklaratywnego.

Źródło: Declarative vs imperative programming: 5 key differences — educative.io

Co za tym idzie — struktura kodu deklaratywnego jest zwięzła — i bardzo czytelna. A przynajmniej dla kogoś, kto dobrze zna mechanizmy i składnię danego języka; w przeciwnym razie kod rzeczywiście może być abstrakcyjny.

Z zasad programowania deklaratywnego korzysta m.in. język SQL, służący do tworzenia i modyfikowania baz danych. Dobrymi przykładami mogą być też HTML oraz CSS — które co prawda nie są de facto językami programowania, ale ich struktura również jest oparta na deklaracjach, a nie na instrukcjach.

Zobacz  Internal Server Error – co oznacza i z czego wynika?

Jednak elementy deklaratywne znajdziemy także w językach typowo imperatywnych. Mamy więc Pythona, Ruby oraz Javę, które korzystają z niektórych struktur programowania funkcyjnego (odmiana programowania deklaratywnego). Na tym paradygmacie oparto też bardzo popularne biblioteki JavaScript — React oraz Angular. 

Programowanie imperatywne a deklaratywne — podsumowanie

Jeśli mielibyśmy krótko podsumować różnicę między programowaniem deklaratywnym a imperatywnym, powiedzielibyśmy, że:

  • paradygmat imperatywny daje pełną kontrolę nad procesami, przez jakie przechodzi program; posługiwanie się nim oznacza jednak dłuższy, bardziej złożony i trudniejszy w utrzymaniu kod;
  • paradygmat deklaratywny znacząco upraszcza kod, ułatwiając utrzymanie złożonych programów; nie radzi sobie jednak z niektórymi problemami, zwłaszcza tymi wymagającymi „zagłębienia się” w logikę całego systemu.

Na szczęście, oba podejścia można w wielu językach połączyć — i dopasować do danego problemu.

Zawodowy copywriter oraz student psychologii na Uniwersytecie Warszawskim. W świecie marketingu internetowego równie mocno, co chwytliwe (i wartościowe) treści interesuje go dobry design. Gdy nie zajmuje się tworzeniem contentu, odkrywa perełki kina niezależnego i pracuje nad własnymi opowiadaniami.

Udostępnij

Oceń tekst

Średnia ocen 0 / 5. Liczba głosów: 0

Brak głosów - oceń jako pierwszy!

Zapytaj o ofertę SEO
Dołącz do newslettera
Powiązane artykuły Najnowsze Popularne

Zbuduj Twój potencjał SEO

Skonsultuj z nami Twoją sytuację w wyszukiwarce. Porozmawiajmy o Twoich celach i możliwościach współpracy