Paradygmat programowania (ang. programming paradigm) — wzorzec programowania komputerów przedkładany w danym okresie rozwoju informatyki ponad inne lub ceniony w pewnych okolicznościach lub zastosowaniach.
Paradygmat programowania definiuje sposób patrzenia programisty na przepływ sterowania i wykonywanie programu komputerowego. Przykładowo, w programowaniu obiektowym jest on traktowany jako zbiór współpracujących ze sobą obiektów, podczas gdy w programowaniu funkcyjnym definiujemy, co trzeba wykonać, a nie w jaki sposób.
Różne języki programowania mogą wspierać różne paradygmaty programowania. Przykładowo, Smalltalk i Java są zaprojektowane dla potrzeb programowania obiektowego, natomiast Haskell jest językiem funkcyjnym. Istnieją także języki wspierające kilka paradygmatów, np. Common Lisp oraz Python.
Paradygmaty mogą być znane z tego, jakie praktyki są w nich zakazane, a jakie dozwolone. Ścisłe programowanie funkcyjne nie pozwala na tworzenie skutków ubocznych. W programowaniu strukturalnym nie korzysta się z instrukcji skoku (goto). Częściowo z tego właśnie powodu nowe paradygmaty są uważane za zbyt ścisłe przez osoby przyzwyczajone do wcześniejszych stylów. Jednakże omijanie pewnych technik ułatwia przeprowadzanie dowodów o poprawności programu, albo po prostu zrozumienia jego działania, bez ograniczania samego języka programowania.
Zależności między paradygmatami programowania mogą przybierać skomplikowane formy, ponieważ jeden język może wspierać wiele różnych paradygmatów. Na przykład, C++ posiada elementy programowania proceduralnego, obiektowego oraz uogólnionego, co stanowi o nim, że jest hybrydowym językiem. To projektanci i programiści decydują, jak zbudować z nich wszystkich w pełni działający program. Niektórzy decydują się na ścisłe programowanie proceduralne, natomiast inni łączą ze sobą elementy wielu paradygmatów w zależności od potrzeb.
Przykłady
[edytuj | edytuj kod]- Programowanie proceduralne
- programowanie strukturalne
- programowanie funkcyjne
- programowanie imperatywne
- programowanie obiektowe
- programowanie wizualne
- programowanie uogólnione
- programowanie sterowane zdarzeniami
- programowanie logiczne (np. Prolog)
- programowanie aspektowe (np. AspectJ)
- programowanie deklaratywne
- programowanie agentowe
- programowanie modularne
- programowanie reaktywne
- programowanie sterowane danymi
- programowanie agentowe
- programowanie współbieżne