Programowanie wieloparadygmatowe

Programowanie wieloparadygmatoweparadygmat programowania, a w szczególności tworzenia języków programowania, który mówi, że każdy paradygmat nadaje się do ograniczonego zbioru zadań; lepiej jest więc przyzwoicie zaimplementować kilka różnych paradygmatów i dowolnie je mieszać w użyciu, niż zaimplementować tylko jeden (choć lepiej niż robiłby to język wieloparadygmatowy), i próbować go narzucać.

Klasycznym przykładem jest Perl, w którym obowiązuje zasada TMTOWTDI – „There’s More Than One Way To Do It” (Na wszystko jest więcej niż jeden sposób).[1] Perl pozwala na programowanie niskopoziomowe (bezpośrednie wywołanie funkcji systemu operacyjnego, operacje na bitach za pomocą pack), zorientowane tekstowo, relacyjnie, sieciowo, obiektowo czy też zdarzeniowo, ma cechy imperatywne, funkcjonalne i strukturalne. Właściwie dla każdego z tych paradygmatów można znaleźć język, który robi daną rzecz lepiej, ale nie taki który robi lepiej to wszystko.

Innym przykładem jest Ocaml, który od początku był stworzony jako połączenie paradygmatów funkcjonalnego, imperatywnego i obiektowego, ma też mocne biblioteki udostępniające funkcjonalność niskopoziomową, tekstową, sieciową czy relacyjną (choć w mniejszym stopniu niż Perl).

Podstawową zaletę, jaką jest duża swoboda w tworzeniu programów w językach tego typu, niweluje spadek czytelności kodu programu wraz ze wzrostem jego objętości, zwłaszcza dla osób trzecich; jeżeli bowiem na wszystko jest więcej niż jeden sposób, to osoba postronna czytająca kod musi znać dokładnie ten, który został w programie użyty. Jest to mało prawdopodobne, jeśli sposobów jest np. kilkadziesiąt.

Jedyny sposób na uniknięcie tego efektu to stosowanie dużej ilości komentarzy (w tym celu np. w Perlu wprowadzono nawet możliwość wprowadzania komentarzy wewnątrz wyrażeń regularnych).