OOP jest prawdopodobnie najczęściej używanym paradygmatem programowania w dzisiejszym projektowaniu oprogramowania. Moje pytanie brzmi - jakie inne paradygmaty mogą z nim konkurować i mogą zająć miejsce OOP ? Aby wyjaśnić to pytanie, nie pytam o inne paradygmaty. Jest ich wiele, ale chciałbym wiedzieć, który…
- Został wykorzystany w praktyce, nie tylko w teorii.
- Może konkurować z OOP , więc może być używany w dużym projekcie przy minimalnym bólu.
- Może być używany do tworzenia aplikacji klasycznej z logiką biznesową, bazami danych i tak dalej.
- Nie jest używany razem z OOP, ale jako zamiennik dla OOP.
A jeśli są jakieś wady / zalety, dlaczego jest lepszy / gorszy od OOP, jakie języki są najlepsze w użyciu, co z używaniem w popularnych językach, czy ma jakieś wzorce projektowe i czy może całkowicie wymienić OOP?
language-agnostic
oop
programming-languages
paradigms
Dariusz Woźniak
źródło
źródło
Odpowiedzi:
Programowanie funkcjonalne to kolejny paradygmat programowania, który jest popularny, głównie w środowisku akademickim. Najlepszym przykładem funkcjonalnego języka programowania jest Haskell i Standard ML .
Podstawowa różnica między programowaniem funkcjonalnym a programowaniem obiektowym polega na tym, że programujesz w sensie przepływu danych, a nie przepływu sterowania . Zobacz prezentację Oswajanie efektów za pomocą programowania funkcjonalnego autorstwa Simona Peyton-Jonesa, która zawiera dobre wprowadzenie.
Dobrym przykładem programowania funkcjonalnego stosowanego w przemyśle jest Erlang . Jest stosowany głównie w systemach telekomunikacyjnych, rozproszonych i odpornych na uszkodzenia. Zobacz prezentację Erlang - oprogramowanie dla współbieżnego świata autorstwa Joe Armstronga .
Istnieją również nowsze języki programowania funkcyjnego, które łączą programowanie funkcjonalne z OOP. Dwa dobre przykłady to F # dla platformy .NET i Scala dla platformy Java; często mogą korzystać z istniejących na platformie bibliotek napisanych w innych językach.
Trendem nowych języków programowania jest teraz Multi-paradygmat , w którym wiele paradygmatów, takich jak programowanie obiektowe i programowanie funkcyjne, jest połączonych w tym samym języku.
źródło
Przetwarzanie proceduralne było wszystkim, zanim pojawiło się OOP, stworzyło kilka dużych aplikacji w świecie rzeczywistym (w rzeczywistości większość z nich pierwotnie) i wiele systemów operacyjnych.
Z pewnością można go stosować w produktach na dużą skalę przy minimalnym bólu i maksymalnej wydajności
źródło
Modelowanie relacyjnych danych wektorowych jest wykorzystywane do tworzenia wykonywalnych modeli informacji z semantyką odpowiednią dla domeny w ramach architektury globalnej sieci informacyjnej, brokera modeli rezydujących w sieci.
źródło
Przede wszystkim należy zauważyć, że wiele obecnie używanych języków programowania (zwłaszcza „języki wyższego poziomu”) to języki wieloparadygmatyczne . Oznacza to, że nigdy nie tworzysz programów, które są wyłącznie OOP (chyba że używasz Smalltalk lub Eiffel, być może do tworzenia dużych projektów).
Spójrz na przykład na PHP :
Zasadniczo PHP skleja ze sobą wiele różnych paradygmatów (i sam jest „językiem klejenia”).
Również Java implementuje wiele koncepcji, które nie pochodzą z paradygmatu zorientowanego obiektowo (np. Z programowania funkcjonalnego).
Spójrz na listę języków programowania według typu w Wikipedii: https://en.wikipedia.org/wiki/List_of_programming_languages_by_type#Imperative_languages (nie w 100% dokładne).
Programowanie funkcjonalne (podzbiór programowania dekleratywnego)
Programowanie proceduralne
Programowanie logiczne
Ogólnie języki deklaratywne / specyficzne dla domeny
Ogólnie programowanie imperatywne
Ta lista nie jest kompletna, wystarczy, że da pomysł. Zwróć uwagę, że podczas pisania dużej aplikacji zwykle używasz wielu różnych paradygmatów, a nawet każdy używany język implementuje wiele paradygmatów.
OOP jest zwykle uważane za dobry wybór do tworzenia struktury dużych, złożonych relacji podczas modelowania danych. Nie zawsze jest to paradygmat dla wielu innych zadań.
źródło
FP - Programowanie funkcjonalne to niezwykle popularny paradygmat programowania, który istnieje od bardzo dawna, aw ostatnich latach zaczął zyskiwać na znaczeniu. FP faworyzuje niezmienność nad zmiennością, rekurencją i funkcjami bez skutków ubocznych. Niektóre przykłady popularnych języków FP to między innymi Erlang, Scala, F #, Haskell i Lisp.
źródło
Obecnie nie ma paradygmatów, które mogłyby rzeczywiście zastąpić OOP. Problem z (korzyścią) OOP polega na tym, że wykonuje on ogromną pracę za Ciebie - automatyczne zwalnianie zasobów, walidację danych itp. Oraz ułatwia walidację kodu - nie wspominając o tym, że ogromna większość istniejących bibliotek na świecie są napisane w języku OOP, takim jak C ++, C # lub Java. Rzeczywistość radzenia sobie bez tak dużych bibliotek i takich jest wysoce wątpliwa.
W światach niszowych lub akademickich znajdziesz wiele funkcji programowania. Jeśli jednak naprawdę chcesz zrobić duży projekt, jedyną drogą jest OOP.
Myślę, że programowanie ogólne pojawi się jako nowy paradygmat. Jednak wciąż jest w fazie rozwoju i tylko C ++ / D oferuje naprawdę dobre programowanie ogólne.
źródło